[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