-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Force the Apple Video/Audio Toolbox in GStreamer transforms #4
Conversation
P.S. You may want to consider symlinking |
So you haven't tested it? I'm confused. |
I have not tested this change with Whisky but it works fine on CX24. There isn't much to test for what it's worth; just verifying the transforms initialize properly when booting Steam. I can do it after the CI build completes. |
That’s the first thing you should have done.
That’s really not a good test case.
You should have at least built & tested this locally. |
If you insist that I test locally before approving CI, I'll try to test this in a few days. I don't know of any specific way to test the behavior of |
FYI your build script is broken by this update to GCC 14 in the default MinGW bottle in Homebrew, which makes incompatible pointer conversions an error by default. You may want to update your |
You should not be building with GCC.
…On May 15, 2024 at 21:27 -0700, 101arrowz ***@***.***>, wrote:
FYI your build script is broken by this update to GCC 14 in the default MinGW bottle in Homebrew, which makes incompatible pointer conversions an error by default. You may want to update your $CROSSCFLAGS.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
I am not building the Unix side of Wine with GCC. I am building Unix-side with the LLVM provided in the |
Tested the previous commit and it worked fine on Steam. I made more changes to resolve some issues with Media Foundation's TopoEdit; things still aren't fully working in TopoEdit but they're better than before. This change essentially allows any program that uses |
Does this change make any games playable as that's what anyone will care about for Whisky, I know upstream wine has had expanded applemedia plugin support (that's mainly irrelevant for official Winehq packages) that's part of CrossOver Preview. |
I don't know if this makes any games work better because I don't play any games that use the Media Foundation API. I would expect that these changes would help reduce bugs in those games, but I can't say for sure. All the games I do play work OK on Whisky (but are slower than CrossOver). |
Without a viable test case I won’t approve this PR, that’s not to say that @IsaacMarovitz will share my view. As there’s now Artifacts anyone is free to test this and report back any games that now work with this over the current WhiskyWine release. |
@101arrowz Would a better solution not be to bundle |
@IsaacMarovitz yes it would be better to just bundle |
I assumed you had a reason for not bundling it (maybe size or initialization time) but yes, it's probably better to just use FFmpeg here. |
I noticed some situations in which GStreamer fails to initialize when launching Steam because it can't find a way to decode H.264 byte-stream video via Quartz or MF (not sure). I'm don't know why Steam needs to decode H.264 at launch (maybe to probe Windows features?) In any case, this patch fixes the issue and should make H.264 and AAC decoding more robust.
Whisky Wine doesn't bundle
libgstlibav.dylib
, which links to FFmpeg and is what is typically used to actually decode AV streams with GStreamer. As a result,wg_transform_create
with these kinds of streams always fails. Whisky Wine does bundlelibgstapplemedia.dylib
, which includes integrations with Apple Video Toolbox and Audio Toolbox. The Video Toolbox (vtdec
orvtdec_hw
in GStreamer) expects a packetized H.264 stream, i.e.stream-format = avc
and notbyte-stream
; likewise, the Audio Toolbox expects a pre-framed input stream. We can useh264parse
andaacparse
for these, and this patch essentially forces that pre-parsing to happen.This doesn't seem to always be the codepath for general video decoding; Wine seems to use GStreamer's autoplug for that in some situations via
wg_parser.c
. I'm not actually sure what situations would trigger this patch specifically, but given that this causes GStreamer transform initializations to actually work; it might help.Note: this change is ported from this patch for CX24; it was only tested on CX24, not Whisky Wine