Skip to content
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

Compatibility with foobar2000+foo_out_asio+WASAPI #60

Closed
yzwduck opened this issue Nov 16, 2019 · 2 comments
Closed

Compatibility with foobar2000+foo_out_asio+WASAPI #60

yzwduck opened this issue Nov 16, 2019 · 2 comments
Labels
asiohost Relates to a specific ASIO Host Application. bug

Comments

@yzwduck
Copy link

yzwduck commented Nov 16, 2019

FlexASIO doesn't work with foobar2000 with ASIO output and WASAPI backend (on my PCs).
FlexASIO initializes successfully, but hangs after entering stream callback. I can reproduce this issue on two different PCs.

I tested with FlexASIOTest.exe and it didn't report any error.

I also tested with foobar2000+asio using default (DirectSound) backend and it worked perfectly.

Log: FlexASIO.foobar+wasapi.log

foobar2000 1.4.8 https://foobar2000.org/
with plugin foo_out_asio 2.1.2 https://www.foobar2000.org/components/view/foo_out_asio

Steps to reproduce:

  1. Get foobar2000 and the asio output plugin mentioned above,
  2. foobar2000 File -> Preferences -> Playback -> Output, set Device to "ASIO: FlexASIO",
  3. Play any audio file.
@dechamps
Copy link
Owner

Thanks for the report. I am indeed able to reproduce the exact same problem in the configuration that you describe.

My best initial guess as to what might be happening is that, when using WASAPI, the first stream callback fires in the context of the ASIOStart() call, and FlexASIO ends up blocking on that callback to complete before returning from ASIOStart(). It might be that foo_out_asio is doing the exact opposite (i.e. it waits for ASIOStart() to complete before returning from the callback), resulting in a deadlock.

The reason why other backends would work fine is because the interaction between ASIOStart() and the first stream callback depends on the backend used. For example with DirectSound the first stream callback fires after ASIOStart() returns.

When I have some time to work on FlexASIO I will dig deeper into the issue and hopefully come up with a fix.

@dechamps dechamps added asiohost Relates to a specific ASIO Host Application. bug labels Nov 16, 2019
@dechamps
Copy link
Owner

dechamps commented Sep 4, 2020

This is fixed in FlexASIO 1.6.

dechamps added a commit that referenced this issue Dec 31, 2020
This reverts commit 1262460.

We don't need this workaround anymore since
PortAudio/portaudio@2d8c7eb fixed the
root cause of #60.
dechamps added a commit that referenced this issue Jan 2, 2021
This reverts commit 1262460.

We don't need this workaround anymore since
PortAudio/portaudio@2d8c7eb fixed the
root cause of #60.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
asiohost Relates to a specific ASIO Host Application. bug
Projects
None yet
Development

No branches or pull requests

2 participants