ReactOS  0.4.15-dev-1377-ga59cecd
qcap_main.h File Reference
#include "wine/strmbase.h"
Include dependency graph for qcap_main.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Enumerations

enum  YUV_Format {
  YUVP_421, YUVP_422, YUVP_441, YUVP_444,
  ENDPLANAR, YUYV, UYVY, UYYVYY
}
 

Functions

DWORD ObjectRefCount (BOOL increment) DECLSPEC_HIDDEN
 
IUnknown *WINAPI QCAP_createAudioCaptureFilter (IUnknown *pUnkOuter, HRESULT *phr) DECLSPEC_HIDDEN
 
IUnknown *WINAPI QCAP_createAVICompressor (IUnknown *pUnkOuter, HRESULT *phr) DECLSPEC_HIDDEN
 
IUnknown *WINAPI QCAP_createVFWCaptureFilter (IUnknown *pUnkOuter, HRESULT *phr) DECLSPEC_HIDDEN
 
IUnknown *WINAPI QCAP_createVFWCaptureFilterPropertyPage (IUnknown *pUnkOuter, HRESULT *phr) DECLSPEC_HIDDEN
 
IUnknown *WINAPI QCAP_createAVIMux (IUnknown *pUnkOuter, HRESULT *phr) DECLSPEC_HIDDEN
 
IUnknown *WINAPI QCAP_createAVIMuxPropertyPage (IUnknown *pUnkOuter, HRESULT *phr) DECLSPEC_HIDDEN
 
IUnknown *WINAPI QCAP_createAVIMuxPropertyPage1 (IUnknown *pUnkOuter, HRESULT *phr) DECLSPEC_HIDDEN
 
IUnknown *WINAPI QCAP_createFileWriter (IUnknown *pUnkOuter, HRESULT *phr) DECLSPEC_HIDDEN
 
IUnknown *WINAPI QCAP_createCaptureGraphBuilder2 (IUnknown *pUnkOuter, HRESULT *phr) DECLSPEC_HIDDEN
 
IUnknown *WINAPI QCAP_createInfinitePinTeeFilter (IUnknown *pUnkOuter, HRESULT *phr) DECLSPEC_HIDDEN
 
IUnknown *WINAPI QCAP_createSmartTeeFilter (IUnknown *pUnkOuter, HRESULT *phr) DECLSPEC_HIDDEN
 
IUnknown *WINAPI QCAP_createAudioInputMixerPropertyPage (IUnknown *pUnkOuter, HRESULT *phr) DECLSPEC_HIDDEN
 
void dump_AM_MEDIA_TYPE (const AM_MEDIA_TYPE *pmt) DECLSPEC_HIDDEN
 
void YUV_Init (void) DECLSPEC_HIDDEN
 
void YUV_To_RGB24 (enum YUV_Format format, unsigned char *target, const unsigned char *source, int width, int height) DECLSPEC_HIDDEN
 

Enumeration Type Documentation

◆ YUV_Format

Enumerator
YUVP_421 
YUVP_422 
YUVP_441 
YUVP_444 
ENDPLANAR 
YUYV 
UYVY 
UYYVYY 

Definition at line 43 of file qcap_main.h.

43  {
44  /* Last 2 numbers give the skip info, the smaller they are the better
45  * Planar:
46  * HSKIP : VSKIP */
47  YUVP_421, /* 2 : 1 */
48  YUVP_422, /* 2 : 2 */
49  YUVP_441, /* 4 : 1 */
50  YUVP_444, /* 4 : 4 */
51  ENDPLANAR, /* No format, just last planar item so we can check on it */
52 
53  /* Non-planar */
54  YUYV, /* Order: YUYV (Guess why it's named like that) */
55  UYVY, /* Order: UYVY (Looks like someone got bored and swapped the Y's) */
56  UYYVYY, /* YUV411 linux style, perhaps YUV420 is YYUYYV? */
57 };
Definition: qcap_main.h:54
Definition: qcap_main.h:55

Function Documentation

◆ dump_AM_MEDIA_TYPE()

void dump_AM_MEDIA_TYPE ( const AM_MEDIA_TYPE pmt)

Definition at line 38 of file enummedia.c.

39 {
40  if (!pmt)
41  return;
42  TRACE("\t%s\n\t%s\n\t...\n\t%s\n", debugstr_guid(&pmt->majortype),
43  debugstr_guid(&pmt->subtype), debugstr_guid(&pmt->formattype));
44 }
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4

◆ ObjectRefCount()

DWORD ObjectRefCount ( BOOL  increment)

Definition at line 193 of file qcap_main.c.

194 {
195  if (increment)
198 }
static LONG objects_ref
Definition: qcap_main.c:44
#define InterlockedDecrement
Definition: armddk.h:52
#define InterlockedIncrement
Definition: armddk.h:53

Referenced by AviMux_Release(), fnCaptureGraphBuilder2_Release(), QCAP_createAVIMux(), QCAP_createCaptureGraphBuilder2(), QCAP_createVFWCaptureFilter(), unknown_inner_Release(), VfwPin_Construct(), and VfwPin_Release().

◆ QCAP_createAudioCaptureFilter()

IUnknown* WINAPI QCAP_createAudioCaptureFilter ( IUnknown pUnkOuter,
HRESULT phr 
)

Definition at line 270 of file audiorecord.c.

271 {
272  HRESULT hr;
273  AudioRecord *This = NULL;
274 
275  FIXME("(%p, %p): the entire CLSID_AudioRecord implementation is just stubs\n", outer, phr);
276 
277  This = CoTaskMemAlloc(sizeof(*This));
278  if (This == NULL) {
279  hr = E_OUTOFMEMORY;
280  goto end;
281  }
282  memset(This, 0, sizeof(*This));
283  This->IUnknown_iface.lpVtbl = &UnknownVtbl;
284  This->IPersistPropertyBag_iface.lpVtbl = &PersistPropertyBagVtbl;
285  if (outer)
286  This->outerUnknown = outer;
287  else
288  This->outerUnknown = &This->IUnknown_iface;
289 
290  hr = BaseFilter_Init(&This->filter, &AudioRecordVtbl, &CLSID_AudioRecord,
291  (DWORD_PTR)(__FILE__ ": AudioRecord.csFilter"), &AudioRecordFuncs);
292 
293 end:
294  *phr = hr;
295  if (SUCCEEDED(hr)) {
296  return (IUnknown*)&This->filter.IBaseFilter_iface;
297  } else {
298  if (This)
299  IBaseFilter_Release(&This->filter.IBaseFilter_iface);
300  return NULL;
301  }
302 }
HRESULT hr
Definition: shlfolder.c:183
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
if SUCCEEDED(hr)
#define FIXME(fmt,...)
Definition: debug.h:111
static const IPersistPropertyBagVtbl PersistPropertyBagVtbl
Definition: audiorecord.c:259
static const IBaseFilterVtbl AudioRecordVtbl
Definition: audiorecord.c:162
LONG HRESULT
Definition: typedefs.h:79
static const IUnknownVtbl UnknownVtbl
Definition: audiorecord.c:110
GLuint GLuint end
Definition: gl.h:1545
static const BaseFilterFuncTable AudioRecordFuncs
Definition: audiorecord.c:194
uint32_t DWORD_PTR
Definition: typedefs.h:65
#define NULL
Definition: types.h:112
HRESULT WINAPI BaseFilter_Init(BaseFilter *This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable *pBaseFuncsTable)
Definition: filter.c:196
#define memset(x, y, z)
Definition: compat.h:39
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426

◆ QCAP_createAudioInputMixerPropertyPage()

IUnknown* WINAPI QCAP_createAudioInputMixerPropertyPage ( IUnknown pUnkOuter,
HRESULT phr 
)

◆ QCAP_createAVICompressor()

IUnknown* WINAPI QCAP_createAVICompressor ( IUnknown pUnkOuter,
HRESULT phr 
)

Definition at line 698 of file avico.c.

699 {
700  PIN_INFO in_pin_info = {NULL, PINDIR_INPUT, {'I','n','p','u','t',0}};
701  PIN_INFO out_pin_info = {NULL, PINDIR_OUTPUT, {'O','u','t','p','u','t',0}};
702  AVICompressor *compressor;
703  HRESULT hres;
704 
705  TRACE("\n");
706 
707  compressor = heap_alloc_zero(sizeof(*compressor));
708  if(!compressor) {
709  *phr = E_NOINTERFACE;
710  return NULL;
711  }
712 
713  BaseFilter_Init(&compressor->filter, &AVICompressorVtbl, &CLSID_AVICo,
714  (DWORD_PTR)(__FILE__ ": AVICompressor.csFilter"), &filter_func_table);
715 
717 
718  in_pin_info.pFilter = &compressor->filter.IBaseFilter_iface;
720  &AVICompressorBaseInputPinVtbl, &compressor->filter.csFilter, NULL, (IPin**)&compressor->in);
721  if(FAILED(hres)) {
722  IBaseFilter_Release(&compressor->filter.IBaseFilter_iface);
723  *phr = hres;
724  return NULL;
725  }
726 
727  out_pin_info.pFilter = &compressor->filter.IBaseFilter_iface;
729  &AVICompressorBaseOutputPinVtbl, &compressor->filter.csFilter, (IPin**)&compressor->out);
730  if(FAILED(hres)) {
731  IBaseFilter_Release(&compressor->filter.IBaseFilter_iface);
732  *phr = hres;
733  return NULL;
734  }
735 
736  *phr = S_OK;
737  return (IUnknown*)&compressor->filter.IBaseFilter_iface;
738 }
static const BaseInputPinFuncTable AVICompressorBaseInputPinVtbl
Definition: avico.c:581
#define E_NOINTERFACE
Definition: winerror.h:2364
static const IBaseFilterVtbl AVICompressorVtbl
Definition: avico.c:235
static const IPinVtbl AVICompressorOutputPinVtbl
Definition: avico.c:608
HRESULT BaseInputPin_Construct(const IPinVtbl *InputPin_Vtbl, LONG inputpin_size, const PIN_INFO *pPinInfo, const BaseInputPinFuncTable *pBaseInputFuncsTable, LPCRITICAL_SECTION pCritSec, IMemAllocator *, IPin **ppPin)
Definition: pin.c:1189
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:79
BaseFilter filter
Definition: avico.c:37
IBaseFilter IBaseFilter_iface
Definition: strmbase.h:163
static const IPersistPropertyBagVtbl PersistPropertyBagVtbl
Definition: avico.c:367
CRITICAL_SECTION csFilter
Definition: strmbase.h:165
static const BaseFilterFuncTable filter_func_table
Definition: avico.c:281
uint32_t DWORD_PTR
Definition: typedefs.h:65
BaseInputPin * in
Definition: avico.c:40
static const IPinVtbl AVICompressorInputPinVtbl
Definition: avico.c:435
#define S_OK
Definition: intsafe.h:51
Definition: axcore.idl:91
#define NULL
Definition: types.h:112
IPersistPropertyBag IPersistPropertyBag_iface
Definition: avico.c:38
HRESULT WINAPI BaseOutputPin_Construct(const IPinVtbl *OutputPin_Vtbl, LONG outputpin_size, const PIN_INFO *pPinInfo, const BaseOutputPinFuncTable *pBaseOutputFuncsTable, LPCRITICAL_SECTION pCritSec, IPin **ppPin)
Definition: pin.c:791
HRESULT WINAPI BaseFilter_Init(BaseFilter *This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable *pBaseFuncsTable)
Definition: filter.c:196
static const BaseOutputPinFuncTable AVICompressorBaseOutputPinVtbl
Definition: avico.c:686
BaseOutputPin * out
Definition: avico.c:41

◆ QCAP_createAVIMux()

IUnknown* WINAPI QCAP_createAVIMux ( IUnknown pUnkOuter,
HRESULT phr 
)

Definition at line 2362 of file avimux.c.

2363 {
2364  static const WCHAR output_name[] = {'A','V','I',' ','O','u','t',0};
2365 
2366  AviMux *avimux;
2367  PIN_INFO info;
2368  HRESULT hr;
2369 
2370  TRACE("(%p)\n", pUnkOuter);
2371 
2372  if(pUnkOuter) {
2373  *phr = CLASS_E_NOAGGREGATION;
2374  return NULL;
2375  }
2376 
2377  avimux = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(AviMux));
2378  if(!avimux) {
2379  *phr = E_OUTOFMEMORY;
2380  return NULL;
2381  }
2382 
2383  BaseFilter_Init(&avimux->filter, &AviMuxVtbl, &CLSID_AviDest,
2384  (DWORD_PTR)(__FILE__ ": AviMux.csFilter"), &filter_func_table);
2385  avimux->IConfigAviMux_iface.lpVtbl = &ConfigAviMuxVtbl;
2387  avimux->IMediaSeeking_iface.lpVtbl = &MediaSeekingVtbl;
2390 
2391  info.dir = PINDIR_OUTPUT;
2392  info.pFilter = &avimux->filter.IBaseFilter_iface;
2393  lstrcpyW(info.achName, output_name);
2395  &AviMuxOut_BaseOutputFuncTable, &avimux->filter.csFilter, (IPin**)&avimux->out);
2396  if(FAILED(hr)) {
2398  HeapFree(GetProcessHeap(), 0, avimux);
2399  *phr = hr;
2400  return NULL;
2401  }
2403  avimux->out->cur_stream = 0;
2404  avimux->out->cur_time = 0;
2405  avimux->out->stream = NULL;
2406 
2407  hr = create_input_pin(avimux);
2408  if(FAILED(hr)) {
2411  HeapFree(GetProcessHeap(), 0, avimux);
2412  *phr = hr;
2413  return NULL;
2414  }
2415 
2416  avimux->interleave = 10000000;
2417 
2419  *phr = S_OK;
2420  return (IUnknown*)&avimux->filter.IBaseFilter_iface;
2421 }
static const BaseOutputPinFuncTable AviMuxOut_BaseOutputFuncTable
Definition: avimux.c:1308
AviMuxOut * out
Definition: avimux.c:108
IStream * stream
Definition: avimux.c:55
HRESULT hr
Definition: shlfolder.c:183
#define TRUE
Definition: types.h:120
static HRESULT create_input_pin(AviMux *)
Definition: avimux.c:2310
IPin IPin_iface
Definition: strmbase.h:35
BaseOutputPin pin
Definition: avimux.c:43
static const IPersistMediaPropertyBagVtbl PersistMediaPropertyBagVtbl
Definition: avimux.c:1185
IPersistMediaPropertyBag IPersistMediaPropertyBag_iface
Definition: avimux.c:101
Definition: avimux.c:96
IMediaSeeking IMediaSeeking_iface
Definition: avimux.c:100
int cur_stream
Definition: avimux.c:46
ULONG WINAPI BaseFilterImpl_Release(IBaseFilter *iface)
Definition: filter.c:64
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static const IQualityControlVtbl AviMuxOut_QualityControlVtbl
Definition: avimux.c:1564
LONGLONG cur_time
Definition: avimux.c:47
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static const BaseFilterFuncTable filter_func_table
Definition: avimux.c:151
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:79
ULONG WINAPI BaseOutputPinImpl_Release(IPin *iface)
Definition: pin.c:392
BasePin pin
Definition: strmbase.h:66
BaseFilter filter
Definition: avimux.c:97
struct _test_info info[]
Definition: SetCursorPos.c:19
static const ISpecifyPropertyPagesVtbl SpecifyPropertyPagesVtbl
Definition: avimux.c:1227
IQualityControl IQualityControl_iface
Definition: avimux.c:44
IBaseFilter IBaseFilter_iface
Definition: strmbase.h:163
CRITICAL_SECTION csFilter
Definition: strmbase.h:165
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:2662
uint32_t DWORD_PTR
Definition: typedefs.h:65
IConfigInterleaving IConfigInterleaving_iface
Definition: avimux.c:99
#define S_OK
Definition: intsafe.h:51
#define lstrcpyW
Definition: compat.h:608
DWORD ObjectRefCount(BOOL increment)
Definition: qcap_main.c:193
Definition: axcore.idl:91
#define NULL
Definition: types.h:112
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
IConfigAviMux IConfigAviMux_iface
Definition: avimux.c:98
static const IBaseFilterVtbl AviMuxVtbl
Definition: avimux.c:780
static const IMediaSeekingVtbl MediaSeekingVtbl
Definition: avimux.c:1108
static const IPinVtbl AviMuxOut_PinVtbl
Definition: avimux.c:1499
HRESULT WINAPI BaseOutputPin_Construct(const IPinVtbl *OutputPin_Vtbl, LONG outputpin_size, const PIN_INFO *pPinInfo, const BaseOutputPinFuncTable *pBaseOutputFuncsTable, LPCRITICAL_SECTION pCritSec, IPin **ppPin)
Definition: pin.c:791
HRESULT WINAPI BaseFilter_Init(BaseFilter *This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable *pBaseFuncsTable)
Definition: filter.c:196
static const IConfigAviMuxVtbl ConfigAviMuxVtbl
Definition: avimux.c:852
REFERENCE_TIME interleave
Definition: avimux.c:105
ISpecifyPropertyPages ISpecifyPropertyPages_iface
Definition: avimux.c:102
#define HeapFree(x, y, z)
Definition: compat.h:594
static const IConfigInterleavingVtbl ConfigInterleavingVtbl
Definition: avimux.c:940

◆ QCAP_createAVIMuxPropertyPage()

IUnknown* WINAPI QCAP_createAVIMuxPropertyPage ( IUnknown pUnkOuter,
HRESULT phr 
)

◆ QCAP_createAVIMuxPropertyPage1()

IUnknown* WINAPI QCAP_createAVIMuxPropertyPage1 ( IUnknown pUnkOuter,
HRESULT phr 
)

◆ QCAP_createCaptureGraphBuilder2()

IUnknown* WINAPI QCAP_createCaptureGraphBuilder2 ( IUnknown pUnkOuter,
HRESULT phr 
)

Definition at line 77 of file capturegraph.c.

79 {
80  CaptureGraphImpl * pCapture = NULL;
81 
82  TRACE("(%p, %p)\n", pUnkOuter, phr);
83 
84  *phr = CLASS_E_NOAGGREGATION;
85  if (pUnkOuter)
86  {
87  return NULL;
88  }
89  *phr = E_OUTOFMEMORY;
90 
91  pCapture = CoTaskMemAlloc(sizeof(CaptureGraphImpl));
92  if (pCapture)
93  {
94  pCapture->ICaptureGraphBuilder2_iface.lpVtbl = &builder2_Vtbl;
95  pCapture->ICaptureGraphBuilder_iface.lpVtbl = &builder_Vtbl;
96  pCapture->ref = 1;
97  pCapture->mygraph = NULL;
99  pCapture->csFilter.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": CaptureGraphImpl.csFilter");
100  *phr = S_OK;
102  }
103  return (IUnknown *)&pCapture->ICaptureGraphBuilder_iface;
104 }
#define DWORD_PTR
Definition: treelist.c:76
ICaptureGraphBuilder ICaptureGraphBuilder_iface
Definition: capturegraph.c:57
#define TRUE
Definition: types.h:120
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
CRITICAL_SECTION csFilter
Definition: capturegraph.c:60
ICaptureGraphBuilder2 ICaptureGraphBuilder2_iface
Definition: capturegraph.c:56
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:751
#define TRACE(s)
Definition: solgame.cpp:4
PCRITICAL_SECTION_DEBUG DebugInfo
Definition: winbase.h:872
static const ICaptureGraphBuilder2Vtbl builder2_Vtbl
Definition: capturegraph.c:64
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:2662
#define S_OK
Definition: intsafe.h:51
DWORD ObjectRefCount(BOOL increment)
Definition: qcap_main.c:193
#define NULL
Definition: types.h:112
static const ICaptureGraphBuilderVtbl builder_Vtbl
Definition: capturegraph.c:63
IGraphBuilder * mygraph
Definition: capturegraph.c:59
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426
DWORD_PTR Spare[8/sizeof(DWORD_PTR)]
Definition: winbase.h:865

◆ QCAP_createFileWriter()

IUnknown* WINAPI QCAP_createFileWriter ( IUnknown pUnkOuter,
HRESULT phr 
)

◆ QCAP_createInfinitePinTeeFilter()

IUnknown* WINAPI QCAP_createInfinitePinTeeFilter ( IUnknown pUnkOuter,
HRESULT phr 
)

◆ QCAP_createSmartTeeFilter()

IUnknown* WINAPI QCAP_createSmartTeeFilter ( IUnknown pUnkOuter,
HRESULT phr 
)

Definition at line 640 of file smartteefilter.c.

641 {
642  PIN_INFO inputPinInfo = {NULL, PINDIR_INPUT, {'I','n','p','u','t',0}};
643  PIN_INFO capturePinInfo = {NULL, PINDIR_OUTPUT, {'C','a','p','t','u','r','e',0}};
644  PIN_INFO previewPinInfo = {NULL, PINDIR_OUTPUT, {'P','r','e','v','i','e','w',0}};
645  HRESULT hr;
647 
648  TRACE("(%p, %p)\n", outer, phr);
649 
650  This = CoTaskMemAlloc(sizeof(*This));
651  if (This == NULL) {
652  hr = E_OUTOFMEMORY;
653  goto end;
654  }
655  memset(This, 0, sizeof(*This));
656  This->IUnknown_iface.lpVtbl = &UnknownVtbl;
657  if (outer)
658  This->outerUnknown = outer;
659  else
660  This->outerUnknown = &This->IUnknown_iface;
661 
662  BaseFilter_Init(&This->filter, &SmartTeeFilterVtbl, &CLSID_SmartTee,
663  (DWORD_PTR)(__FILE__ ": SmartTeeFilter.csFilter"), &SmartTeeFilterFuncs);
664 
665  inputPinInfo.pFilter = &This->filter.IBaseFilter_iface;
667  &SmartTeeFilterInputFuncs, &This->filter.csFilter, NULL, (IPin**)&This->input);
668  if (FAILED(hr))
669  goto end;
670  hr = CoCreateInstance(&CLSID_MemoryAllocator, NULL, CLSCTX_INPROC_SERVER,
671  &IID_IMemAllocator, (void**)&This->input->pAllocator);
672  if (FAILED(hr))
673  goto end;
674 
675  capturePinInfo.pFilter = &This->filter.IBaseFilter_iface;
677  &SmartTeeFilterCaptureFuncs, &This->filter.csFilter, (IPin**)&This->capture);
678  if (FAILED(hr))
679  goto end;
680 
681  previewPinInfo.pFilter = &This->filter.IBaseFilter_iface;
683  &SmartTeeFilterPreviewFuncs, &This->filter.csFilter, (IPin**)&This->preview);
684 
685 end:
686  *phr = hr;
687  if (SUCCEEDED(hr)) {
688  if (outer)
689  return &This->IUnknown_iface;
690  else
691  return (IUnknown*)&This->filter.IBaseFilter_iface;
692  } else {
693  if (This)
694  IBaseFilter_Release(&This->filter.IBaseFilter_iface);
695  return NULL;
696  }
697 }
static const IBaseFilterVtbl SmartTeeFilterVtbl
static const IPinVtbl SmartTeeFilterPreviewVtbl
HRESULT hr
Definition: shlfolder.c:183
static const BaseInputPinFuncTable SmartTeeFilterInputFuncs
static const IPinVtbl SmartTeeFilterInputVtbl
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
if SUCCEEDED(hr)
static const IPinVtbl SmartTeeFilterCaptureVtbl
HRESULT BaseInputPin_Construct(const IPinVtbl *InputPin_Vtbl, LONG inputpin_size, const PIN_INFO *pPinInfo, const BaseInputPinFuncTable *pBaseInputFuncsTable, LPCRITICAL_SECTION pCritSec, IMemAllocator *, IPin **ppPin)
Definition: pin.c:1189
#define TRACE(s)
Definition: solgame.cpp:4
static const BaseOutputPinFuncTable SmartTeeFilterPreviewFuncs
LONG HRESULT
Definition: typedefs.h:79
GLuint GLuint end
Definition: gl.h:1545
static const IUnknownVtbl UnknownVtbl
uint32_t DWORD_PTR
Definition: typedefs.h:65
static const BaseOutputPinFuncTable SmartTeeFilterCaptureFuncs
static const BaseFilterFuncTable SmartTeeFilterFuncs
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
Definition: axcore.idl:91
#define NULL
Definition: types.h:112
HRESULT WINAPI BaseOutputPin_Construct(const IPinVtbl *OutputPin_Vtbl, LONG outputpin_size, const PIN_INFO *pPinInfo, const BaseOutputPinFuncTable *pBaseOutputFuncsTable, LPCRITICAL_SECTION pCritSec, IPin **ppPin)
Definition: pin.c:791
HRESULT WINAPI BaseFilter_Init(BaseFilter *This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable *pBaseFuncsTable)
Definition: filter.c:196
#define memset(x, y, z)
Definition: compat.h:39
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426

◆ QCAP_createVFWCaptureFilter()

IUnknown* WINAPI QCAP_createVFWCaptureFilter ( IUnknown pUnkOuter,
HRESULT phr 
)

Definition at line 216 of file vfwcapture.c.

217 {
218  VfwCapture *pVfwCapture;
219  HRESULT hr;
220 
221  TRACE("%p - %p\n", pUnkOuter, phr);
222 
223  *phr = E_OUTOFMEMORY;
224  pVfwCapture = CoTaskMemAlloc( sizeof(VfwCapture) );
225  if (!pVfwCapture)
226  return NULL;
227 
228  BaseFilter_Init(&pVfwCapture->filter, &VfwCapture_Vtbl, &CLSID_VfwCapture, (DWORD_PTR)(__FILE__ ": VfwCapture.csFilter"), &BaseFuncTable);
229 
230  pVfwCapture->IUnknown_inner.lpVtbl = &unknown_inner_vtbl;
231  pVfwCapture->IAMStreamConfig_iface.lpVtbl = &IAMStreamConfig_VTable;
232  pVfwCapture->IAMVideoProcAmp_iface.lpVtbl = &IAMVideoProcAmp_VTable;
234  pVfwCapture->init = FALSE;
235 
236  if (pUnkOuter)
237  pVfwCapture->outer_unk = pUnkOuter;
238  else
239  pVfwCapture->outer_unk = &pVfwCapture->IUnknown_inner;
240 
242  &pVfwCapture->filter.csFilter, &pVfwCapture->pOutputPin);
243  if (FAILED(hr))
244  {
245  CoTaskMemFree(pVfwCapture);
246  return NULL;
247  }
248  TRACE("-- created at %p\n", pVfwCapture);
249 
251  *phr = S_OK;
252  return &pVfwCapture->IUnknown_inner;
253 }
static HRESULT VfwPin_Construct(IBaseFilter *, LPCRITICAL_SECTION, IPin **)
Definition: vfwcapture.c:721
static const IAMStreamConfigVtbl IAMStreamConfig_VTable
Definition: vfwcapture.c:48
IAMVideoProcAmp IAMVideoProcAmp_iface
Definition: vfwcapture.c:60
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:442
static const IPersistPropertyBagVtbl IPersistPropertyBag_VTable
Definition: vfwcapture.c:50
IPin * pOutputPin
Definition: vfwcapture.c:66
HRESULT hr
Definition: shlfolder.c:183
#define TRUE
Definition: types.h:120
IUnknown * outer_unk
Definition: vfwcapture.c:62
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define FALSE
Definition: types.h:117
static const IAMVideoProcAmpVtbl IAMVideoProcAmp_VTable
Definition: vfwcapture.c:49
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:79
BaseFilter filter
Definition: vfwcapture.c:58
IPersistPropertyBag IPersistPropertyBag_iface
Definition: vfwcapture.c:61
IUnknown IUnknown_inner
Definition: vfwcapture.c:57
IBaseFilter IBaseFilter_iface
Definition: strmbase.h:163
CRITICAL_SECTION csFilter
Definition: strmbase.h:165
uint32_t DWORD_PTR
Definition: typedefs.h:65
static const IUnknownVtbl unknown_inner_vtbl
Definition: vfwcapture.c:188
#define S_OK
Definition: intsafe.h:51
DWORD ObjectRefCount(BOOL increment)
Definition: qcap_main.c:193
#define NULL
Definition: types.h:112
HRESULT WINAPI BaseFilter_Init(BaseFilter *This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable *pBaseFuncsTable)
Definition: filter.c:196
BOOL init
Definition: vfwcapture.c:63
IAMStreamConfig IAMStreamConfig_iface
Definition: vfwcapture.c:59
static const BaseFilterFuncTable BaseFuncTable
Definition: vfwcapture.c:211
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426
static const IBaseFilterVtbl VfwCapture_Vtbl
Definition: vfwcapture.c:47

◆ QCAP_createVFWCaptureFilterPropertyPage()

IUnknown* WINAPI QCAP_createVFWCaptureFilterPropertyPage ( IUnknown pUnkOuter,
HRESULT phr 
)

◆ YUV_Init()

void YUV_Init ( void  )

◆ YUV_To_RGB24()

void YUV_To_RGB24 ( enum YUV_Format  format,
unsigned char target,
const unsigned char source,
int  width,
int  height 
)