Поэтому я эмулирую микросхему RP2A03, используя C ++, используя SoX для повторной выборки и вывода звука.
Я могу подтвердить, что сам APU и входной канал работают как шарм с помощью команды следующая команда:
FILE* fp = popen(".\\sox\\sox.exe -t raw -c1 -e signed-integer -b 16 -r1789800 - -t wav -c2 -r 48000 wav.wav", "wb");
...
fputc(sample, fp);
fputc(sample/256, fp);
Который выводит прекрасный чиптун в виде wav.wav, воспроизводимый в MS-Media Player, VLC и так далее.
Но когда я пытаюсь передать музыку в ffplay, используя:
FILE* fp = popen(".\\sox\\sox.exe -t raw -c1 -e signed-integer -b 16 -r1789800 - -t raw -c2 -r 48000 - | .\\sox\\ffplay.exe -acodec pcm_s16le -", "wb");
Я получаю сообщение об ошибке:
FAIL sox: `-' error writing output file: Invalid argument
Я был в Google много часов без удачи …
Я застрял в этом часами, со вчерашнего дня на самом деле, и кажется, что есть что-то решающее (или тривиальное?), Я пропускаю, так как все примеры, которые я нахожу, используют одни и те же или даже более простые методы для записи вывода на стандартный вывод
Поскольку я могу вывести его в WAV без проблем, я не могу не чувствовать себя немного насмешливым со стороны программного обеспечения …
Если у кого-то есть предложения, которые могут помочь, то, пожалуйста, поделитесь!
Спасибо!
Я использовал SoX 14.0.x, и понижение до 13.0 немедленно решило мою проблему.
Похоже, что выходной трубопровод сломан в 14.0.x
Благодарю.