On Fri, Sep 03, 2021 at 11:54:04AM +0200, mindfsck wrote: > > Apologies for leading you down a dead-end. I've taken a closer look > > at the code and found what the problem is. The pacat-simple.c example is > > expecting raw PCM sample data in the file. Since you're giving it a .WAV > > file, there is a metadata header at the beginning that it is trying to > > interpret as audio. > > > > Try inserting this line just above the /* Read some data ... */ line: > > > > read(STDIN_FILENO, buf, 44); // Discard the .WAV header > > Thank you Sean, that did indeed the trick and my files play nicely now! > Do you expect to add this WAV header detection (and skipping) in a future > release or do you restrict it to PCM (and user code must skip)? To be clear, I'm not a pulseaudio dev, just a [power] user. But it seems to me that it's not within the purview of pulseaudio to do file parsing / interpretation. Especially in what purports to be a "simple" API. Also, the code I showed above was just a quick and dirty hack to prove what the issue was. If you're making an actual program, you would want to do at least some basic parsing of the WAV header to select the correct bitrate / channel / sample size values to fill out the pa_sample_spec struct. As it sits now, those values are hard-coded, and you would get glitchy / incorrect audio if you fed it a WAV file with different parameters. --Sean