#include "avdevice.h"
#include <windows.h>
#include <dshow.h>
#include <dvdmedia.h>
Go to the source code of this file.
#define DECLARE_ADDREF | ( | class | ) |
Value:
unsigned long WINAPI \ class##_AddRef(class *this) \ { \ dshowdebug(AV_STRINGIFY(class)"_AddRef(%p)\t%ld\n", this, this->ref+1); \ return InterlockedIncrement(&this->ref); \ }
#define DECLARE_CREATE | ( | class, | |||
setup, | |||||
... | ) |
Value:
class *class##_Create(__VA_ARGS__) \ { \ class *this = CoTaskMemAlloc(sizeof(class)); \ void *vtbl = CoTaskMemAlloc(sizeof(*this->vtbl)); \ dshowdebug(AV_STRINGIFY(class)"_Create(%p)\n", this); \ if (!this || !vtbl) \ goto fail; \ ZeroMemory(this, sizeof(class)); \ ZeroMemory(vtbl, sizeof(*this->vtbl)); \ this->ref = 1; \ this->vtbl = vtbl; \ if (!setup) \ goto fail; \ dshowdebug("created "AV_STRINGIFY(class)" %p\n", this); \ return this; \ fail: \ class##_Destroy(this); \ dshowdebug("could not create "AV_STRINGIFY(class)"\n"); \ return NULL; \ }
#define DECLARE_DESTROY | ( | class, | |||
func | ) |
Value:
void class##_Destroy(class *this) \ { \ dshowdebug(AV_STRINGIFY(class)"_Destroy(%p)\n", this); \ func(this); \ if (this) { \ if (this->vtbl) \ CoTaskMemFree(this->vtbl); \ CoTaskMemFree(this); \ } \ }
#define DECLARE_QUERYINTERFACE | ( | class, | |||
... | ) |
Value:
long WINAPI \ class##_QueryInterface(class *this, const GUID *riid, void **ppvObject) \ { \ struct GUIDoffset ifaces[] = __VA_ARGS__; \ int i; \ dshowdebug(AV_STRINGIFY(class)"_QueryInterface(%p, %p, %p)\n", this, riid, ppvObject); \ ff_printGUID(riid); \ if (!ppvObject) \ return E_POINTER; \ for (i = 0; i < sizeof(ifaces)/sizeof(ifaces[0]); i++) { \ if (IsEqualGUID(riid, ifaces[i].iid)) { \ void *obj = (void *) ((uint8_t *) this + ifaces[i].offset); \ class##_AddRef(this); \ dshowdebug("\tfound %d with offset %d\n", i, ifaces[i].offset); \ *ppvObject = (void *) obj; \ return S_OK; \ } \ } \ dshowdebug("\tE_NOINTERFACE\n"); \ *ppvObject = NULL; \ return E_NOINTERFACE; \ }
#define DECLARE_RELEASE | ( | class | ) |
Value:
unsigned long WINAPI \ class##_Release(class *this) \ { \ long ref = InterlockedDecrement(&this->ref); \ dshowdebug(AV_STRINGIFY(class)"_Release(%p)\t%ld\n", this, ref); \ if (!ref) \ class##_Destroy(this); \ return ref; \ }
#define dshowdebug | ( | ... | ) |
Definition at line 41 of file dshow.h.
Referenced by ff_print_AM_MEDIA_TYPE(), ff_print_AUDIO_STREAM_CONFIG_CAPS(), ff_print_VIDEO_STREAM_CONFIG_CAPS(), ff_printGUID(), libAVEnumMediaTypes_Clone(), libAVEnumMediaTypes_Reset(), libAVEnumMediaTypes_Skip(), libAVEnumPins_Clone(), libAVEnumPins_Reset(), libAVEnumPins_Skip(), libAVFilter_EnumPins(), libAVFilter_FindPin(), libAVFilter_GetState(), libAVFilter_GetSyncSource(), libAVFilter_JoinFilterGraph(), libAVFilter_Pause(), libAVFilter_QueryFilterInfo(), libAVFilter_QueryVendorInfo(), libAVFilter_Run(), libAVFilter_SetSyncSource(), libAVFilter_Stop(), libAVMemInputPin_AddRef(), libAVMemInputPin_Destroy(), libAVMemInputPin_GetAllocator(), libAVMemInputPin_GetAllocatorRequirements(), libAVMemInputPin_NotifyAllocator(), libAVMemInputPin_Receive(), libAVMemInputPin_ReceiveCanBlock(), libAVMemInputPin_ReceiveMultiple(), libAVMemInputPin_Release(), libAVPin_BeginFlush(), libAVPin_ConnectedTo(), libAVPin_ConnectionMediaType(), libAVPin_Disconnect(), libAVPin_EndFlush(), libAVPin_EndOfStream(), libAVPin_EnumMediaTypes(), libAVPin_NewSegment(), libAVPin_QueryAccept(), libAVPin_QueryDirection(), libAVPin_QueryId(), libAVPin_QueryInternalConnections(), libAVPin_QueryPinInfo(), and libAVPin_ReceiveConnection().
#define SETVTBL | ( | vtbl, | |||
class, | |||||
fn | ) | do { (vtbl)->fn = (void *) class##_##fn; } while(0) |
Definition at line 132 of file dshow.h.
Referenced by libAVEnumMediaTypes_Setup(), libAVEnumPins_Setup(), libAVFilter_Setup(), and libAVPin_Setup().
typedef struct libAVEnumMediaTypes libAVEnumMediaTypes |
typedef struct libAVEnumPins libAVEnumPins |
typedef struct libAVFilter libAVFilter |
typedef struct libAVMemInputPin libAVMemInputPin |
enum dshowDeviceType |
long ff_copy_dshow_media_type | ( | AM_MEDIA_TYPE * | dst, | |
const AM_MEDIA_TYPE * | src | |||
) |
Definition at line 24 of file dshow_common.c.
Referenced by libAVEnumMediaTypes_Setup(), libAVPin_ConnectionMediaType(), and libAVPin_ReceiveConnection().
void ff_print_AM_MEDIA_TYPE | ( | const AM_MEDIA_TYPE * | type | ) |
Definition at line 134 of file dshow_common.c.
Referenced by dshow_cycle_formats(), and libAVPin_ReceiveConnection().
void ff_print_AUDIO_STREAM_CONFIG_CAPS | ( | const AUDIO_STREAM_CONFIG_CAPS * | caps | ) |
void ff_print_VIDEO_STREAM_CONFIG_CAPS | ( | const VIDEO_STREAM_CONFIG_CAPS * | caps | ) |
void ff_printGUID | ( | const GUID * | g | ) |
Definition at line 42 of file dshow_common.c.
Referenced by ff_print_AM_MEDIA_TYPE(), ff_print_AUDIO_STREAM_CONFIG_CAPS(), and ff_print_VIDEO_STREAM_CONFIG_CAPS().
unsigned long WINAPI libAVEnumMediaTypes_AddRef | ( | libAVEnumMediaTypes * | ) |
long WINAPI libAVEnumMediaTypes_Clone | ( | libAVEnumMediaTypes * | , | |
libAVEnumMediaTypes ** | ||||
) |
Definition at line 68 of file dshow_enummediatypes.c.
libAVEnumMediaTypes* libAVEnumMediaTypes_Create | ( | const AM_MEDIA_TYPE * | type | ) |
Referenced by libAVEnumMediaTypes_Clone(), and libAVPin_EnumMediaTypes().
void libAVEnumMediaTypes_Destroy | ( | libAVEnumMediaTypes * | ) |
long WINAPI libAVEnumMediaTypes_Next | ( | libAVEnumMediaTypes * | , | |
unsigned | long, | |||
AM_MEDIA_TYPE ** | , | |||
unsigned long * | ||||
) |
long WINAPI libAVEnumMediaTypes_QueryInterface | ( | libAVEnumMediaTypes * | , | |
const GUID * | , | |||
void ** | ||||
) |
unsigned long WINAPI libAVEnumMediaTypes_Release | ( | libAVEnumMediaTypes * | ) |
long WINAPI libAVEnumMediaTypes_Reset | ( | libAVEnumMediaTypes * | ) |
Definition at line 61 of file dshow_enummediatypes.c.
long WINAPI libAVEnumMediaTypes_Skip | ( | libAVEnumMediaTypes * | , | |
unsigned | long | |||
) |
Definition at line 53 of file dshow_enummediatypes.c.
unsigned long WINAPI libAVEnumPins_AddRef | ( | libAVEnumPins * | ) |
long WINAPI libAVEnumPins_Clone | ( | libAVEnumPins * | , | |
libAVEnumPins ** | ||||
) |
Definition at line 65 of file dshow_enumpins.c.
libAVEnumPins* libAVEnumPins_Create | ( | libAVPin * | pin, | |
libAVFilter * | filter | |||
) |
Referenced by libAVEnumPins_Clone(), and libAVFilter_EnumPins().
void libAVEnumPins_Destroy | ( | libAVEnumPins * | ) |
long WINAPI libAVEnumPins_Next | ( | libAVEnumPins * | , | |
unsigned | long, | |||
IPin ** | , | |||
unsigned long * | ||||
) |
long WINAPI libAVEnumPins_QueryInterface | ( | libAVEnumPins * | , | |
const GUID * | , | |||
void ** | ||||
) |
unsigned long WINAPI libAVEnumPins_Release | ( | libAVEnumPins * | ) |
long WINAPI libAVEnumPins_Reset | ( | libAVEnumPins * | ) |
Definition at line 58 of file dshow_enumpins.c.
long WINAPI libAVEnumPins_Skip | ( | libAVEnumPins * | , | |
unsigned | long | |||
) |
Definition at line 50 of file dshow_enumpins.c.
unsigned long WINAPI libAVFilter_AddRef | ( | libAVFilter * | ) |
Referenced by libAVEnumPins_Setup(), and libAVPin_QueryPinInfo().
libAVFilter* libAVFilter_Create | ( | void * | , | |
void * | , | |||
enum | dshowDeviceType | |||
) |
Referenced by dshow_open_device().
void libAVFilter_Destroy | ( | libAVFilter * | ) |
long WINAPI libAVFilter_EnumPins | ( | libAVFilter * | , | |
IEnumPins ** | ||||
) |
Definition at line 96 of file dshow_filter.c.
long WINAPI libAVFilter_FindPin | ( | libAVFilter * | , | |
const wchar_t * | , | |||
IPin ** | ||||
) |
Definition at line 111 of file dshow_filter.c.
long WINAPI libAVFilter_GetClassID | ( | libAVFilter * | , | |
CLSID * | ||||
) |
long WINAPI libAVFilter_GetState | ( | libAVFilter * | , | |
DWORD | , | |||
FILTER_STATE * | ||||
) |
Definition at line 59 of file dshow_filter.c.
long WINAPI libAVFilter_GetSyncSource | ( | libAVFilter * | , | |
IReferenceClock ** | ||||
) |
Definition at line 83 of file dshow_filter.c.
long WINAPI libAVFilter_JoinFilterGraph | ( | libAVFilter * | , | |
IFilterGraph * | , | |||
const wchar_t * | ||||
) |
Definition at line 142 of file dshow_filter.c.
long WINAPI libAVFilter_Pause | ( | libAVFilter * | ) |
Definition at line 44 of file dshow_filter.c.
long WINAPI libAVFilter_QueryFilterInfo | ( | libAVFilter * | , | |
FILTER_INFO * | ||||
) |
Definition at line 129 of file dshow_filter.c.
long WINAPI libAVFilter_QueryInterface | ( | libAVFilter * | , | |
const GUID * | , | |||
void ** | ||||
) |
long WINAPI libAVFilter_QueryVendorInfo | ( | libAVFilter * | , | |
wchar_t ** | ||||
) |
Definition at line 154 of file dshow_filter.c.
unsigned long WINAPI libAVFilter_Release | ( | libAVFilter * | ) |
Referenced by dshow_read_close(), and libAVEnumPins_Cleanup().
long WINAPI libAVFilter_Run | ( | libAVFilter * | , | |
REFERENCE_TIME | ||||
) |
Definition at line 51 of file dshow_filter.c.
long WINAPI libAVFilter_SetSyncSource | ( | libAVFilter * | , | |
IReferenceClock * | ||||
) |
Definition at line 68 of file dshow_filter.c.
long WINAPI libAVFilter_Stop | ( | libAVFilter * | ) |
Definition at line 37 of file dshow_filter.c.
unsigned long WINAPI libAVMemInputPin_AddRef | ( | libAVMemInputPin * | ) |
Definition at line 267 of file dshow_pin.c.
void libAVMemInputPin_Destroy | ( | libAVMemInputPin * | ) |
Definition at line 357 of file dshow_pin.c.
long WINAPI libAVMemInputPin_GetAllocator | ( | libAVMemInputPin * | , | |
IMemAllocator ** | ||||
) |
Definition at line 281 of file dshow_pin.c.
long WINAPI libAVMemInputPin_GetAllocatorRequirements | ( | libAVMemInputPin * | , | |
ALLOCATOR_PROPERTIES * | ||||
) |
Definition at line 294 of file dshow_pin.c.
long WINAPI libAVMemInputPin_NotifyAllocator | ( | libAVMemInputPin * | , | |
IMemAllocator * | , | |||
WINBOOL | ||||
) |
Definition at line 287 of file dshow_pin.c.
long WINAPI libAVMemInputPin_QueryInterface | ( | libAVMemInputPin * | , | |
const GUID * | , | |||
void ** | ||||
) |
long WINAPI libAVMemInputPin_Receive | ( | libAVMemInputPin * | , | |
IMediaSample * | ||||
) |
long WINAPI libAVMemInputPin_ReceiveCanBlock | ( | libAVMemInputPin * | ) |
Definition at line 349 of file dshow_pin.c.
long WINAPI libAVMemInputPin_ReceiveMultiple | ( | libAVMemInputPin * | , | |
IMediaSample ** | , | |||
long | , | |||
long * | ||||
) |
Definition at line 336 of file dshow_pin.c.
unsigned long WINAPI libAVMemInputPin_Release | ( | libAVMemInputPin * | ) |
Definition at line 274 of file dshow_pin.c.
unsigned long WINAPI libAVPin_AddRef | ( | libAVPin * | ) |
Referenced by dshow_open_device(), libAVFilter_FindPin(), and libAVMemInputPin_AddRef().
long WINAPI libAVPin_BeginFlush | ( | libAVPin * | ) |
Definition at line 182 of file dshow_pin.c.
long WINAPI libAVPin_Connect | ( | libAVPin * | , | |
IPin * | , | |||
const AM_MEDIA_TYPE * | ||||
) |
long WINAPI libAVPin_ConnectedTo | ( | libAVPin * | , | |
IPin ** | ||||
) |
Definition at line 82 of file dshow_pin.c.
long WINAPI libAVPin_ConnectionMediaType | ( | libAVPin * | , | |
AM_MEDIA_TYPE * | ||||
) |
libAVPin* libAVPin_Create | ( | libAVFilter * | filter | ) |
Referenced by libAVFilter_Setup().
void libAVPin_Destroy | ( | libAVPin * | ) |
Referenced by libAVMemInputPin_Destroy().
long WINAPI libAVPin_Disconnect | ( | libAVPin * | ) |
Definition at line 68 of file dshow_pin.c.
long WINAPI libAVPin_EndFlush | ( | libAVPin * | ) |
Definition at line 189 of file dshow_pin.c.
long WINAPI libAVPin_EndOfStream | ( | libAVPin * | ) |
Definition at line 175 of file dshow_pin.c.
long WINAPI libAVPin_EnumMediaTypes | ( | libAVPin * | , | |
IEnumMediaTypes ** | ||||
) |
Definition at line 152 of file dshow_pin.c.
long WINAPI libAVPin_NewSegment | ( | libAVPin * | , | |
REFERENCE_TIME | , | |||
REFERENCE_TIME | , | |||
double | ||||
) |
Definition at line 196 of file dshow_pin.c.
long WINAPI libAVPin_QueryAccept | ( | libAVPin * | , | |
const AM_MEDIA_TYPE * | ||||
) |
Definition at line 146 of file dshow_pin.c.
long WINAPI libAVPin_QueryDirection | ( | libAVPin * | , | |
PIN_DIRECTION * | ||||
) |
Definition at line 125 of file dshow_pin.c.
long WINAPI libAVPin_QueryId | ( | libAVPin * | , | |
wchar_t ** | ||||
) |
Definition at line 134 of file dshow_pin.c.
long WINAPI libAVPin_QueryInterface | ( | libAVPin * | , | |
const GUID * | , | |||
void ** | ||||
) |
long WINAPI libAVPin_QueryInternalConnections | ( | libAVPin * | , | |
IPin ** | , | |||
unsigned long * | ||||
) |
Definition at line 168 of file dshow_pin.c.
long WINAPI libAVPin_QueryPinInfo | ( | libAVPin * | , | |
PIN_INFO * | ||||
) |
Definition at line 108 of file dshow_pin.c.
long WINAPI libAVPin_ReceiveConnection | ( | libAVPin * | , | |
IPin * | , | |||
const AM_MEDIA_TYPE * | ||||
) |
Definition at line 40 of file dshow_pin.c.
unsigned long WINAPI libAVPin_Release | ( | libAVPin * | ) |
Referenced by dshow_read_close(), libAVFilter_Cleanup(), and libAVMemInputPin_Release().