On 12/3/20 3:55 PM, Derek Lesho wrote:
Signed-off-by: Derek Lesho dlesho@codeweavers.com
dlls/winegstreamer/audioconvert.c | 37 +++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-)
The patch subject is mildly misleading, since you don't implement all such functions...
diff --git a/dlls/winegstreamer/audioconvert.c b/dlls/winegstreamer/audioconvert.c index d204d9582ba..556aba44fc9 100644 --- a/dlls/winegstreamer/audioconvert.c +++ b/dlls/winegstreamer/audioconvert.c @@ -37,6 +37,8 @@ struct audio_converter { IMFTransform IMFTransform_iface; LONG refcount;
- IMFAttributes *attributes;
- IMFAttributes *output_attributes; IMFMediaType *input_type; IMFMediaType *output_type; CRITICAL_SECTION cs;
@@ -87,6 +89,10 @@ static ULONG WINAPI audio_converter_Release(IMFTransform *iface) { transform->cs.DebugInfo->Spare[0] = 0; DeleteCriticalSection(&transform->cs);
if (transform->attributes)
IMFAttributes_Release(transform->attributes);
if (transform->output_attributes)
}IMFAttributes_Release(transform->output_attributes); gst_object_unref(transform->container); heap_free(transform);
@@ -152,9 +158,14 @@ static HRESULT WINAPI audio_converter_GetOutputStreamInfo(IMFTransform *iface, D
static HRESULT WINAPI audio_converter_GetAttributes(IMFTransform *iface, IMFAttributes **attributes) {
- FIXME("%p, %p.\n", iface, attributes);
- struct audio_converter *converter = impl_audio_converter_from_IMFTransform(iface);
- return E_NOTIMPL;
- TRACE("%p, %p.\n", iface, attributes);
- *attributes = converter->attributes;
- IMFAttributes_AddRef(*attributes);
- return S_OK;
}
static HRESULT WINAPI audio_converter_GetInputStreamAttributes(IMFTransform *iface, DWORD id, @@ -168,9 +179,14 @@ static HRESULT WINAPI audio_converter_GetInputStreamAttributes(IMFTransform *ifa static HRESULT WINAPI audio_converter_GetOutputStreamAttributes(IMFTransform *iface, DWORD id, IMFAttributes **attributes) {
- FIXME("%p, %u, %p.\n", iface, id, attributes);
- struct audio_converter *converter = impl_audio_converter_from_IMFTransform(iface);
- return E_NOTIMPL;
- TRACE("%p, %u, %p.\n", iface, id, attributes);
- *attributes = converter->output_attributes;
- IMFAttributes_AddRef(*attributes);
- return S_OK;
}
static HRESULT WINAPI audio_converter_DeleteInputStream(IMFTransform *iface, DWORD id) @@ -644,6 +660,7 @@ static const IMFTransformVtbl audio_converter_vtbl = HRESULT audio_converter_create(REFIID riid, void **ret) { struct audio_converter *object;
HRESULT hr;
TRACE("%s %p\n", debugstr_guid(riid), ret);
@@ -656,6 +673,18 @@ HRESULT audio_converter_create(REFIID riid, void **ret) InitializeCriticalSection(&object->cs); object->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": audio_converter_lock");
if (FAILED(hr = MFCreateAttributes(&object->attributes, 0)))
{
IMFTransform_Release(&object->IMFTransform_iface);
return hr;
}
if (FAILED(hr = MFCreateAttributes(&object->output_attributes, 0)))
{
IMFTransform_Release(&object->IMFTransform_iface);
return hr;
}
object->container = gst_bin_new(NULL);
if (!(object->appsrc = gst_element_factory_make("appsrc", NULL)))