1/* 2 * Copyright (C) 2008 Google (Lei Zhang) 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19import "oaidl.idl"; 20import "ocidl.idl"; 21/* import "dxtrans.idl"; */ 22import "amstream.idl"; 23import "msxml.idl"; 24 25[ 26 object, 27 uuid(0579154A-2B53-4994-B0D0-E773148EFF85), 28 local, 29 pointer_default(unique) 30] 31interface ISampleGrabberCB : IUnknown 32{ 33 HRESULT SampleCB( 34 double SampleTime, 35 IMediaSample * pSample 36 ); 37 HRESULT BufferCB( 38 double SampleTime, 39 BYTE * pBuffer, 40 LONG BufferLen 41 ); 42} 43 44[ 45 object, 46 uuid(6B652FFF-11FE-4fce-92AD-0266B5D7C78F), 47 local, 48 pointer_default(unique) 49] 50interface ISampleGrabber: IUnknown 51{ 52 HRESULT SetOneShot( 53 BOOL OneShot 54 ); 55 56 HRESULT SetMediaType( 57 const AM_MEDIA_TYPE * pType 58 ); 59 60 HRESULT GetConnectedMediaType( 61 AM_MEDIA_TYPE * pType 62 ); 63 64 HRESULT SetBufferSamples( 65 BOOL BufferThem 66 ); 67 68 HRESULT GetCurrentBuffer( 69 [in,out] LONG * pBufferSize, 70 [out] LONG * pBuffer 71 ); 72 73 HRESULT GetCurrentSample( 74 [out] IMediaSample ** ppSample 75 ); 76 77 HRESULT SetCallback( 78 ISampleGrabberCB * pCallback, 79 LONG WhichMethodToCallback 80 ); 81}; 82 83[ 84 object, 85 uuid(65bd0710-24d2-4FF7-9324-ed2e5d3abafa), 86 pointer_default(unique) 87] 88interface IMediaDet : IUnknown 89{ 90 HRESULT get_Filter( 91 [out] IUnknown* *pVal 92 ); 93 94 HRESULT put_Filter( 95 IUnknown* newVal 96 ); 97 98 HRESULT get_OutputStreams( 99 [out] LONG *pVal 100 ); 101 102 HRESULT get_CurrentStream( 103 [out] LONG *pVal 104 ); 105 106 HRESULT put_CurrentStream( 107 LONG newVal 108 ); 109 110 HRESULT get_StreamType( 111 [out] GUID *pVal 112 ); 113 114 HRESULT get_StreamTypeB( 115 [out] BSTR *pVal 116 ); 117 118 HRESULT get_StreamLength( 119 [out] double *pVal 120 ); 121 122 HRESULT get_Filename( 123 [out] BSTR *pVal 124 ); 125 126 HRESULT put_Filename( 127 BSTR newVal 128 ); 129 130 HRESULT GetBitmapBits( 131 double StreamTime, 132 LONG * pBufferSize, 133 char * pBuffer, 134 LONG Width, 135 LONG Height 136 ); 137 138 HRESULT WriteBitmapBits( 139 double StreamTime, 140 LONG Width, 141 LONG Height, 142 BSTR Filename 143 ); 144 145 HRESULT get_StreamMediaType( 146 [out] AM_MEDIA_TYPE * pVal 147 ); 148 149 HRESULT GetSampleGrabber( 150 [out] ISampleGrabber ** ppVal 151 ); 152 153 HRESULT get_FrameRate( 154 [out] double *pVal 155 ); 156 157 HRESULT EnterBitmapGrabMode( 158 double SeekTime 159 ); 160}; 161 162[ 163 uuid(65BD0711-24D2-4ff7-9324-ED2E5D3ABAFA), 164] 165coclass MediaDet 166{ 167 [default] interface IMediaDet; 168}; 169 170enum 171{ 172 E_NOTINTREE = 0x80040400, 173 E_RENDER_ENGINE_IS_BROKEN = 0x80040401, 174 E_MUST_INIT_RENDERER = 0x80040402, 175 E_NOTDETERMINED = 0x80040403, 176 E_NO_TIMELINE = 0x80040404, 177 S_WARN_OUTPUTRESET = 40404 178}; 179