Menu

#16 ResumePlaybackAsync failed: hr =-2147019873

1.0
open
None
2017-05-14
2017-05-04
No

Relevant specs:
Windows 10 Pro Creator's Update 64-bit (OS Build 15063.138)
Foobar2000 (1.3.15)
ASIO support (2.1.2)
asio2 (1.1 Beta2)
FiiO E10k DAC (Driver Version 5.12.1.3514)

Foobar2000 crashes when using your asio2 plugin to play 44.1Hz 16-bit CDDA files through my DAC but DirectSound and the official ASIO support plugin are working.

My DAC is set to 16-bit in its ASIO Settings, as it was when I was using offical ASIO support. I have left the chunk size at its default setting of 0.

6 Attachments

Discussion

  • Didier Galardon

    Didier Galardon - 2017-05-05

    Hi,

    The crash occurs in the asio driver (Fiio USB DAC-E10) dll, while the plugin tries to get the available asio buffer sizes. Also, number of available input/ouput channel returned by the driver is strange (see log: init_asio_static_data - ASIOGetChannels (inputs:1970169159, outputs:1231384169)). nb of available channels should be around 4 or 8.
    May be there is something wrong with your driver installation ? I see that there is 3 versions: 1 for 64 bit, 1 for 32 bit, and a specific one for Win XP. You need to use the 32 bit one.

    Regards

     
  • Matthew Campbell

    I did a clean install of my DAC's 32-bit drivers (uninstalled FiiO USB DAC-E10 driver in Device Manager and from Programs and Features in Control Panel).

    Unfortunately, I still get the exact same 'ResumePlaybackAsync failed' error and my available input/output channels are still incorrect: 'ASIOGetChannels (inputs:1970169159, outputs:1231384169)'

     

    Last edit: Matthew Campbell 2017-05-05
  • Didier Galardon

    Didier Galardon - 2017-05-06

    Hi,

    Don' bother with these warning logs.
    'ResumePlaybackAsync failed' is just a wrong trace that I need to remove in a next version.
    "chunk size not aligned on endpoint buffer size .." trace means that the plugin cannot use some code optimisations related to sample cache alignment, but it works anyway.
    'Renderer::Renderer sends incomplete block of samples ...' traces only matter when you have too many of them during playback. In such a case, you will have to increase the sample cache size. If you have only one trace at the beginning or the end of a track, don't bother with it.

    I am not surprised that is works with Asio4all, but ASIO4All is a wrapper above your native driver. It would be better If you could use your asio native driver. I suspects that there is some kind of conflict between it and the plugin code. Could you make a try with the attached patch ?

    thanks

     
  • Matthew Campbell

    Thank you for the patch, I tried it with my DAC's native 32-bit drivers and Foobar2000 is still crashing.

    The last thing asio2 does before crashing is Renderer::init_asio_static_data - ASIOCanSampleRate

     
  • Didier Galardon

    Didier Galardon - 2017-05-11

    OK. Crash still occurs in a fiio driver api call (setSampleRate). It's not the same as for the previous crashes because I have added additonnal checks related to the sample rate in the patch code. What looks strange for me is that some driver api seams to work correctly (canSampleRate) whereas other doesn't work (setSampleRate, getChannels ?, getBufferSize).
    I don't have any more idea for your problem, except that , perhaps, if the problem comes from that your driver doesn't implements well all the the asio interface methods, I could send you another patch skipping all inquiry api method calls (setSampleRate,..getChannels,...), using predefined value for nb of channels, asio buffer size & type instead, and keeping only the main driver calls(createBuffers, disposeBuffers). What do you think ?

    Regards

     
  • Matthew Campbell

    Hello,

    May I try the patch when it's ready? I think there's a good chance that it might work.

    Thank you

     

Log in to post a comment.