FFmpeg
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
dshow_capture.h File Reference
#include "avdevice.h"
#include <windows.h>
#include <dshow.h>
#include <dvdmedia.h>
#include "libavcodec/internal.h"

Go to the source code of this file.

Data Structures

struct  GUIDoffset
 
struct  libAVPin
 
struct  libAVEnumPins
 
struct  libAVEnumMediaTypes
 
struct  libAVFilter
 
struct  dshow_ctx
 

Macros

#define DSHOWDEBUG   0
 
#define COBJMACROS
 
#define WIN32_LEAN_AND_MEAN
 
#define NO_DSHOW_STRSAFE
 
#define EC_DEVICE_LOST   0x1f
 
#define dshowdebug(...)   ff_dlog(&ff_dshow_context_class_ptr, __VA_ARGS__)
 
#define DECLARE_QUERYINTERFACE(class, ...)
 
#define DECLARE_ADDREF(class)
 
#define DECLARE_RELEASE(class)
 
#define DECLARE_DESTROY(class, func)
 
#define DECLARE_CREATE(class, setup, ...)
 
#define SETVTBL(vtbl, class, fn)   do { (vtbl)->fn = (void *) class##_##fn; } while(0)
 

Typedefs

typedef struct libAVMemInputPin libAVMemInputPin
 

Enumerations

enum  dshowDeviceType { VideoDevice = 0, AudioDevice = 1 }
 
enum  dshowSourceFilterType { VideoSourceDevice = 0, AudioSourceDevice = 1 }
 

Functions

long ff_copy_dshow_media_type (AM_MEDIA_TYPE *dst, const AM_MEDIA_TYPE *src)
 
void ff_print_VIDEO_STREAM_CONFIG_CAPS (const VIDEO_STREAM_CONFIG_CAPS *caps)
 
void ff_print_AUDIO_STREAM_CONFIG_CAPS (const AUDIO_STREAM_CONFIG_CAPS *caps)
 
void ff_print_AM_MEDIA_TYPE (const AM_MEDIA_TYPE *type)
 
void ff_printGUID (const GUID *g)
 
static void nothing (void *foo)
 
long WINAPI libAVPin_QueryInterface (libAVPin *, const GUID *, void **)
 
unsigned long WINAPI libAVPin_AddRef (libAVPin *)
 
unsigned long WINAPI libAVPin_Release (libAVPin *)
 
long WINAPI libAVPin_Connect (libAVPin *, IPin *, const AM_MEDIA_TYPE *)
 
long WINAPI libAVPin_ReceiveConnection (libAVPin *, IPin *, const AM_MEDIA_TYPE *)
 
long WINAPI libAVPin_Disconnect (libAVPin *)
 
long WINAPI libAVPin_ConnectedTo (libAVPin *, IPin **)
 
long WINAPI libAVPin_ConnectionMediaType (libAVPin *, AM_MEDIA_TYPE *)
 
long WINAPI libAVPin_QueryPinInfo (libAVPin *, PIN_INFO *)
 
long WINAPI libAVPin_QueryDirection (libAVPin *, PIN_DIRECTION *)
 
long WINAPI libAVPin_QueryId (libAVPin *, wchar_t **)
 
long WINAPI libAVPin_QueryAccept (libAVPin *, const AM_MEDIA_TYPE *)
 
long WINAPI libAVPin_EnumMediaTypes (libAVPin *, IEnumMediaTypes **)
 
long WINAPI libAVPin_QueryInternalConnections (libAVPin *, IPin **, unsigned long *)
 
long WINAPI libAVPin_EndOfStream (libAVPin *)
 
long WINAPI libAVPin_BeginFlush (libAVPin *)
 
long WINAPI libAVPin_EndFlush (libAVPin *)
 
long WINAPI libAVPin_NewSegment (libAVPin *, REFERENCE_TIME, REFERENCE_TIME, double)
 
long WINAPI libAVMemInputPin_QueryInterface (libAVMemInputPin *, const GUID *, void **)
 
unsigned long WINAPI libAVMemInputPin_AddRef (libAVMemInputPin *)
 
unsigned long WINAPI libAVMemInputPin_Release (libAVMemInputPin *)
 
long WINAPI libAVMemInputPin_GetAllocator (libAVMemInputPin *, IMemAllocator **)
 
long WINAPI libAVMemInputPin_NotifyAllocator (libAVMemInputPin *, IMemAllocator *, BOOL)
 
long WINAPI libAVMemInputPin_GetAllocatorRequirements (libAVMemInputPin *, ALLOCATOR_PROPERTIES *)
 
long WINAPI libAVMemInputPin_Receive (libAVMemInputPin *, IMediaSample *)
 
long WINAPI libAVMemInputPin_ReceiveMultiple (libAVMemInputPin *, IMediaSample **, long, long *)
 
long WINAPI libAVMemInputPin_ReceiveCanBlock (libAVMemInputPin *)
 
void libAVPin_Destroy (libAVPin *)
 
libAVPinlibAVPin_Create (libAVFilter *filter)
 
void libAVMemInputPin_Destroy (libAVMemInputPin *)
 
long WINAPI libAVEnumPins_QueryInterface (libAVEnumPins *, const GUID *, void **)
 
unsigned long WINAPI libAVEnumPins_AddRef (libAVEnumPins *)
 
unsigned long WINAPI libAVEnumPins_Release (libAVEnumPins *)
 
long WINAPI libAVEnumPins_Next (libAVEnumPins *, unsigned long, IPin **, unsigned long *)
 
long WINAPI libAVEnumPins_Skip (libAVEnumPins *, unsigned long)
 
long WINAPI libAVEnumPins_Reset (libAVEnumPins *)
 
long WINAPI libAVEnumPins_Clone (libAVEnumPins *, libAVEnumPins **)
 
void libAVEnumPins_Destroy (libAVEnumPins *)
 
libAVEnumPinslibAVEnumPins_Create (libAVPin *pin, libAVFilter *filter)
 
long WINAPI libAVEnumMediaTypes_QueryInterface (libAVEnumMediaTypes *, const GUID *, void **)
 
unsigned long WINAPI libAVEnumMediaTypes_AddRef (libAVEnumMediaTypes *)
 
unsigned long WINAPI libAVEnumMediaTypes_Release (libAVEnumMediaTypes *)
 
long WINAPI libAVEnumMediaTypes_Next (libAVEnumMediaTypes *, unsigned long, AM_MEDIA_TYPE **, unsigned long *)
 
long WINAPI libAVEnumMediaTypes_Skip (libAVEnumMediaTypes *, unsigned long)
 
long WINAPI libAVEnumMediaTypes_Reset (libAVEnumMediaTypes *)
 
long WINAPI libAVEnumMediaTypes_Clone (libAVEnumMediaTypes *, libAVEnumMediaTypes **)
 
void libAVEnumMediaTypes_Destroy (libAVEnumMediaTypes *)
 
libAVEnumMediaTypeslibAVEnumMediaTypes_Create (const AM_MEDIA_TYPE *type)
 
long WINAPI libAVFilter_QueryInterface (libAVFilter *, const GUID *, void **)
 
unsigned long WINAPI libAVFilter_AddRef (libAVFilter *)
 
unsigned long WINAPI libAVFilter_Release (libAVFilter *)
 
long WINAPI libAVFilter_GetClassID (libAVFilter *, CLSID *)
 
long WINAPI libAVFilter_Stop (libAVFilter *)
 
long WINAPI libAVFilter_Pause (libAVFilter *)
 
long WINAPI libAVFilter_Run (libAVFilter *, REFERENCE_TIME)
 
long WINAPI libAVFilter_GetState (libAVFilter *, DWORD, FILTER_STATE *)
 
long WINAPI libAVFilter_SetSyncSource (libAVFilter *, IReferenceClock *)
 
long WINAPI libAVFilter_GetSyncSource (libAVFilter *, IReferenceClock **)
 
long WINAPI libAVFilter_EnumPins (libAVFilter *, IEnumPins **)
 
long WINAPI libAVFilter_FindPin (libAVFilter *, const wchar_t *, IPin **)
 
long WINAPI libAVFilter_QueryFilterInfo (libAVFilter *, FILTER_INFO *)
 
long WINAPI libAVFilter_JoinFilterGraph (libAVFilter *, IFilterGraph *, const wchar_t *)
 
long WINAPI libAVFilter_QueryVendorInfo (libAVFilter *, wchar_t **)
 
void libAVFilter_Destroy (libAVFilter *)
 
libAVFilterlibAVFilter_Create (void *, void *, enum dshowDeviceType)
 
HRESULT dshow_try_setup_crossbar_options (ICaptureGraphBuilder2 *graph_builder2, IBaseFilter *device_filter, enum dshowDeviceType devtype, AVFormatContext *avctx)
 Given a fully constructed graph, check if there is a cross bar filter, and configure its pins if so. More...
 
void dshow_show_filter_properties (IBaseFilter *pFilter, AVFormatContext *avctx)
 Pops up a user dialog allowing them to adjust properties for the given filter, if possible. More...
 

Variables

const AVClassff_dshow_context_class_ptr
 

Macro Definition Documentation

#define DSHOWDEBUG   0

Definition at line 25 of file dshow_capture.h.

#define COBJMACROS

Definition at line 29 of file dshow_capture.h.

#define WIN32_LEAN_AND_MEAN

Definition at line 30 of file dshow_capture.h.

#define NO_DSHOW_STRSAFE

Definition at line 32 of file dshow_capture.h.

#define EC_DEVICE_LOST   0x1f

Definition at line 40 of file dshow_capture.h.

Referenced by dshow_check_event_queue().

#define dshowdebug (   ...)    ff_dlog(&ff_dshow_context_class_ptr, __VA_ARGS__)
#define DECLARE_QUERYINTERFACE (   class,
  ... 
)
Value:
class##_QueryInterface(class *this, const GUID *riid, void **ppvObject) \
{ \
struct GUIDoffset ifaces[] = __VA_ARGS__; \
dshowdebug(AV_STRINGIFY(class)"_QueryInterface(%p, %p, %p)\n", this, riid, ppvObject); \
if (!ppvObject) \
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; \
} \
} \
dshowdebug("\tE_NOINTERFACE\n"); \
*ppvObject = NULL; \
}
#define NULL
Definition: coverity.c:32
#define S_OK
Definition: windows2linux.h:40
#define dshowdebug(...)
Definition: dshow_capture.h:50
#define E_POINTER
Definition: windows2linux.h:43
uint8_t
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf offset
#define E_NOINTERFACE
Definition: windows2linux.h:42
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:259
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
if(ret)
void ff_printGUID(const GUID *g)
Definition: dshow_common.c:42
#define AV_STRINGIFY(s)
Definition: macros.h:36
int
#define class
Definition: math.h:25
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a it should return
for(j=16;j >0;--j)

Definition at line 71 of file dshow_capture.h.

#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); \
}
#define dshowdebug(...)
Definition: dshow_capture.h:50
#define AV_STRINGIFY(s)
Definition: macros.h:36
#define class
Definition: math.h:25
static int ref[MAX_W *MAX_W]
Definition: jpeg2000dwt.c:107
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a it should return
#define InterlockedIncrement(x)
Definition: windows2linux.h:62

Definition at line 94 of file dshow_capture.h.

Referenced by DECLARE_QUERYINTERFACE().

#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); \
}
#define dshowdebug(...)
Definition: dshow_capture.h:50
#define InterlockedDecrement(x)
Definition: windows2linux.h:63
if(ret)
#define AV_STRINGIFY(s)
Definition: macros.h:36
#define class
Definition: math.h:25
static int ref[MAX_W *MAX_W]
Definition: jpeg2000dwt.c:107
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a it should return

Definition at line 101 of file dshow_capture.h.

Referenced by DECLARE_QUERYINTERFACE().

#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 dshowdebug(...)
Definition: dshow_capture.h:50
if(ret)
#define AV_STRINGIFY(s)
Definition: macros.h:36
int(* func)(AVBPrint *dst, const char *in, const char *arg)
Definition: jacosubdec.c:67

Definition at line 112 of file dshow_capture.h.

Referenced by libAVEnumMediaTypes_Setup(), libAVEnumPins_Cleanup(), libAVFilter_Cleanup(), and libAVPin_Free().

#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; \
class##_Destroy(this); \
dshowdebug("could not create "AV_STRINGIFY(class)"\n"); \
}
#define NULL
Definition: coverity.c:32
#define dshowdebug(...)
Definition: dshow_capture.h:50
#define fail()
Definition: checkasm.h:122
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
if(ret)
#define AV_STRINGIFY(s)
Definition: macros.h:36
#define class
Definition: math.h:25
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a it should return

Definition at line 123 of file dshow_capture.h.

Referenced by libAVEnumMediaTypes_Setup(), libAVEnumPins_Cleanup(), libAVFilter_Cleanup(), and libAVPin_Free().

#define SETVTBL (   vtbl,
  class,
  fn 
)    do { (vtbl)->fn = (void *) class##_##fn; } while(0)

Typedef Documentation

Definition at line 152 of file dshow_capture.h.

Enumeration Type Documentation

Enumerator
VideoDevice 
AudioDevice 

Definition at line 61 of file dshow_capture.h.

Enumerator
VideoSourceDevice 
AudioSourceDevice 

Definition at line 66 of file dshow_capture.h.

Function Documentation

long ff_copy_dshow_media_type ( AM_MEDIA_TYPE *  dst,
const AM_MEDIA_TYPE *  src 
)
void ff_print_VIDEO_STREAM_CONFIG_CAPS ( const VIDEO_STREAM_CONFIG_CAPS *  caps)

Definition at line 85 of file dshow_common.c.

Referenced by dshow_cycle_formats().

void ff_print_AUDIO_STREAM_CONFIG_CAPS ( const AUDIO_STREAM_CONFIG_CAPS *  caps)

Definition at line 115 of file dshow_common.c.

Referenced by dshow_cycle_formats().

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_printGUID ( const GUID g)
static void nothing ( void foo)
inlinestatic

Definition at line 52 of file dshow_capture.h.

Referenced by libAVEnumMediaTypes_Setup().

long WINAPI libAVPin_QueryInterface ( libAVPin ,
const GUID ,
void **   
)
unsigned long WINAPI libAVPin_AddRef ( libAVPin )
unsigned long WINAPI libAVPin_Release ( libAVPin )
long WINAPI libAVPin_Connect ( libAVPin ,
IPin *  ,
const AM_MEDIA_TYPE *   
)

Referenced by DECLARE_QUERYINTERFACE().

long WINAPI libAVPin_ReceiveConnection ( libAVPin ,
IPin *  ,
const AM_MEDIA_TYPE *   
)

Definition at line 40 of file dshow_pin.c.

long WINAPI libAVPin_Disconnect ( libAVPin )

Definition at line 68 of file dshow_pin.c.

long WINAPI libAVPin_ConnectedTo ( libAVPin ,
IPin **   
)

Definition at line 82 of file dshow_pin.c.

long WINAPI libAVPin_ConnectionMediaType ( libAVPin ,
AM_MEDIA_TYPE *   
)

Definition at line 96 of file dshow_pin.c.

Referenced by dshow_add_device().

long WINAPI libAVPin_QueryPinInfo ( libAVPin ,
PIN_INFO *   
)

Definition at line 108 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_QueryAccept ( libAVPin ,
const AM_MEDIA_TYPE *   
)

Definition at line 146 of file dshow_pin.c.

long WINAPI libAVPin_EnumMediaTypes ( libAVPin ,
IEnumMediaTypes **   
)

Definition at line 152 of file dshow_pin.c.

long WINAPI libAVPin_QueryInternalConnections ( libAVPin ,
IPin **  ,
unsigned long *   
)

Definition at line 168 of file dshow_pin.c.

long WINAPI libAVPin_EndOfStream ( libAVPin )

Definition at line 175 of file dshow_pin.c.

long WINAPI libAVPin_BeginFlush ( libAVPin )

Definition at line 182 of file dshow_pin.c.

long WINAPI libAVPin_EndFlush ( libAVPin )

Definition at line 189 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 libAVMemInputPin_QueryInterface ( libAVMemInputPin ,
const GUID ,
void **   
)

Definition at line 271 of file dshow_pin.c.

unsigned long WINAPI libAVMemInputPin_AddRef ( libAVMemInputPin )

Definition at line 279 of file dshow_pin.c.

unsigned long WINAPI libAVMemInputPin_Release ( libAVMemInputPin )

Definition at line 286 of file dshow_pin.c.

long WINAPI libAVMemInputPin_GetAllocator ( libAVMemInputPin ,
IMemAllocator **   
)

Definition at line 293 of file dshow_pin.c.

long WINAPI libAVMemInputPin_NotifyAllocator ( libAVMemInputPin ,
IMemAllocator *  ,
BOOL   
)

Definition at line 299 of file dshow_pin.c.

long WINAPI libAVMemInputPin_GetAllocatorRequirements ( libAVMemInputPin ,
ALLOCATOR_PROPERTIES *   
)

Definition at line 306 of file dshow_pin.c.

long WINAPI libAVMemInputPin_Receive ( libAVMemInputPin ,
IMediaSample *   
)

Definition at line 313 of file dshow_pin.c.

Referenced by libAVMemInputPin_ReceiveMultiple().

long WINAPI libAVMemInputPin_ReceiveMultiple ( libAVMemInputPin ,
IMediaSample **  ,
long  ,
long *   
)

Definition at line 370 of file dshow_pin.c.

long WINAPI libAVMemInputPin_ReceiveCanBlock ( libAVMemInputPin )

Definition at line 383 of file dshow_pin.c.

void libAVPin_Destroy ( libAVPin )
libAVPin* libAVPin_Create ( libAVFilter filter)

Referenced by libAVFilter_Setup().

void libAVMemInputPin_Destroy ( libAVMemInputPin )

Definition at line 391 of file dshow_pin.c.

long WINAPI libAVEnumPins_QueryInterface ( libAVEnumPins ,
const GUID ,
void **   
)
unsigned long WINAPI libAVEnumPins_AddRef ( libAVEnumPins )
unsigned long WINAPI libAVEnumPins_Release ( libAVEnumPins )
long WINAPI libAVEnumPins_Next ( libAVEnumPins ,
unsigned  long,
IPin **  ,
unsigned long *   
)

Referenced by DECLARE_QUERYINTERFACE().

long WINAPI libAVEnumPins_Skip ( libAVEnumPins ,
unsigned  long 
)

Definition at line 50 of file dshow_enumpins.c.

long WINAPI libAVEnumPins_Reset ( libAVEnumPins )

Definition at line 58 of file dshow_enumpins.c.

long WINAPI libAVEnumPins_Clone ( libAVEnumPins ,
libAVEnumPins **   
)

Definition at line 65 of file dshow_enumpins.c.

void libAVEnumPins_Destroy ( libAVEnumPins )
libAVEnumPins* libAVEnumPins_Create ( libAVPin pin,
libAVFilter filter 
)
long WINAPI libAVEnumMediaTypes_QueryInterface ( libAVEnumMediaTypes ,
const GUID ,
void **   
)
unsigned long WINAPI libAVEnumMediaTypes_AddRef ( libAVEnumMediaTypes )
unsigned long WINAPI libAVEnumMediaTypes_Release ( libAVEnumMediaTypes )
long WINAPI libAVEnumMediaTypes_Next ( libAVEnumMediaTypes ,
unsigned  long,
AM_MEDIA_TYPE **  ,
unsigned long *   
)

Referenced by DECLARE_QUERYINTERFACE().

long WINAPI libAVEnumMediaTypes_Skip ( libAVEnumMediaTypes ,
unsigned  long 
)

Definition at line 55 of file dshow_enummediatypes.c.

long WINAPI libAVEnumMediaTypes_Reset ( libAVEnumMediaTypes )

Definition at line 63 of file dshow_enummediatypes.c.

long WINAPI libAVEnumMediaTypes_Clone ( libAVEnumMediaTypes ,
libAVEnumMediaTypes **   
)

Definition at line 70 of file dshow_enummediatypes.c.

void libAVEnumMediaTypes_Destroy ( libAVEnumMediaTypes )
libAVEnumMediaTypes* libAVEnumMediaTypes_Create ( const AM_MEDIA_TYPE *  type)
long WINAPI libAVFilter_QueryInterface ( libAVFilter ,
const GUID ,
void **   
)
unsigned long WINAPI libAVFilter_AddRef ( libAVFilter )
unsigned long WINAPI libAVFilter_Release ( libAVFilter )
long WINAPI libAVFilter_GetClassID ( libAVFilter ,
CLSID  
)

Referenced by DECLARE_QUERYINTERFACE().

long WINAPI libAVFilter_Stop ( libAVFilter )

Definition at line 37 of file dshow_filter.c.

long WINAPI libAVFilter_Pause ( libAVFilter )

Definition at line 44 of file dshow_filter.c.

long WINAPI libAVFilter_Run ( libAVFilter ,
REFERENCE_TIME   
)

Definition at line 51 of file dshow_filter.c.

long WINAPI libAVFilter_GetState ( libAVFilter ,
DWORD  ,
FILTER_STATE *   
)

Definition at line 59 of file dshow_filter.c.

long WINAPI libAVFilter_SetSyncSource ( libAVFilter ,
IReferenceClock *   
)

Definition at line 68 of file dshow_filter.c.

long WINAPI libAVFilter_GetSyncSource ( libAVFilter ,
IReferenceClock **   
)

Definition at line 83 of file dshow_filter.c.

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_QueryFilterInfo ( libAVFilter ,
FILTER_INFO *   
)

Definition at line 129 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_QueryVendorInfo ( libAVFilter ,
wchar_t **   
)

Definition at line 154 of file dshow_filter.c.

void libAVFilter_Destroy ( libAVFilter )
libAVFilter* libAVFilter_Create ( void ,
void ,
enum  dshowDeviceType 
)

Referenced by dshow_open_device().

HRESULT dshow_try_setup_crossbar_options ( ICaptureGraphBuilder2 *  graph_builder2,
IBaseFilter *  device_filter,
enum dshowDeviceType  devtype,
AVFormatContext avctx 
)

Given a fully constructed graph, check if there is a cross bar filter, and configure its pins if so.

Definition at line 140 of file dshow_crossbar.c.

Referenced by dshow_open_device().

void dshow_show_filter_properties ( IBaseFilter *  pFilter,
AVFormatContext avctx 
)

Pops up a user dialog allowing them to adjust properties for the given filter, if possible.

Definition at line 513 of file dshow.c.

Referenced by dshow_cycle_pins(), and dshow_try_setup_crossbar_options().

Variable Documentation

const AVClass* ff_dshow_context_class_ptr

Definition at line 60 of file dshow_common.c.