ReactOS 0.4.15-dev-7889-g76290a6
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};
@ YUYV
Definition: qcap_main.h:54
@ UYYVYY
Definition: qcap_main.h:56
@ UYVY
Definition: qcap_main.h:55
@ YUVP_444
Definition: qcap_main.h:50
@ YUVP_441
Definition: qcap_main.h:49
@ ENDPLANAR
Definition: qcap_main.h:51
@ YUVP_422
Definition: qcap_main.h:48
@ YUVP_421
Definition: qcap_main.h:47

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}
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
static LONG objects_ref
Definition: qcap_main.c:44

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;
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) {
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
293end:
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}
static const IUnknownVtbl UnknownVtbl
Definition: audiorecord.c:110
static const BaseFilterFuncTable AudioRecordFuncs
Definition: audiorecord.c:194
static const IBaseFilterVtbl AudioRecordVtbl
Definition: audiorecord.c:162
static const IPersistPropertyBagVtbl PersistPropertyBagVtbl
Definition: audiorecord.c:259
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define NULL
Definition: types.h:112
GLuint GLuint end
Definition: gl.h:1545
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define memset(x, y, z)
Definition: compat.h:39
HRESULT hr
Definition: shlfolder.c:183
HRESULT WINAPI BaseFilter_Init(BaseFilter *This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable *pBaseFuncsTable)
Definition: filter.c:196
uint32_t DWORD_PTR
Definition: typedefs.h:65

◆ 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;
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 IPinVtbl AVICompressorOutputPinVtbl
Definition: avico.c:608
static const BaseFilterFuncTable filter_func_table
Definition: avico.c:281
static const IBaseFilterVtbl AVICompressorVtbl
Definition: avico.c:235
static const IPinVtbl AVICompressorInputPinVtbl
Definition: avico.c:435
static const IPersistPropertyBagVtbl PersistPropertyBagVtbl
Definition: avico.c:367
static const BaseOutputPinFuncTable AVICompressorBaseOutputPinVtbl
Definition: avico.c:686
static const BaseInputPinFuncTable AVICompressorBaseInputPinVtbl
Definition: avico.c:581
@ PINDIR_OUTPUT
Definition: axcore.idl:42
@ PINDIR_INPUT
Definition: axcore.idl:41
Definition: axcore.idl:92
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT hres
Definition: protocol.c:465
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
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
IPersistPropertyBag IPersistPropertyBag_iface
Definition: avico.c:38
BaseOutputPin * out
Definition: avico.c:41
BaseFilter filter
Definition: avico.c:37
BaseInputPin * in
Definition: avico.c:40
IBaseFilter IBaseFilter_iface
Definition: strmbase.h:163
CRITICAL_SECTION csFilter
Definition: strmbase.h:165
#define E_NOINTERFACE
Definition: winerror.h:2364

◆ 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 IMediaSeekingVtbl MediaSeekingVtbl
Definition: avimux.c:1108
static const IPersistMediaPropertyBagVtbl PersistMediaPropertyBagVtbl
Definition: avimux.c:1185
static const BaseFilterFuncTable filter_func_table
Definition: avimux.c:151
static const IConfigInterleavingVtbl ConfigInterleavingVtbl
Definition: avimux.c:940
static const IConfigAviMuxVtbl ConfigAviMuxVtbl
Definition: avimux.c:852
static const IQualityControlVtbl AviMuxOut_QualityControlVtbl
Definition: avimux.c:1564
static const IBaseFilterVtbl AviMuxVtbl
Definition: avimux.c:780
static const IPinVtbl AviMuxOut_PinVtbl
Definition: avimux.c:1499
static HRESULT create_input_pin(AviMux *)
Definition: avimux.c:2310
static const BaseOutputPinFuncTable AviMuxOut_BaseOutputFuncTable
Definition: avimux.c:1308
static const ISpecifyPropertyPagesVtbl SpecifyPropertyPagesVtbl
Definition: avimux.c:1227
#define TRUE
Definition: types.h:120
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define lstrcpyW
Definition: compat.h:749
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
DWORD ObjectRefCount(BOOL increment)
Definition: qcap_main.c:193
ULONG WINAPI BaseFilterImpl_Release(IBaseFilter *iface)
Definition: filter.c:64
ULONG WINAPI BaseOutputPinImpl_Release(IPin *iface)
Definition: pin.c:392
IQualityControl IQualityControl_iface
Definition: avimux.c:44
BaseOutputPin pin
Definition: avimux.c:43
IStream * stream
Definition: avimux.c:55
int cur_stream
Definition: avimux.c:46
LONGLONG cur_time
Definition: avimux.c:47
Definition: avimux.c:96
AviMuxOut * out
Definition: avimux.c:108
BaseFilter filter
Definition: avimux.c:97
IPersistMediaPropertyBag IPersistMediaPropertyBag_iface
Definition: avimux.c:101
IMediaSeeking IMediaSeeking_iface
Definition: avimux.c:100
IConfigInterleaving IConfigInterleaving_iface
Definition: avimux.c:99
ISpecifyPropertyPages ISpecifyPropertyPages_iface
Definition: avimux.c:102
IConfigAviMux IConfigAviMux_iface
Definition: avimux.c:98
REFERENCE_TIME interleave
Definition: avimux.c:105
BasePin pin
Definition: strmbase.h:66
IPin IPin_iface
Definition: strmbase.h:35
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:2662
__wchar_t WCHAR
Definition: xmlstorage.h:180

◆ 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
85 if (pUnkOuter)
86 {
87 return NULL;
88 }
89 *phr = E_OUTOFMEMORY;
90
91 pCapture = CoTaskMemAlloc(sizeof(CaptureGraphImpl));
92 if (pCapture)
93 {
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}
static const ICaptureGraphBuilder2Vtbl builder2_Vtbl
Definition: capturegraph.c:64
static const ICaptureGraphBuilderVtbl builder_Vtbl
Definition: capturegraph.c:63
CRITICAL_SECTION csFilter
Definition: capturegraph.c:60
ICaptureGraphBuilder ICaptureGraphBuilder_iface
Definition: capturegraph.c:57
ICaptureGraphBuilder2 ICaptureGraphBuilder2_iface
Definition: capturegraph.c:56
IGraphBuilder * mygraph
Definition: capturegraph.c:59
DWORD_PTR Spare[8/sizeof(DWORD_PTR)]
Definition: winbase.h:887
PCRITICAL_SECTION_DEBUG DebugInfo
Definition: winbase.h:894
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:751
#define DWORD_PTR
Definition: treelist.c:76

◆ 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) {
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
685end:
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}
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
static const BaseOutputPinFuncTable SmartTeeFilterPreviewFuncs
static const IPinVtbl SmartTeeFilterCaptureVtbl
static const IPinVtbl SmartTeeFilterInputVtbl
static const IUnknownVtbl UnknownVtbl
static const BaseOutputPinFuncTable SmartTeeFilterCaptureFuncs
static const BaseInputPinFuncTable SmartTeeFilterInputFuncs
static const BaseFilterFuncTable SmartTeeFilterFuncs
static const IBaseFilterVtbl SmartTeeFilterVtbl
static const IPinVtbl SmartTeeFilterPreviewVtbl

◆ 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}
#define FALSE
Definition: types.h:117
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:442
IUnknown * outer_unk
Definition: vfwcapture.c:62
IAMStreamConfig IAMStreamConfig_iface
Definition: vfwcapture.c:59
IUnknown IUnknown_inner
Definition: vfwcapture.c:57
BOOL init
Definition: vfwcapture.c:63
IPin * pOutputPin
Definition: vfwcapture.c:66
BaseFilter filter
Definition: vfwcapture.c:58
IAMVideoProcAmp IAMVideoProcAmp_iface
Definition: vfwcapture.c:60
IPersistPropertyBag IPersistPropertyBag_iface
Definition: vfwcapture.c:61
static const IPersistPropertyBagVtbl IPersistPropertyBag_VTable
Definition: vfwcapture.c:50
static const IAMStreamConfigVtbl IAMStreamConfig_VTable
Definition: vfwcapture.c:48
static const IBaseFilterVtbl VfwCapture_Vtbl
Definition: vfwcapture.c:47
static const IUnknownVtbl unknown_inner_vtbl
Definition: vfwcapture.c:188
static const BaseFilterFuncTable BaseFuncTable
Definition: vfwcapture.c:211
static HRESULT VfwPin_Construct(IBaseFilter *, LPCRITICAL_SECTION, IPin **)
Definition: vfwcapture.c:721
static const IAMVideoProcAmpVtbl IAMVideoProcAmp_VTable
Definition: vfwcapture.c:49

◆ 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 
)