ReactOS 0.4.17-dev-934-g091855f
qcap_private.h File Reference
#include <stdbool.h>
#include "dshow.h"
#include "wine/unixlib.h"
#include "winternl.h"
#include "wine/debug.h"
#include "wine/strmbase.h"
Include dependency graph for qcap_private.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  create_params
 
struct  start_params
 
struct  destroy_params
 
struct  check_format_params
 
struct  set_format_params
 
struct  get_format_params
 
struct  get_media_type_params
 
struct  get_caps_params
 
struct  get_caps_count_params
 
struct  get_prop_range_params
 
struct  get_prop_params
 
struct  set_prop_params
 
struct  read_frame_params
 

Macros

#define COBJMACROS
 
#define NONAMELESSSTRUCT
 
#define NONAMELESSUNION
 

Typedefs

typedef UINT64 video_capture_device_t
 

Enumerations

enum  unix_funcs {
  unix_create , unix_start , unix_destroy , unix_check_format ,
  unix_set_format , unix_get_format , unix_get_media_type , unix_get_caps ,
  unix_get_caps_count , unix_get_prop_range , unix_get_prop , unix_set_prop ,
  unix_read_frame , unix_funcs_count , unix_process_attach , unix_process_detach ,
  unix_open_cert_store , unix_import_store_key , unix_import_store_cert , unix_close_cert_store ,
  unix_enum_root_certs , unix_funcs_count
}
 

Functions

HRESULT audio_record_create (IUnknown *outer, IUnknown **out)
 
HRESULT avi_compressor_create (IUnknown *outer, IUnknown **out)
 
HRESULT avi_mux_create (IUnknown *outer, IUnknown **out)
 
HRESULT capture_graph_create (IUnknown *outer, IUnknown **out)
 
HRESULT file_writer_create (IUnknown *outer, IUnknown **out)
 
HRESULT smart_tee_create (IUnknown *outer, IUnknown **out)
 
HRESULT vfw_capture_create (IUnknown *outer, IUnknown **out)
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 24 of file qcap_private.h.

◆ NONAMELESSSTRUCT

#define NONAMELESSSTRUCT

Definition at line 25 of file qcap_private.h.

◆ NONAMELESSUNION

#define NONAMELESSUNION

Definition at line 26 of file qcap_private.h.

Typedef Documentation

◆ video_capture_device_t

Definition at line 46 of file qcap_private.h.

Enumeration Type Documentation

◆ unix_funcs

Enumerator
unix_create 
unix_start 
unix_destroy 
unix_check_format 
unix_set_format 
unix_get_format 
unix_get_media_type 
unix_get_caps 
unix_get_caps_count 
unix_get_prop_range 
unix_get_prop 
unix_set_prop 
unix_read_frame 
unix_funcs_count 
unix_process_attach 
unix_process_detach 
unix_open_cert_store 
unix_import_store_key 
unix_import_store_cert 
unix_close_cert_store 
unix_enum_root_certs 
unix_funcs_count 

Definition at line 139 of file qcap_private.h.

140{
155};
@ unix_get_prop_range
Definition: qcap_private.h:150
@ unix_get_caps
Definition: qcap_private.h:148
@ unix_set_format
Definition: qcap_private.h:145
@ unix_destroy
Definition: qcap_private.h:143
@ unix_get_prop
Definition: qcap_private.h:151
@ unix_start
Definition: qcap_private.h:142
@ unix_read_frame
Definition: qcap_private.h:153
@ unix_create
Definition: qcap_private.h:141
@ unix_check_format
Definition: qcap_private.h:144
@ unix_get_media_type
Definition: qcap_private.h:147
@ unix_set_prop
Definition: qcap_private.h:152
@ unix_funcs_count
Definition: qcap_private.h:154
@ unix_get_caps_count
Definition: qcap_private.h:149
@ unix_get_format
Definition: qcap_private.h:146

Function Documentation

◆ audio_record_create()

HRESULT audio_record_create ( IUnknown *  outer,
IUnknown **  out 
)

Definition at line 791 of file audiorecord.c.

792{
793 struct audio_record *object;
794 HRESULT hr;
795
796 if (!(object = calloc(1, sizeof(*object))))
797 return E_OUTOFMEMORY;
798
799 if (!(object->event = CreateEventW(NULL, FALSE, FALSE, NULL)))
800 {
801 free(object);
802 return E_OUTOFMEMORY;
803 }
804
805 if ((hr = fill_media_type(object, 1, &object->format)))
806 {
807 CloseHandle(object->event);
808 free(object);
809 return hr;
810 }
811
812 object->props.cBuffers = -1;
813 object->props.cbBuffer = -1;
814 object->props.cbAlign = -1;
815 object->props.cbPrefix = -1;
816
817 object->IPersistPropertyBag_iface.lpVtbl = &PersistPropertyBagVtbl;
818 strmbase_filter_init(&object->filter, outer, &CLSID_AudioRecord, &filter_ops);
819
820 strmbase_source_init(&object->source, &object->filter, L"Capture", &source_ops);
821 object->IAMBufferNegotiation_iface.lpVtbl = &buffer_negotiation_vtbl;
822 object->IAMStreamConfig_iface.lpVtbl = &stream_config_vtbl;
823 object->IKsPropertySet_iface.lpVtbl = &property_set_vtbl;
824
825 object->state = State_Stopped;
828 object->state_cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": audio_record.state_cs");
829
830 TRACE("Created audio recorder %p.\n", object);
831 *out = &object->filter.IUnknown_inner;
832 return S_OK;
833}
static HRESULT fill_media_type(struct audio_record *filter, unsigned int index, AM_MEDIA_TYPE *mt)
Definition: audiorecord.c:117
static const IAMStreamConfigVtbl stream_config_vtbl
Definition: audiorecord.c:335
static const IKsPropertySetVtbl property_set_vtbl
Definition: audiorecord.c:471
static const IAMBufferNegotiationVtbl buffer_negotiation_vtbl
Definition: audiorecord.c:392
static const struct strmbase_source_ops source_ops
Definition: audiorecord.c:201
static const struct strmbase_filter_ops filter_ops
Definition: audiorecord.c:706
static const IPersistPropertyBagVtbl PersistPropertyBagVtbl
Definition: audiorecord.c:780
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define free
Definition: debug_ros.c:5
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#define CloseHandle
Definition: compat.h:739
VOID WINAPI InitializeConditionVariable(PCONDITION_VARIABLE ConditionVariable)
Definition: sync.c:22
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
Definition: sync.c:107
#define L(x)
Definition: resources.c:13
#define S_OK
Definition: intsafe.h:52
static IUnknown * outer
Definition: compobj.c:82
#define calloc
Definition: rosglue.h:14
#define TRACE(s)
Definition: solgame.cpp:4
void strmbase_source_init(struct strmbase_source *pin, struct strmbase_filter *filter, const WCHAR *name, const struct strmbase_source_ops *func_table)
Definition: pin.c:765
void strmbase_filter_init(struct strmbase_filter *filter, IUnknown *outer, const CLSID *clsid, const struct strmbase_filter_ops *func_table)
Definition: filter.c:517
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
Definition: synch.c:587
#define DWORD_PTR
Definition: treelist.c:76
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
Definition: winnt_old.h:1156

◆ avi_compressor_create()

HRESULT avi_compressor_create ( IUnknown *  outer,
IUnknown **  out 
)

Definition at line 472 of file avico.c.

473{
475
476 if (!(object = calloc(1, sizeof(*object))))
477 return E_OUTOFMEMORY;
478
479 strmbase_filter_init(&object->filter, outer, &CLSID_AVICo, &filter_ops);
480 object->IPersistPropertyBag_iface.lpVtbl = &PersistPropertyBagVtbl;
481
482 strmbase_sink_init(&object->sink, &object->filter, L"In", &sink_ops, NULL);
483 wcscpy(object->sink.pin.name, L"Input");
484
485 strmbase_source_init(&object->source, &object->filter, L"Out", &source_ops);
486 wcscpy(object->source.pin.name, L"Output");
487
488 TRACE("Created AVI compressor %p.\n", object);
489 *out = &object->filter.IUnknown_inner;
490 return S_OK;
491}
static const struct strmbase_source_ops source_ops
Definition: avico.c:464
static const struct strmbase_sink_ops sink_ops
Definition: avico.c:411
static const struct strmbase_filter_ops filter_ops
Definition: avico.c:162
static const IPersistPropertyBagVtbl PersistPropertyBagVtbl
Definition: avico.c:250
wcscpy
void strmbase_sink_init(struct strmbase_sink *pin, struct strmbase_filter *filter, const WCHAR *name, const struct strmbase_sink_ops *ops, IMemAllocator *allocator)
Definition: pin.c:1168

◆ avi_mux_create()

HRESULT avi_mux_create ( IUnknown *  outer,
IUnknown **  out 
)

Definition at line 1842 of file avimux.c.

1843{
1844 AviMux *avimux;
1845 HRESULT hr;
1846
1847 if (!(avimux = calloc(1, sizeof(AviMux))))
1848 return E_OUTOFMEMORY;
1849
1850 strmbase_filter_init(&avimux->filter, outer, &CLSID_AviDest, &filter_ops);
1851 avimux->IConfigAviMux_iface.lpVtbl = &ConfigAviMuxVtbl;
1853 avimux->IMediaSeeking_iface.lpVtbl = &MediaSeekingVtbl;
1856
1857 strmbase_source_init(&avimux->source, &avimux->filter, L"AVI Out", &source_ops);
1859 avimux->cur_stream = 0;
1860 avimux->cur_time = 0;
1861 avimux->stream = NULL;
1862
1863 hr = create_input_pin(avimux);
1864 if(FAILED(hr)) {
1867 free(avimux);
1868 return hr;
1869 }
1870
1871 avimux->interleave = 10000000;
1872
1873 TRACE("Created AVI mux %p.\n", avimux);
1874 *out = &avimux->filter.IUnknown_inner;
1875 return S_OK;
1876}
static const IMediaSeekingVtbl MediaSeekingVtbl
Definition: avimux.c:983
static const IPersistMediaPropertyBagVtbl PersistMediaPropertyBagVtbl
Definition: avimux.c:1060
static const IConfigInterleavingVtbl ConfigInterleavingVtbl
Definition: avimux.c:815
static const IConfigAviMuxVtbl ConfigAviMuxVtbl
Definition: avimux.c:728
static const IQualityControlVtbl AviMuxOut_QualityControlVtbl
Definition: avimux.c:1268
static const struct strmbase_source_ops source_ops
Definition: avimux.c:1215
static const struct strmbase_filter_ops filter_ops
Definition: avimux.c:665
static HRESULT create_input_pin(AviMux *)
Definition: avimux.c:1796
static const ISpecifyPropertyPagesVtbl SpecifyPropertyPagesVtbl
Definition: avimux.c:1102
#define FAILED(hr)
Definition: intsafe.h:51
void strmbase_filter_cleanup(struct strmbase_filter *filter)
Definition: filter.c:540
void strmbase_source_cleanup(struct strmbase_source *pin)
Definition: pin.c:778
Definition: avimux.c:74
LONGLONG cur_time
Definition: avimux.c:100
IPersistMediaPropertyBag IPersistMediaPropertyBag_iface
Definition: avimux.c:79
IMediaSeeking IMediaSeeking_iface
Definition: avimux.c:78
struct strmbase_source source
Definition: avimux.c:86
IConfigInterleaving IConfigInterleaving_iface
Definition: avimux.c:77
IQualityControl IQualityControl_iface
Definition: avimux.c:87
int cur_stream
Definition: avimux.c:99
struct strmbase_filter filter
Definition: avimux.c:75
ISpecifyPropertyPages ISpecifyPropertyPages_iface
Definition: avimux.c:80
IStream * stream
Definition: avimux.c:108
IConfigAviMux IConfigAviMux_iface
Definition: avimux.c:76
REFERENCE_TIME interleave
Definition: avimux.c:83

◆ capture_graph_create()

HRESULT capture_graph_create ( IUnknown *  outer,
IUnknown **  out 
)

Definition at line 51 of file capturegraph.c.

52{
54
55 if (outer)
57
58 if (!(object = calloc(1, sizeof(*object))))
59 return E_OUTOFMEMORY;
60
61 object->ICaptureGraphBuilder2_iface.lpVtbl = &builder2_Vtbl;
62 object->ICaptureGraphBuilder_iface.lpVtbl = &builder_Vtbl;
63 object->ref = 1;
64 object->mygraph = NULL;
66 object->csFilter.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": CaptureGraphImpl.csFilter");
67
68 TRACE("Created capture graph builder %p.\n", object);
69 *out = (IUnknown *)&object->ICaptureGraphBuilder_iface;
70 return S_OK;
71}
static const ICaptureGraphBuilder2Vtbl builder2_Vtbl
Definition: capturegraph.c:38
static const ICaptureGraphBuilderVtbl builder_Vtbl
Definition: capturegraph.c:37
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:3771

◆ file_writer_create()

HRESULT file_writer_create ( IUnknown *  outer,
IUnknown **  out 
)

Definition at line 316 of file filewriter.c.

317{
318 struct file_writer *object;
319
320 if (!(object = calloc(1, sizeof(*object))))
321 return E_OUTOFMEMORY;
322
323 strmbase_filter_init(&object->filter, outer, &CLSID_FileWriter, &filter_ops);
324 object->IFileSinkFilter_iface.lpVtbl = &filesinkfilter_vtbl;
325 object->IAMFilterMiscFlags_iface.lpVtbl = &misc_flags_vtbl;
326
327 strmbase_sink_init(&object->sink, &object->filter, L"in", &sink_ops, NULL);
328
329 TRACE("Created file writer %p.\n", object);
330 *out = &object->filter.IUnknown_inner;
331 return S_OK;
332}
static const IFileSinkFilterVtbl filesinkfilter_vtbl
Definition: filewriter.c:267
static const IAMFilterMiscFlagsVtbl misc_flags_vtbl
Definition: filewriter.c:308
static const struct strmbase_sink_ops sink_ops
Definition: filewriter.c:124
static struct strmbase_filter_ops filter_ops
Definition: filewriter.c:204

◆ smart_tee_create()

HRESULT smart_tee_create ( IUnknown *  outer,
IUnknown **  out 
)

Definition at line 317 of file smartteefilter.c.

318{
320 HRESULT hr;
321
322 if (!(object = calloc(1, sizeof(*object))))
323 return E_OUTOFMEMORY;
324
325 strmbase_filter_init(&object->filter, outer, &CLSID_SmartTee, &filter_ops);
326 strmbase_sink_init(&object->sink, &object->filter, L"Input", &sink_ops, NULL);
327 hr = CoCreateInstance(&CLSID_MemoryAllocator, NULL, CLSCTX_INPROC_SERVER,
328 &IID_IMemAllocator, (void **)&object->sink.pAllocator);
329 if (FAILED(hr))
330 {
332 free(object);
333 return hr;
334 }
335
336 strmbase_source_init(&object->capture, &object->filter, L"Capture", &capture_ops);
337 strmbase_source_init(&object->preview, &object->filter, L"Preview", &preview_ops);
338
339 TRACE("Created smart tee %p.\n", object);
340 *out = &object->filter.IUnknown_inner;
341 return S_OK;
342}
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
static const struct strmbase_source_ops preview_ops
static const struct strmbase_sink_ops sink_ops
static const struct strmbase_filter_ops filter_ops
static const struct strmbase_source_ops capture_ops

◆ vfw_capture_create()

HRESULT vfw_capture_create ( IUnknown *  outer,
IUnknown **  out 
)

Definition at line 984 of file vfwcapture.c.

985{
986 struct vfw_capture *object;
987
988#ifndef __REACTOS__
989 if (!InitOnceExecuteOnce(&init_once, load_capture_funcs, NULL, NULL) || !__wine_unixlib_handle)
990 return E_FAIL;
991#endif
992
993 if (!(object = calloc(1, sizeof(*object))))
994 return E_OUTOFMEMORY;
995
996 strmbase_filter_init(&object->filter, outer, &CLSID_VfwCapture, &filter_ops);
997
998 object->IAMStreamConfig_iface.lpVtbl = &IAMStreamConfig_VTable;
999 object->IAMVideoControl_iface.lpVtbl = &IAMVideoControl_VTable;
1000 object->IAMVideoProcAmp_iface.lpVtbl = &IAMVideoProcAmp_VTable;
1001 object->IAMFilterMiscFlags_iface.lpVtbl = &IAMFilterMiscFlags_VTable;
1002 object->IPersistPropertyBag_iface.lpVtbl = &IPersistPropertyBag_VTable;
1003
1004 strmbase_source_init(&object->source, &object->filter, L"Output", &source_ops);
1005
1006 object->IKsPropertySet_iface.lpVtbl = &IKsPropertySet_VTable;
1007
1008 object->state = State_Stopped;
1011 object->state_cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": vfw_capture.state_cs");
1012
1013 TRACE("Created VFW capture filter %p.\n", object);
1014 *out = &object->filter.IUnknown_inner;
1015 return S_OK;
1016}
#define E_FAIL
Definition: ddrawi.h:102
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
Definition: InitOnce.c:12
static const IAMStreamConfigVtbl IAMStreamConfig_VTable
Definition: vfwcapture.c:507
static const IKsPropertySetVtbl IKsPropertySet_VTable
Definition: vfwcapture.c:748
static const IAMVideoProcAmpVtbl IAMVideoProcAmp_VTable
Definition: vfwcapture.c:588
static INIT_ONCE init_once
Definition: vfwcapture.c:981
static BOOL WINAPI load_capture_funcs(INIT_ONCE *once, void *param, void **context)
Definition: vfwcapture.c:975
static const struct strmbase_source_ops source_ops
Definition: vfwcapture.c:843
static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_VTable
Definition: vfwcapture.c:876
static const struct strmbase_filter_ops filter_ops
Definition: vfwcapture.c:303
static const IPersistPropertyBagVtbl IPersistPropertyBag_VTable
Definition: vfwcapture.c:671
static const IAMVideoControlVtbl IAMVideoControl_VTable
Definition: vfwcapture.c:961