blob: 56810b7b10cd1fd7cb18eefc4dd4497dd22c3911 [file] [log] [blame]
Lionel Ulmer1fa96242003-06-13 18:06:44 +00001/* DirectShow private interfaces (QUARTZ.DLL)
2 *
3 * Copyright 2002 Lionel Ulmer
4 *
5 * This file contains the (internal) driver registration functions,
6 * driver enumeration APIs and DirectDraw creation functions.
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */
22
23#ifndef __QUARTZ_PRIVATE_INCLUDED__
24#define __QUARTZ_PRIVATE_INCLUDED__
25
Alexandre Julliarde37c6e12003-09-05 23:08:26 +000026#include <stdarg.h>
27
28#include "windef.h"
Lionel Ulmer1fa96242003-06-13 18:06:44 +000029#include "winbase.h"
30#include "wtypes.h"
31#include "wingdi.h"
32#include "winuser.h"
33#include "dshow.h"
34
Robert Shearman0a6f11c2003-09-25 23:50:06 +000035#define MEDIATIME_FROM_BYTES(x) ((LONGLONG)(x) * 10000000)
36#define SEC_FROM_MEDIATIME(time) ((time) / 10000000)
37#define BYTES_FROM_MEDIATIME(time) SEC_FROM_MEDIATIME(time)
38#define MSEC_FROM_MEDIATIME(time) ((time) / 10000)
39
Lionel Ulmer1fa96242003-06-13 18:06:44 +000040HRESULT FILTERGRAPH_create(IUnknown *pUnkOuter, LPVOID *ppObj) ;
Robert Shearmanc71301a2003-07-01 04:29:48 +000041HRESULT FilterMapper2_create(IUnknown *pUnkOuter, LPVOID *ppObj);
Robert Shearmanad302ff2003-08-06 23:00:14 +000042HRESULT AsyncReader_create(IUnknown * pUnkOuter, LPVOID * ppv);
Robert Shearman8e538a32003-09-11 21:18:36 +000043HRESULT StdMemAllocator_create(IUnknown * pUnkOuter, LPVOID * ppv);
Robert Shearmand6254fc2003-11-18 20:47:48 +000044HRESULT AVISplitter_create(IUnknown * pUnkOuter, LPVOID * ppv);
Robert Shearmanc71301a2003-07-01 04:29:48 +000045
46HRESULT EnumMonikerImpl_Create(IMoniker ** ppMoniker, ULONG nMonikerCount, IEnumMoniker ** ppEnum);
Lionel Ulmer1fa96242003-06-13 18:06:44 +000047
Robert Shearmancae77552003-08-06 22:04:45 +000048typedef struct tagENUMPINDETAILS
49{
50 ULONG cPins;
51 IPin ** ppPins;
52} ENUMPINDETAILS;
53
54typedef struct tagENUMEDIADETAILS
55{
56 ULONG cMediaTypes;
57 AM_MEDIA_TYPE * pMediaTypes;
58} ENUMMEDIADETAILS;
59
60HRESULT IEnumPinsImpl_Construct(const ENUMPINDETAILS * pDetails, IEnumPins ** ppEnum);
61HRESULT IEnumMediaTypesImpl_Construct(const ENUMMEDIADETAILS * pDetails, IEnumMediaTypes ** ppEnum);
Christian Costab0c9f6a2004-03-04 06:07:30 +000062HRESULT IEnumRegFiltersImpl_Construct(REGFILTER * pInRegFilters, const ULONG size, IEnumRegFilters ** ppEnum);
63HRESULT IEnumFiltersImpl_Construct(IBaseFilter ** ppFilters, ULONG nFilters, IEnumFilters ** ppEnum);
Robert Shearmancae77552003-08-06 22:04:45 +000064
65extern const char * qzdebugstr_guid(const GUID * id);
66extern const char * qzdebugstr_State(FILTER_STATE state);
67
Robert Shearman8e538a32003-09-11 21:18:36 +000068HRESULT CopyMediaType(AM_MEDIA_TYPE * pDest, const AM_MEDIA_TYPE *pSrc);
69void DeleteMediaType(AM_MEDIA_TYPE * pmt);
Robert Shearmancae77552003-08-06 22:04:45 +000070BOOL CompareMediaTypes(const AM_MEDIA_TYPE * pmt1, const AM_MEDIA_TYPE * pmt2, BOOL bWildcards);
71void dump_AM_MEDIA_TYPE(const AM_MEDIA_TYPE * pmt);
72
Lionel Ulmer1fa96242003-06-13 18:06:44 +000073#endif /* __QUARTZ_PRIVATE_INCLUDED__ */