[PATCH 4/5] winegstreamer: Register WMA decoder transform stub.
Zebediah Figura (she/her)
zfigura at codeweavers.com
Fri Jan 21 12:31:27 CST 2022
On 1/21/22 12:19, Rémi Bernon wrote:
> On 1/21/22 19:03, Zebediah Figura (she/her) wrote:
>> On 1/21/22 11:41, Rémi Bernon wrote:
>>> On 1/21/22 18:23, Zebediah Figura (she/her) wrote:
>>>> On 1/21/22 02:57, Giovanni Mascellani wrote:
>>>>> Hi,
>>>>>
>>>>> Il 21/01/22 02:44, Zebediah Figura (she/her) ha scritto:
>>>>>> Is there an application that requires this, other than FAudio?
>>>>>
>>>>> I don't know, but notice that Mono ships a copy of FAudio, so if we
>>>>> want
>>>>> to patch FAudio, we have to patch that one as well.
>>>>>
>>>>>> And if not, can we instead try to change FAudio to not require
>>>>>> specific decoders?
>>>>>
>>>>> Even if the current user is just FAudio, wouldn't it better to
>>>>> implement properly CWMADecMediaObject anyway? This way you
>>>>> automatically catch all future users of it. Why is
>>>>> CWMADecMediaObject something that we might not want to implement?
>>>>
>>>> We will need some way to decode arbitrary data via IMFTransform
>>>> objects, but it seems preferable to avoid having to implement more
>>>> objects than we need. E.g. trying to catch as many as possible via a
>>>> generic decoder seems like a good idea. In that case we'd want to
>>>> use MFTEnum() in FAudio instead of hardcoding the CLSID.
>>>>
>>>
>>> From the few early tests I've made each transform seems to have its
>>> own behavior and some games heavily hardcode their logic around it.
>>>
>>> I think catching everything behind a generic decoder is not a good
>>> idea in that situation, and it makes the code harder to understand as
>>> the specific logic that needs to be implement to satisfy each game
>>> and each corner case is interleaved together.
>>
>> I'm not necessarily arguing for keeping *everything* behind a generic
>> decoder, but it'd be nice to catch everything that doesn't otherwise
>> care. Sure, some applications are going to depend on idiosyncratic
>> behaviour, but the hope is that most are more well-behaved and don't
>> care, especially if they're using MFTEnum() rather than hardcoding
>> CLSIDs in the first place.
>>
>
> All the games I've seen which required the MF transforms (H264 and AAC)
> are instantiating them by their class id.
>
> FAudio does it too for the WMA decoder, and although it could use
> MFTEnum I don't see how easier it would make anything else, we'll still
> need that WMA decoder class, or a class which can decode WMA.
>
> For now it's the only class there is so it's named wma_decoder, but
> could easily be renamed later if it matches some other codec.
Okay, if there's no known application that uses MFTEnum() then I guess
there's not much point in creating a generic transform instead of the
WMA object.
[Seems like a huge step back from the era of DirectShow. I guess this is
what happens when you make APIs much harder to use...]
More information about the wine-devel
mailing list