[PATCH 05/17] winegstreamer: Implement Get*Attributes functions for audio converter transform.
Zebediah Figura (she/her)
zfigura at codeweavers.com
Thu Dec 3 21:33:21 CST 2020
On 12/3/20 3:55 PM, Derek Lesho wrote:
> Signed-off-by: Derek Lesho <dlesho at 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)))
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0x0D9D358A07A17840.asc
Type: application/pgp-keys
Size: 1769 bytes
Desc: not available
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20201203/9dc44f66/attachment.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 495 bytes
Desc: OpenPGP digital signature
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20201203/9dc44f66/attachment.sig>
More information about the wine-devel
mailing list