[PATCH v5 3/5] winegstreamer: Introduce a new wg_allocator_set_next_sample helper.
Zebediah Figura
zfigura at codeweavers.com
Mon Jul 4 16:34:11 CDT 2022
On 6/30/22 07:33, Rémi Bernon wrote:
> From: Rémi Bernon <rbernon at codeweavers.com>
>
> Using the allocator lock and replacing the transform_request_sample
> callback with a default wg_allocator callback.
>
> Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
> ---
> dlls/winegstreamer/unix_private.h | 2 ++
> dlls/winegstreamer/wg_allocator.c | 42 +++++++++++++++++++++++++++++--
> dlls/winegstreamer/wg_transform.c | 24 +++---------------
> 3 files changed, 46 insertions(+), 22 deletions(-)
>
This is making things even more complicated; now we have two entirely
different code paths to set samples.
I understand that adding more locks increases the mental burden, but I
think this is worse—sure, we're "reusing" a lock that was going to be
created anyway, but it's still effectively introducing another lock,
plus now this requires us to understand when GStreamer is going to
implicitly take that lock.
Not to mention that this is similar to what I was trying to propose,
enough that I'd like to revisit it. I really don't want to argue about
the way forward—there's been too much of that already—but I'm still
finding it hard to justify the complexity of this whole callback
infrastructure, when we could more simply set up a fixed-size pool
beforehand. Yes, we might run out of space in the pool and need to
allocate more sysmem buffers, but it should be easy enough to find a
pool size large enough that that doesn't happen in practice.
[Ideally it would take an application leaking an entire stream of a
muxed file—which has been known to happen—but in that case, it strikes
me as better to eat up the Unix address space instead of the win32
address space, so the limited size is actually a good thing.]
Or, failing that (or in addition to it?), maybe we could just not use
the same wg_allocator object for both transforms and parsers. Yes, it's
more gobject boilerplate, which is annoying, but wg_allocator is a
complex beast and I really don't want to make it worse. And when it
comes to output samples, the allocator and the transform really do seem
to have entirely different considerations.
More information about the wine-devel
mailing list