// DIBSTRMS.IDL // Multi media streaming interface extensions for DIB types import "mmstream.idl"; cpp_quote("#if 0") typedef struct tagBITMAPINFOHEADER{ DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } BITMAPINFOHEADER; typedef BITMAPINFOHEADER *LPBITMAPINFOHEADER; cpp_quote("#endif") [ object, local, uuid(F12780AF-5C60-11d1-BC46-00AA00A13C86), pointer_default(unique) ] interface IDIBMediaStream : IMediaStream { HRESULT GetDIBFormatSize([out] DWORD *pdwSize); HRESULT GetDIBFormat([in, out] LPBITMAPINFOHEADER pbih); HRESULT SetDIBFormat([in] LPBITMAPINFOHEADER pbih); }; [ object, local, uuid(F12780AE-5C60-11d1-BC46-00AA00A13C86), pointer_default(unique) ] interface IDIBStreamSample : IStreamSample { [helpstring("method LockSample")] HRESULT LockSample([out] BYTE **ppbits); [helpstring("method UnlockSample")] HRESULT UnlockSample(void); }; [ object, local, uuid(9777AD62-7575-11d1-BC47-00AA00A13C86), pointer_default(unique) ] interface IDIBProducer : IUnknown { HRESULT AllocBuffer([out] HANDLE *phBuffer); HRESULT FreeBuffer([in] HANDLE hBuffer); HRESULT GetBufferSize([out] DWORD *pdwSize); HRESULT LockBuffer([in] HANDLE hBuffer, [out] LPVOID *ppbits); HRESULT UnlockBuffer([in] HANDLE hBuffer); HRESULT Update( [in] HANDLE hBuffer, [in] DWORD dwFlags, [in] [optional] HANDLE hEvent, [in] [optional] PAPCFUNC pfnAPC, [in] [optional] DWORD dwAPCData); HRESULT CompletionStatus( [in] DWORD dwFlags, [in] [optional] DWORD dwMilliseconds); };