1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski extern "C" const CLSID CLSID_MediaDet; 25*b1cdbd2cSJim Jagielski extern "C" const IID IID_IMediaDet; 26*b1cdbd2cSJim Jagielski struct ISampleGrabber; 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski struct 29*b1cdbd2cSJim Jagielski #ifndef __MINGW32__ 30*b1cdbd2cSJim Jagielski __declspec(uuid("65BD0710-24D2-4ff7-9324-ED2E5D3ABAFA")) __declspec(novtable) 31*b1cdbd2cSJim Jagielski #endif 32*b1cdbd2cSJim Jagielski IMediaDet : public IUnknown 33*b1cdbd2cSJim Jagielski { 34*b1cdbd2cSJim Jagielski public: 35*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall get_Filter( 36*b1cdbd2cSJim Jagielski IUnknown **pVal) = 0; 37*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall put_Filter( 38*b1cdbd2cSJim Jagielski IUnknown *newVal) = 0; 39*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall get_OutputStreams( 40*b1cdbd2cSJim Jagielski long *pVal) = 0; 41*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall get_CurrentStream( 42*b1cdbd2cSJim Jagielski long *pVal) = 0; 43*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall put_CurrentStream( 44*b1cdbd2cSJim Jagielski long newVal) = 0; 45*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall get_StreamType( 46*b1cdbd2cSJim Jagielski GUID *pVal) = 0; 47*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall get_StreamTypeB( 48*b1cdbd2cSJim Jagielski BSTR *pVal) = 0; 49*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall get_StreamLength( 50*b1cdbd2cSJim Jagielski double *pVal) = 0; 51*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall get_Filename( 52*b1cdbd2cSJim Jagielski BSTR *pVal) = 0; 53*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall put_Filename( 54*b1cdbd2cSJim Jagielski BSTR newVal) = 0; 55*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall GetBitmapBits( 56*b1cdbd2cSJim Jagielski double StreamTime, 57*b1cdbd2cSJim Jagielski long *pBufferSize, 58*b1cdbd2cSJim Jagielski char *pBuffer, 59*b1cdbd2cSJim Jagielski long Width, 60*b1cdbd2cSJim Jagielski long Height) = 0; 61*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall WriteBitmapBits( 62*b1cdbd2cSJim Jagielski double StreamTime, 63*b1cdbd2cSJim Jagielski long Width, 64*b1cdbd2cSJim Jagielski long Height, 65*b1cdbd2cSJim Jagielski BSTR Filename) = 0; 66*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall get_StreamMediaType( 67*b1cdbd2cSJim Jagielski AM_MEDIA_TYPE *pVal) = 0; 68*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall GetSampleGrabber( 69*b1cdbd2cSJim Jagielski ISampleGrabber **ppVal) = 0; 70*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall get_FrameRate( 71*b1cdbd2cSJim Jagielski double *pVal) = 0; 72*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall EnterBitmapGrabMode( 73*b1cdbd2cSJim Jagielski double SeekTime) = 0; 74*b1cdbd2cSJim Jagielski }; 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski extern "C" const IID IID_ISampleGrabberCB; 77*b1cdbd2cSJim Jagielski struct 78*b1cdbd2cSJim Jagielski #ifndef __MINGW32__ 79*b1cdbd2cSJim Jagielski __declspec(uuid("0579154A-2B53-4994-B0D0-E773148EFF85")) __declspec(novtable) 80*b1cdbd2cSJim Jagielski #endif 81*b1cdbd2cSJim Jagielski ISampleGrabberCB : public IUnknown 82*b1cdbd2cSJim Jagielski { 83*b1cdbd2cSJim Jagielski public: 84*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall SampleCB( 85*b1cdbd2cSJim Jagielski double SampleTime, 86*b1cdbd2cSJim Jagielski IMediaSample *pSample) = 0; 87*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall BufferCB( 88*b1cdbd2cSJim Jagielski double SampleTime, 89*b1cdbd2cSJim Jagielski BYTE *pBuffer, 90*b1cdbd2cSJim Jagielski long BufferLen) = 0; 91*b1cdbd2cSJim Jagielski }; 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski extern "C" const IID IID_ISampleGrabber; 94*b1cdbd2cSJim Jagielski struct 95*b1cdbd2cSJim Jagielski #ifndef __MINGW32__ 96*b1cdbd2cSJim Jagielski __declspec(uuid("6B652FFF-11FE-4fce-92AD-0266B5D7C78F")) __declspec(novtable) 97*b1cdbd2cSJim Jagielski #endif 98*b1cdbd2cSJim Jagielski ISampleGrabber : public IUnknown 99*b1cdbd2cSJim Jagielski { 100*b1cdbd2cSJim Jagielski public: 101*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall SetOneShot( 102*b1cdbd2cSJim Jagielski BOOL OneShot) = 0; 103*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall SetMediaType( 104*b1cdbd2cSJim Jagielski const AM_MEDIA_TYPE *pType) = 0; 105*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall GetConnectedMediaType( 106*b1cdbd2cSJim Jagielski AM_MEDIA_TYPE *pType) = 0; 107*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall SetBufferSamples( 108*b1cdbd2cSJim Jagielski BOOL BufferThem) = 0; 109*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall GetCurrentBuffer( 110*b1cdbd2cSJim Jagielski long *pBufferSize, 111*b1cdbd2cSJim Jagielski long *pBuffer) = 0; 112*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall GetCurrentSample( 113*b1cdbd2cSJim Jagielski IMediaSample **ppSample) = 0; 114*b1cdbd2cSJim Jagielski virtual HRESULT __stdcall SetCallback( 115*b1cdbd2cSJim Jagielski ISampleGrabberCB *pCallback, 116*b1cdbd2cSJim Jagielski long WhichMethodToCallback) = 0; 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski }; 119*b1cdbd2cSJim Jagielski 120