Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenaxcore.idl
Go to the documentation of this file.
00001 /* 00002 * Copyright (C) 2002 Robert Shearman 00003 * 00004 * This library is free software; you can redistribute it and/or 00005 * modify it under the terms of the GNU Lesser General Public 00006 * License as published by the Free Software Foundation; either 00007 * version 2.1 of the License, or (at your option) any later version. 00008 * 00009 * This library is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 * Lesser General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU Lesser General Public 00015 * License along with this library; if not, write to the Free Software 00016 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 00017 */ 00018 00019 #define CHARS_IN_GUID 39 00020 cpp_quote("#define CHARS_IN_GUID 39") 00021 00022 /* GetTimeFormat is defined in winnls.h as 00023 * either the W or A suffixed version */ 00024 cpp_quote("#undef GetTimeFormat") 00025 00026 typedef struct _AMMediaType 00027 { 00028 GUID majortype; 00029 GUID subtype; 00030 BOOL bFixedSizeSamples; 00031 BOOL bTemporalCompression; 00032 ULONG lSampleSize; 00033 GUID formattype; 00034 IUnknown * pUnk; 00035 ULONG cbFormat; 00036 [size_is(cbFormat)] BYTE * pbFormat; 00037 } AM_MEDIA_TYPE; 00038 00039 typedef enum _PinDirection 00040 { 00041 PINDIR_INPUT, 00042 PINDIR_OUTPUT 00043 } PIN_DIRECTION; 00044 00045 #define MAX_PIN_NAME 128 00046 #define MAX_FILTER_NAME 128 00047 cpp_quote("#define MAX_PIN_NAME 128") 00048 cpp_quote("#define MAX_FILTER_NAME 128") 00049 00050 cpp_quote("#ifndef REFERENCE_TIME_DEFINED") 00051 cpp_quote("#define REFERENCE_TIME_DEFINED") 00052 typedef LONGLONG REFERENCE_TIME; 00053 cpp_quote("#endif") 00054 00055 cpp_quote("#ifndef REFTIME_DEFINED") 00056 cpp_quote("#define REFTIME_DEFINED") 00057 typedef DOUBLE REFTIME; 00058 cpp_quote("#endif") 00059 00060 typedef DWORD_PTR HSEMAPHORE; 00061 typedef DWORD_PTR HEVENT; 00062 00063 typedef struct _AllocatorProperties 00064 { 00065 long cBuffers; 00066 long cbBuffer; 00067 long cbAlign; 00068 long cbPrefix; 00069 } ALLOCATOR_PROPERTIES; 00070 00071 interface IAMovieSetup; 00072 interface IEnumFilters; 00073 interface IEnumMediaTypes; 00074 interface IEnumPins; 00075 interface IBaseFilter; 00076 interface IFilterGraph; 00077 interface IMediaFilter; 00078 interface IMediaSample; 00079 interface IMemAllocator; 00080 interface IMemAllocatorCallbackTemp; 00081 interface IMemAllocatorNotifyCallbackTemp; 00082 interface IMemInputPin; 00083 interface IPin; 00084 interface IReferenceClock; 00085 00086 [ 00087 object, 00088 uuid(56a86891-0ad4-11ce-b03a-0020af0ba770), 00089 pointer_default(unique) 00090 ] 00091 interface IPin : IUnknown 00092 { 00093 typedef struct _PinInfo 00094 { 00095 IBaseFilter *pFilter; 00096 PIN_DIRECTION dir; 00097 WCHAR achName[MAX_PIN_NAME]; 00098 } PIN_INFO; 00099 00100 HRESULT Connect( 00101 [in] IPin * pReceivePin, 00102 [in] const AM_MEDIA_TYPE * pmt); 00103 00104 HRESULT ReceiveConnection( 00105 [in] IPin * pConnector, 00106 [in] const AM_MEDIA_TYPE *pmt); 00107 00108 HRESULT Disconnect(void); 00109 00110 HRESULT ConnectedTo( 00111 [out] IPin **pPin); 00112 00113 HRESULT ConnectionMediaType( 00114 [out] AM_MEDIA_TYPE *pmt); 00115 00116 HRESULT QueryPinInfo( 00117 [out] PIN_INFO * pInfo); 00118 00119 HRESULT QueryDirection( 00120 [out] PIN_DIRECTION *pPinDir); 00121 00122 HRESULT QueryId( 00123 [out] LPWSTR * Id); 00124 00125 HRESULT QueryAccept( 00126 [in] const AM_MEDIA_TYPE *pmt); 00127 00128 HRESULT EnumMediaTypes( 00129 [out] IEnumMediaTypes **ppEnum); 00130 00131 HRESULT QueryInternalConnections( 00132 [out] IPin* *apPin, 00133 [in, out] ULONG *nPin); 00134 00135 HRESULT EndOfStream(void); 00136 00137 HRESULT BeginFlush(void); 00138 00139 HRESULT EndFlush(void); 00140 HRESULT NewSegment( 00141 [in] REFERENCE_TIME tStart, 00142 [in] REFERENCE_TIME tStop, 00143 [in] double dRate); 00144 } 00145 00146 typedef IPin *PPIN; 00147 00148 [ 00149 object, 00150 uuid(56a86892-0ad4-11ce-b03a-0020af0ba770), 00151 pointer_default(unique) 00152 ] 00153 interface IEnumPins : IUnknown 00154 { 00155 00156 HRESULT Next( 00157 [in] ULONG cPins, 00158 [out, size_is(cPins)] IPin ** ppPins, 00159 [out] ULONG * pcFetched); 00160 00161 HRESULT Skip( 00162 [in] ULONG cPins); 00163 00164 HRESULT Reset(void); 00165 00166 HRESULT Clone( 00167 [out] IEnumPins **ppEnum); 00168 } 00169 00170 typedef IEnumPins *PENUMPINS; 00171 00172 [ 00173 object, 00174 uuid(89c31040-846b-11ce-97d3-00aa0055595a), 00175 pointer_default(unique) 00176 ] 00177 interface IEnumMediaTypes : IUnknown 00178 { 00179 HRESULT Next( 00180 [in] ULONG cMediaTypes, 00181 [out, size_is(cMediaTypes)] 00182 AM_MEDIA_TYPE ** ppMediaTypes, 00183 [out] ULONG * pcFetched 00184 ); 00185 00186 HRESULT Skip( 00187 [in] ULONG cMediaTypes); 00188 00189 HRESULT Reset(void); 00190 00191 HRESULT Clone( 00192 [out] IEnumMediaTypes **ppEnum 00193 ); 00194 } 00195 00196 typedef IEnumMediaTypes *PENUMMEDIATYPES; 00197 00198 [ 00199 object, 00200 uuid(56a8689f-0ad4-11ce-b03a-0020af0ba770), 00201 pointer_default(unique) 00202 ] 00203 interface IFilterGraph : IUnknown 00204 { 00205 HRESULT AddFilter( 00206 [in] IBaseFilter * pFilter, 00207 [in, string] LPCWSTR pName); 00208 00209 HRESULT RemoveFilter( 00210 [in] IBaseFilter * pFilter); 00211 00212 HRESULT EnumFilters( 00213 [out] IEnumFilters **ppEnum); 00214 00215 HRESULT FindFilterByName( 00216 [in, string] LPCWSTR pName, 00217 [out] IBaseFilter ** ppFilter); 00218 00219 HRESULT ConnectDirect( 00220 [in] IPin * ppinOut, 00221 [in] IPin * ppinIn, 00222 [in, unique] const AM_MEDIA_TYPE* pmt); 00223 00224 HRESULT Reconnect( 00225 [in] IPin * ppin); 00226 00227 HRESULT Disconnect( 00228 [in] IPin * ppin); 00229 00230 HRESULT SetDefaultSyncSource(void); 00231 } 00232 00233 typedef IFilterGraph *PFILTERGRAPH; 00234 00235 [ 00236 object, 00237 uuid(56a86893-0ad4-11ce-b03a-0020af0ba770), 00238 pointer_default(unique) 00239 ] 00240 interface IEnumFilters : IUnknown 00241 { 00242 HRESULT Next( 00243 [in] ULONG cFilters, 00244 [out] IBaseFilter ** ppFilter, 00245 [out] ULONG * pcFetched); 00246 00247 00248 HRESULT Skip( 00249 [in] ULONG cFilters); 00250 00251 00252 HRESULT Reset(void); 00253 00254 00255 HRESULT Clone( 00256 [out] IEnumFilters **ppEnum); 00257 } 00258 00259 typedef IEnumFilters *PENUMFILTERS; 00260 00261 [ 00262 object, 00263 uuid(56a86899-0ad4-11ce-b03a-0020af0ba770), 00264 pointer_default(unique) 00265 ] 00266 interface IMediaFilter : IPersist 00267 { 00268 typedef enum _FilterState 00269 { 00270 State_Stopped, 00271 State_Paused, 00272 State_Running 00273 } FILTER_STATE; 00274 00275 HRESULT Stop(void); 00276 HRESULT Pause(void); 00277 00278 HRESULT Run(REFERENCE_TIME tStart); 00279 00280 HRESULT GetState( 00281 [in] DWORD dwMilliSecsTimeout, 00282 [out] FILTER_STATE *State); 00283 00284 HRESULT SetSyncSource( 00285 [in] IReferenceClock * pClock); 00286 00287 HRESULT GetSyncSource( 00288 [out] IReferenceClock ** pClock); 00289 } 00290 00291 typedef IMediaFilter *PMEDIAFILTER; 00292 00293 [ 00294 object, 00295 uuid(56a86895-0ad4-11ce-b03a-0020af0ba770), 00296 pointer_default(unique) 00297 ] 00298 interface IBaseFilter : IMediaFilter 00299 { 00300 typedef struct _FilterInfo 00301 { 00302 WCHAR achName[MAX_FILTER_NAME]; 00303 IFilterGraph * pGraph; 00304 } FILTER_INFO; 00305 00306 HRESULT EnumPins( 00307 [out] IEnumPins ** ppEnum); 00308 00309 HRESULT FindPin( 00310 [in, string] LPCWSTR Id, 00311 [out] IPin ** ppPin); 00312 00313 HRESULT QueryFilterInfo( 00314 [out] FILTER_INFO * pInfo); 00315 00316 HRESULT JoinFilterGraph( 00317 [in] IFilterGraph * pGraph, 00318 [in, string] LPCWSTR pName); 00319 00320 HRESULT QueryVendorInfo( 00321 [out, string] LPWSTR* pVendorInfo); 00322 } 00323 00324 typedef IBaseFilter *PFILTER; 00325 00326 [ 00327 object, 00328 uuid(56a86897-0ad4-11ce-b03a-0020af0ba770), 00329 pointer_default(unique) 00330 ] 00331 interface IReferenceClock : IUnknown 00332 { 00333 HRESULT GetTime( 00334 [out] REFERENCE_TIME *pTime); 00335 00336 HRESULT AdviseTime( 00337 [in] REFERENCE_TIME baseTime, 00338 [in] REFERENCE_TIME streamTime, 00339 [in] HEVENT hEvent, 00340 [out] DWORD_PTR * pdwAdviseCookie); 00341 00342 HRESULT AdvisePeriodic( 00343 [in] REFERENCE_TIME startTime, 00344 [in] REFERENCE_TIME periodTime, 00345 [in] HSEMAPHORE hSemaphore, 00346 [out] DWORD_PTR * pdwAdviseCookie); 00347 00348 HRESULT Unadvise( 00349 [in] DWORD_PTR dwAdviseCookie); 00350 } 00351 00352 typedef IReferenceClock *PREFERENCECLOCK; 00353 00354 00355 [ 00356 local, 00357 object, 00358 uuid(ebec459c-2eca-4d42-a8af-30df557614b8), 00359 pointer_default(unique) 00360 ] 00361 interface IReferenceClockTimerControl : IUnknown { 00362 00363 HRESULT SetDefaultTimerResolution( 00364 REFERENCE_TIME timerResolution); 00365 HRESULT GetDefaultTimerResolution( 00366 [out] REFERENCE_TIME* pTimerResolution); 00367 } 00368 00369 00370 /* 00371 [ 00372 object, 00373 uuid(36b73885-c2c8-11cf-8b46-00805f6cef60), 00374 pointer_default(unique) 00375 ] 00376 interface IReferenceClock2 : IReferenceClock 00377 { 00378 } 00379 00380 typedef IReferenceClock2 *PREFERENCECLOCK2; 00381 00382 */ 00383 00384 [ 00385 local, 00386 object, 00387 uuid(56a8689a-0ad4-11ce-b03a-0020af0ba770), 00388 pointer_default(unique) 00389 ] 00390 interface IMediaSample : IUnknown 00391 { 00392 HRESULT GetPointer([out] BYTE ** ppBuffer); 00393 00394 long GetSize(void); 00395 00396 HRESULT GetTime( 00397 [out] REFERENCE_TIME * pTimeStart, 00398 [out] REFERENCE_TIME * pTimeEnd); 00399 00400 HRESULT SetTime( 00401 [in] REFERENCE_TIME * pTimeStart, 00402 [in] REFERENCE_TIME * pTimeEnd); 00403 00404 HRESULT IsSyncPoint(void); 00405 00406 HRESULT SetSyncPoint(BOOL bIsSyncPoint); 00407 00408 HRESULT IsPreroll(void); 00409 00410 HRESULT SetPreroll(BOOL bIsPreroll); 00411 00412 LONG GetActualDataLength(void); 00413 00414 HRESULT SetActualDataLength(LONG length); 00415 00416 HRESULT GetMediaType(AM_MEDIA_TYPE **ppMediaType); 00417 00418 HRESULT SetMediaType(AM_MEDIA_TYPE *pMediaType); 00419 00420 HRESULT IsDiscontinuity(void); 00421 00422 HRESULT SetDiscontinuity(BOOL bDiscontinuity); 00423 00424 HRESULT GetMediaTime( 00425 [out] LONGLONG * pTimeStart, 00426 [out] LONGLONG * pTimeEnd); 00427 00428 HRESULT SetMediaTime( 00429 [in] LONGLONG * pTimeStart, 00430 [in] LONGLONG * pTimeEnd); 00431 } 00432 00433 typedef IMediaSample *PMEDIASAMPLE; 00434 00435 enum tagAM_SAMPLE_PROPERTY_FLAGS 00436 { 00437 AM_SAMPLE_SPLICEPOINT = 0x01, 00438 AM_SAMPLE_PREROLL = 0x02, 00439 AM_SAMPLE_DATADISCONTINUITY = 0x04, 00440 AM_SAMPLE_TYPECHANGED = 0x08, 00441 AM_SAMPLE_TIMEVALID = 0x10, 00442 AM_SAMPLE_TIMEDISCONTINUITY = 0x40, 00443 AM_SAMPLE_FLUSH_ON_PAUSE = 0x80, 00444 AM_SAMPLE_STOPVALID = 0x100, 00445 AM_SAMPLE_ENDOFSTREAM = 0x200, 00446 AM_STREAM_MEDIA = 0, 00447 AM_STREAM_CONTROL = 1 00448 }; 00449 00450 typedef struct tagAM_SAMPLE2_PROPERTIES 00451 { 00452 DWORD cbData; 00453 DWORD dwTypeSpecificFlags; 00454 DWORD dwSampleFlags; 00455 LONG lActual; 00456 REFERENCE_TIME tStart; 00457 REFERENCE_TIME tStop; 00458 DWORD dwStreamId; 00459 AM_MEDIA_TYPE *pMediaType; 00460 BYTE *pbBuffer; 00461 LONG cbBuffer; 00462 } AM_SAMPLE2_PROPERTIES; 00463 00464 [ 00465 local, 00466 object, 00467 uuid(36b73884-c2c8-11cf-8b46-00805f6cef60), 00468 pointer_default(unique) 00469 ] 00470 interface IMediaSample2 : IMediaSample 00471 { 00472 HRESULT GetProperties( 00473 [in] DWORD cbProperties, 00474 [out, size_is(cbProperties)] BYTE * pbProperties 00475 ); 00476 00477 HRESULT SetProperties( 00478 [in] DWORD cbProperties, 00479 [in, size_is(cbProperties)] const BYTE * pbProperties 00480 ); 00481 } 00482 00483 typedef IMediaSample2 *PMEDIASAMPLE2; 00484 00485 #define AM_GBF_PREVFRAMESKIPPED 1 00486 #define AM_GBF_NOTASYNCPOINT 2 00487 cpp_quote("#define AM_GBF_PREVFRAMESKIPPED 1") 00488 cpp_quote("#define AM_GBF_NOTASYNCPOINT 2") 00489 00490 cpp_quote("#define AM_GBF_NOWAIT 4") 00491 00492 [ 00493 object, 00494 uuid(56a8689c-0ad4-11ce-b03a-0020af0ba770), 00495 pointer_default(unique) 00496 ] 00497 interface IMemAllocator : IUnknown 00498 { 00499 HRESULT SetProperties( 00500 [in] ALLOCATOR_PROPERTIES* pRequest, 00501 [out] ALLOCATOR_PROPERTIES* pActual); 00502 00503 HRESULT GetProperties( 00504 [out] ALLOCATOR_PROPERTIES* pProps); 00505 00506 HRESULT Commit(void); 00507 00508 HRESULT Decommit(void); 00509 00510 HRESULT GetBuffer( 00511 [out] IMediaSample **ppBuffer, 00512 [in] REFERENCE_TIME * pStartTime, 00513 [in] REFERENCE_TIME * pEndTime, 00514 [in] DWORD dwFlags); 00515 00516 HRESULT ReleaseBuffer( 00517 [in] IMediaSample *pBuffer); 00518 } 00519 00520 typedef IMemAllocator *PMEMALLOCATOR; 00521 00522 [ 00523 object, 00524 uuid(379a0cf0-c1de-11d2-abf5-00a0c905f375), 00525 pointer_default(unique) 00526 ] 00527 interface IMemAllocatorCallbackTemp : IMemAllocator 00528 { 00529 HRESULT SetNotify( 00530 [in] IMemAllocatorNotifyCallbackTemp *pNotify); 00531 00532 HRESULT GetFreeCount( 00533 [out] LONG *plBuffersFree); 00534 } 00535 00536 [ 00537 object, 00538 uuid(92980b30-c1de-11d2-abf5-00a0c905f375), 00539 pointer_default(unique) 00540 ] 00541 interface IMemAllocatorNotifyCallbackTemp : IUnknown 00542 { 00543 HRESULT NotifyRelease(); 00544 } 00545 00546 [ 00547 object, 00548 uuid(56a8689d-0ad4-11ce-b03a-0020af0ba770), 00549 pointer_default(unique) 00550 ] 00551 interface IMemInputPin : IUnknown 00552 { 00553 HRESULT GetAllocator( 00554 [out] IMemAllocator ** ppAllocator); 00555 00556 HRESULT NotifyAllocator( 00557 [in] IMemAllocator * pAllocator, 00558 [in] BOOL bReadOnly); 00559 00560 HRESULT GetAllocatorRequirements( [out] ALLOCATOR_PROPERTIES*pProps ); 00561 00562 HRESULT Receive( 00563 [in] IMediaSample * pSample); 00564 00565 HRESULT ReceiveMultiple( 00566 [in, size_is(nSamples)] IMediaSample **pSamples, 00567 [in] long nSamples, 00568 [out] long *nSamplesProcessed); 00569 00570 HRESULT ReceiveCanBlock(); 00571 } 00572 00573 typedef IMemInputPin *PMEMINPUTPIN; 00574 00575 [ 00576 object, 00577 uuid(a3d8cec0-7e5a-11cf-bbc5-00805f6cef20), 00578 pointer_default(unique) 00579 ] 00580 interface IAMovieSetup : IUnknown 00581 { 00582 HRESULT Register( ); 00583 HRESULT Unregister( ); 00584 } 00585 00586 typedef IAMovieSetup *PAMOVIESETUP; 00587 00588 typedef enum AM_SEEKING_SeekingFlags 00589 { 00590 AM_SEEKING_NoPositioning = 0x00, 00591 AM_SEEKING_AbsolutePositioning = 0x01, 00592 AM_SEEKING_RelativePositioning = 0x02, 00593 AM_SEEKING_IncrementalPositioning = 0x03, 00594 AM_SEEKING_PositioningBitsMask = 0x03, 00595 AM_SEEKING_SeekToKeyFrame = 0x04, 00596 AM_SEEKING_ReturnTime = 0x08, 00597 AM_SEEKING_Segment = 0x10, 00598 AM_SEEKING_NoFlush = 0x20 00599 } AM_SEEKING_SEEKING_FLAGS; 00600 00601 typedef enum AM_SEEKING_SeekingCapabilities 00602 { 00603 AM_SEEKING_CanSeekAbsolute = 0x001, 00604 AM_SEEKING_CanSeekForwards = 0x002, 00605 AM_SEEKING_CanSeekBackwards = 0x004, 00606 AM_SEEKING_CanGetCurrentPos = 0x008, 00607 AM_SEEKING_CanGetStopPos = 0x010, 00608 AM_SEEKING_CanGetDuration = 0x020, 00609 AM_SEEKING_CanPlayBackwards = 0x040, 00610 AM_SEEKING_CanDoSegments = 0x080, 00611 AM_SEEKING_Source = 0x100 00612 } AM_SEEKING_SEEKING_CAPABILITIES; 00613 00614 [ 00615 object, 00616 uuid(36b73880-c2c8-11cf-8b46-00805f6cef60), 00617 pointer_default(unique) 00618 ] 00619 interface IMediaSeeking : IUnknown 00620 { 00621 HRESULT GetCapabilities( [out] DWORD * pCapabilities ); 00622 00623 HRESULT CheckCapabilities( [in,out] DWORD * pCapabilities ); 00624 00625 HRESULT IsFormatSupported([in] const GUID * pFormat); 00626 00627 HRESULT QueryPreferredFormat([out] GUID * pFormat); 00628 00629 HRESULT GetTimeFormat([out] GUID *pFormat); 00630 00631 HRESULT IsUsingTimeFormat([in] const GUID * pFormat); 00632 00633 HRESULT SetTimeFormat([in] const GUID * pFormat); 00634 00635 HRESULT GetDuration([out] LONGLONG *pDuration); 00636 00637 HRESULT GetStopPosition([out] LONGLONG *pStop); 00638 00639 HRESULT GetCurrentPosition([out] LONGLONG *pCurrent); 00640 00641 HRESULT ConvertTimeFormat([out] LONGLONG * pTarget, [in] const GUID * pTargetFormat, 00642 [in] LONGLONG Source, [in] const GUID * pSourceFormat ); 00643 00644 HRESULT SetPositions( 00645 [in,out] LONGLONG * pCurrent, 00646 [in] DWORD dwCurrentFlags, 00647 [in,out] LONGLONG * pStop, 00648 [in] DWORD dwStopFlags); 00649 00650 HRESULT GetPositions( 00651 [out] LONGLONG * pCurrent, 00652 [out] LONGLONG * pStop); 00653 00654 HRESULT GetAvailable( 00655 [out] LONGLONG * pEarliest, 00656 [out] LONGLONG * pLatest); 00657 00658 HRESULT SetRate([in] double dRate); 00659 00660 HRESULT GetRate([out] double * pdRate); 00661 00662 HRESULT GetPreroll([out] LONGLONG * pllPreroll); 00663 } 00664 00665 typedef IMediaSeeking *PMEDIASEEKING; 00666 00667 enum tagAM_MEDIAEVENT_FLAGS 00668 { 00669 AM_MEDIAEVENT_NONOTIFY = 0x01 00670 }; Generated on Sat May 26 2012 04:29:13 for ReactOS by
1.7.6.1
|