ReactOS 0.4.15-dev-8061-g57b775e
writer.c
Go to the documentation of this file.
1/*
2 * Copyright 2015 Jacek Caban for CodeWeavers
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19#include "wmvcore.h"
20#include "wmsdkidl.h"
21
22#include "wine/debug.h"
23#include "wine/heap.h"
24
26
27typedef struct {
31} WMWriter;
32
34{
35 return CONTAINING_RECORD(iface, WMWriter, IWMWriter_iface);
36}
37
39{
41
43 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
44 *ppv = &This->IWMWriter_iface;
45 }else if(IsEqualGUID(&IID_IWMWriter, riid)) {
46 TRACE("(%p)->(IID_IWMWriter %p)\n", This, ppv);
47 *ppv = &This->IWMWriter_iface;
48 }else if(IsEqualGUID(&IID_IWMWriterAdvanced, riid)) {
49 TRACE("(%p)->(IID_IWMWriterAdvanced %p)\n", This, ppv);
50 *ppv = &This->IWMWriterAdvanced3_iface;
51 }else if(IsEqualGUID(&IID_IWMWriterAdvanced2, riid)) {
52 TRACE("(%p)->(IID_IWMWriterAdvanced2 %p)\n", This, ppv);
53 *ppv = &This->IWMWriterAdvanced3_iface;
54 }else if(IsEqualGUID(&IID_IWMWriterAdvanced3, riid)) {
55 TRACE("(%p)->(IID_IWMWriterAdvanced3 %p)\n", This, ppv);
56 *ppv = &This->IWMWriterAdvanced3_iface;
57 }else {
58 FIXME("Unsupported iface %s\n", debugstr_guid(riid));
59 *ppv = NULL;
60 return E_NOINTERFACE;
61 }
62
63 IUnknown_AddRef((IUnknown*)*ppv);
64 return S_OK;
65}
66
68{
71
72 TRACE("(%p) ref=%d\n", This, ref);
73
74 return ref;
75}
76
78{
81
82 TRACE("(%p) ref=%d\n", This, ref);
83
84 if(!ref)
86
87 return ref;
88}
89
91{
93 FIXME("(%p)->(%s)\n", This, debugstr_guid(guidProfile));
94 return E_NOTIMPL;
95}
96
98{
100 FIXME("(%p)->(%p)\n", This, profile);
101 return E_NOTIMPL;
102}
103
105{
107 FIXME("(%p)->(%s)\n", This, debugstr_w(filename));
108 return E_NOTIMPL;
109}
110
112{
114 FIXME("(%p)->(%p)\n", This, pcInputs);
115 return E_NOTIMPL;
116}
117
119{
121 FIXME("(%p)->(%d %p)\n", This, dwInputNum, input);
122 return E_NOTIMPL;
123}
124
126{
128 FIXME("(%p)->(%d %p)\n", This, dwInputNum, input);
129 return E_NOTIMPL;
130}
131
132static HRESULT WINAPI WMWriter_GetInputFormatCount(IWMWriter *iface, DWORD dwInputNumber, DWORD *pcFormat)
133{
135 FIXME("(%p)->(%d %p)\n", This, dwInputNumber, pcFormat);
136 return E_NOTIMPL;
137}
138
139static HRESULT WINAPI WMWriter_GetInputFormat(IWMWriter *iface, DWORD dwInputNumber, DWORD dwFormatNumber,
141{
143 FIXME("(%p)->(%d %d %p)\n", This, dwInputNumber, dwFormatNumber, props);
144 return E_NOTIMPL;
145}
146
148{
150 FIXME("(%p)\n", This);
151 return E_NOTIMPL;
152}
153
155{
157 FIXME("(%p)\n", This);
158 return E_NOTIMPL;
159}
160
162{
164 FIXME("(%p)->(%d %p)\n", This, size, sample);
165 return E_NOTIMPL;
166}
167
168static HRESULT WINAPI WMWriter_WriteSample(IWMWriter *iface, DWORD dwInputNum, QWORD cnsSampleTime,
169 DWORD flags, INSSBuffer *sample)
170{
172 FIXME("(%p)->(%d %s %x %p)\n", This, dwInputNum, wine_dbgstr_longlong(cnsSampleTime), flags, sample);
173 return E_NOTIMPL;
174}
175
177{
179 FIXME("(%p)\n", This);
180 return E_NOTIMPL;
181}
182
183static const IWMWriterVtbl WMWriterVtbl = {
200};
201
203{
204 return CONTAINING_RECORD(iface, WMWriter, IWMWriterAdvanced3_iface);
205}
206
208{
210 return IWMWriter_QueryInterface(&This->IWMWriter_iface, riid, ppv);
211}
212
214{
216 return IWMWriter_AddRef(&This->IWMWriter_iface);
217}
218
220{
222 return IWMWriter_Release(&This->IWMWriter_iface);
223}
224
226{
228 FIXME("(%p)->(%p)\n", This, sinks);
229 return E_NOTIMPL;
230}
231
233{
235 FIXME("(%p)->(%u %p)\n", This, sink_num, sink);
236 return E_NOTIMPL;
237}
238
240{
242 FIXME("(%p)->(%p)\n", This, sink);
243 return E_NOTIMPL;
244}
245
247{
249 FIXME("(%p)->(%p)\n", This, sink);
250 return E_NOTIMPL;
251}
252
254 QWORD sample_time, DWORD sample_send_time, QWORD sample_duration, DWORD flags, INSSBuffer *sample)
255{
257 FIXME("(%p)->(%u %s %u %s %x %p)\n", This, stream_num, wine_dbgstr_longlong(sample_time),
258 sample_send_time, wine_dbgstr_longlong(sample_duration), flags, sample);
259 return E_NOTIMPL;
260}
261
263{
265 FIXME("(%p)->(%x)\n", This, is_live_source);
266 return E_NOTIMPL;
267}
268
270{
272 FIXME("(%p)->(%p)\n", This, real_time);
273 return E_NOTIMPL;
274}
275
277{
279 FIXME("(%p)->(%p)\n", This, current_time);
280 return E_NOTIMPL;
281}
282
284{
286 FIXME("(%p)->(%u %p)\n", This, stream_num, stats);
287 return E_NOTIMPL;
288}
289
291{
293 FIXME("(%p)->(%u)\n", This, window);
294 return E_NOTIMPL;
295}
296
298{
300 FIXME("(%p)->(%p)\n", This, window);
301 return E_NOTIMPL;
302}
303
306{
308 FIXME("(%p)->(%u %s %p %p %p)\n", This, input_num, debugstr_w(name), time, value, length);
309 return E_NOTIMPL;
310}
311
314{
316 FIXME("(%p)->(%u %s %d %p %u)\n", This, input_num, debugstr_w(name), type, value, length);
317 return E_NOTIMPL;
318}
319
322{
324 FIXME("(%p)->(%u %p)\n", This, stream_num, stats);
325 return E_NOTIMPL;
326}
327
329{
331 FIXME("(%p)\n", This);
332 return E_NOTIMPL;
333}
334
335static const IWMWriterAdvanced3Vtbl WMWriterAdvanced3Vtbl = {
354};
355
357{
358 WMWriter *ret;
359
360 TRACE("(%p %p)\n", reserved, writer);
361
362 ret = heap_alloc(sizeof(*ret));
363 if(!ret)
364 return E_OUTOFMEMORY;
365
366 ret->IWMWriter_iface.lpVtbl = &WMWriterVtbl;
367 ret->IWMWriterAdvanced3_iface.lpVtbl = &WMWriterAdvanced3Vtbl;
368 ret->ref = 1;
369
370 *writer = &ret->IWMWriter_iface;
371 return S_OK;
372}
373
375{
376 return WMCreateWriter(NULL, writer);
377}
static void * heap_alloc(size_t len)
Definition: appwiz.h:66
static BOOL heap_free(void *mem)
Definition: appwiz.h:76
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
const GUID IID_IUnknown
#define FIXME(fmt,...)
Definition: debug.h:114
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_NOTIMPL
Definition: ddrawi.h:99
#define NULL
Definition: types.h:112
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:49
static HRESULT WINAPI WMWriter_GetInputProps(IWMWriter *iface, DWORD dwInputNum, IWMInputMediaProps **input)
Definition: writer.c:118
static HRESULT WINAPI WMWriter_WriteSample(IWMWriter *iface, DWORD dwInputNum, QWORD cnsSampleTime, DWORD flags, INSSBuffer *sample)
Definition: writer.c:168
static HRESULT WINAPI WMWriter_BeginWriting(IWMWriter *iface)
Definition: writer.c:147
static HRESULT WINAPI WMWriterAdvanced_SetLiveSource(IWMWriterAdvanced3 *iface, BOOL is_live_source)
Definition: writer.c:262
static HRESULT WINAPI WMWriterAdvanced_QueryInterface(IWMWriterAdvanced3 *iface, REFIID riid, void **ppv)
Definition: writer.c:207
HRESULT WINAPI WMCreateWriterPriv(IWMWriter **writer)
Definition: writer.c:374
static HRESULT WINAPI WMWriterAdvanced3_GetStatisticsEx(IWMWriterAdvanced3 *iface, WORD stream_num, WM_WRITER_STATISTICS_EX *stats)
Definition: writer.c:320
static ULONG WINAPI WMWriterAdvanced_Release(IWMWriterAdvanced3 *iface)
Definition: writer.c:219
static HRESULT WINAPI WMWriterAdvanced3_SetNonBlocking(IWMWriterAdvanced3 *iface)
Definition: writer.c:328
static HRESULT WINAPI WMWriter_GetInputFormat(IWMWriter *iface, DWORD dwInputNumber, DWORD dwFormatNumber, IWMInputMediaProps **props)
Definition: writer.c:139
static HRESULT WINAPI WMWriterAdvanced_WriteStreamSample(IWMWriterAdvanced3 *iface, WORD stream_num, QWORD sample_time, DWORD sample_send_time, QWORD sample_duration, DWORD flags, INSSBuffer *sample)
Definition: writer.c:253
static const IWMWriterVtbl WMWriterVtbl
Definition: writer.c:183
static HRESULT WINAPI WMWriterAdvanced_AddSink(IWMWriterAdvanced3 *iface, IWMWriterSink *sink)
Definition: writer.c:239
static HRESULT WINAPI WMWriterAdvanced_IsRealTime(IWMWriterAdvanced3 *iface, BOOL *real_time)
Definition: writer.c:269
static HRESULT WINAPI WMWriterAdvanced_GetStatistics(IWMWriterAdvanced3 *iface, WORD stream_num, WM_WRITER_STATISTICS *stats)
Definition: writer.c:283
static HRESULT WINAPI WMWriter_GetInputFormatCount(IWMWriter *iface, DWORD dwInputNumber, DWORD *pcFormat)
Definition: writer.c:132
static HRESULT WINAPI WMWriter_AllocateSample(IWMWriter *iface, DWORD size, INSSBuffer **sample)
Definition: writer.c:161
static HRESULT WINAPI WMWriterAdvanced2_SetInputSetting(IWMWriterAdvanced3 *iface, DWORD input_num, const WCHAR *name, WMT_ATTR_DATATYPE type, const BYTE *value, WORD length)
Definition: writer.c:312
static HRESULT WINAPI WMWriterAdvanced2_GetInputSetting(IWMWriterAdvanced3 *iface, DWORD input_num, const WCHAR *name, WMT_ATTR_DATATYPE *time, BYTE *value, WORD *length)
Definition: writer.c:304
static HRESULT WINAPI WMWriter_SetOutputFilename(IWMWriter *iface, const WCHAR *filename)
Definition: writer.c:104
static HRESULT WINAPI WMWriter_Flush(IWMWriter *iface)
Definition: writer.c:176
static WMWriter * impl_from_IWMWriter(IWMWriter *iface)
Definition: writer.c:33
static HRESULT WINAPI WMWriter_QueryInterface(IWMWriter *iface, REFIID riid, void **ppv)
Definition: writer.c:38
static ULONG WINAPI WMWriter_Release(IWMWriter *iface)
Definition: writer.c:77
static HRESULT WINAPI WMWriterAdvanced_GetSyncTolerance(IWMWriterAdvanced3 *iface, DWORD *window)
Definition: writer.c:297
static HRESULT WINAPI WMWriterAdvanced_GetSink(IWMWriterAdvanced3 *iface, DWORD sink_num, IWMWriterSink **sink)
Definition: writer.c:232
static WMWriter * impl_from_IWMWriterAdvanced3(IWMWriterAdvanced3 *iface)
Definition: writer.c:202
static ULONG WINAPI WMWriter_AddRef(IWMWriter *iface)
Definition: writer.c:67
static ULONG WINAPI WMWriterAdvanced_AddRef(IWMWriterAdvanced3 *iface)
Definition: writer.c:213
static HRESULT WINAPI WMWriter_GetInputCount(IWMWriter *iface, DWORD *pcInputs)
Definition: writer.c:111
static HRESULT WINAPI WMWriter_SetProfileByID(IWMWriter *iface, REFGUID guidProfile)
Definition: writer.c:90
static HRESULT WINAPI WMWriter_EndWriting(IWMWriter *iface)
Definition: writer.c:154
static HRESULT WINAPI WMWriter_SetProfile(IWMWriter *iface, IWMProfile *profile)
Definition: writer.c:97
static HRESULT WINAPI WMWriterAdvanced_GetWriterTime(IWMWriterAdvanced3 *iface, QWORD *current_time)
Definition: writer.c:276
static HRESULT WINAPI WMWriterAdvanced_RemoveSink(IWMWriterAdvanced3 *iface, IWMWriterSink *sink)
Definition: writer.c:246
static const IWMWriterAdvanced3Vtbl WMWriterAdvanced3Vtbl
Definition: writer.c:335
static HRESULT WINAPI WMWriterAdvanced_GetSinkCount(IWMWriterAdvanced3 *iface, DWORD *sinks)
Definition: writer.c:225
static HRESULT WINAPI WMWriter_SetInputProps(IWMWriter *iface, DWORD dwInputNum, IWMInputMediaProps *input)
Definition: writer.c:125
static HRESULT WINAPI WMWriterAdvanced_SetSyncTolerance(IWMWriterAdvanced3 *iface, DWORD window)
Definition: writer.c:290
HRESULT WINAPI WMCreateWriter(IUnknown *reserved, IWMWriter **writer)
Definition: writer.c:356
r reserved
Definition: btrfs.c:3006
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLsizeiptr size
Definition: glext.h:5919
GLbitfield flags
Definition: glext.h:7161
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
GLsizei GLenum GLboolean sink
Definition: glext.h:5672
GLenum GLenum GLenum input
Definition: glext.h:9031
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
const char * filename
Definition: ioapi.h:137
#define debugstr_guid
Definition: kernel32.h:35
#define profile
Definition: kernel32.h:12
#define debugstr_w
Definition: kernel32.h:32
__u16 time
Definition: mkdosfs.c:8
static IHTMLWindow2 * window
Definition: events.c:77
GUID guidProfile
Definition: msctf.idl:646
long LONG
Definition: pedump.c:60
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
UINT64 QWORD
Definition: shimdbg.c:104
#define TRACE(s)
Definition: solgame.cpp:4
IWMWriter IWMWriter_iface
Definition: writer.c:28
IWMWriterAdvanced3 IWMWriterAdvanced3_iface
Definition: writer.c:29
LONG ref
Definition: writer.c:30
Definition: scsiwmi.h:51
Definition: name.c:39
Definition: send.c:48
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
Definition: pdh_main.c:94
static const WCHAR props[]
Definition: wbemdisp.c:288
int ret
#define WINAPI
Definition: msvc.h:6
#define E_NOINTERFACE
Definition: winerror.h:2364
WMT_ATTR_DATATYPE
Definition: wmsdkidl.idl:85
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned char BYTE
Definition: xxhash.c:193