открытие входного файла с помощью "wb" укроет ваш файл при его открытии.Это не может быть то, что вы хотите, верно?Я думаю, вы действительно имеете в виду:
if((fout = fopen(outfile, "wb")) == NULL) {
Кажется, что существует некоторая путаница, как работает пример FLAC.
FLAC__stream_decoder_init_file
открывает файл, которому вы даете имя файла для декодирования, и настраиваетобратные вызовы для декодирования.
FLAC__stream_decoder_process_until_end_of_stream
декодирует файл и для каждого декодированного кадра вызывает функцию write_callback, предусмотренную в вызове FLAC__stream_decoder_init_file с параметром, заданным в качестве последнего параметра для него.
InДругими словами, вся работа по записи файла выполняется в write_callback.Вот где вам предоставляются декодированные данные, и вы должны генерировать и записывать выходной файл, кадр за кадром.Если вы посмотрите на пример на http://flac.cvs.sourceforge.net/viewvc/flac/flac/examples/c/decode/file/main.c?view=markup, который, кажется, для начала вы скопировали, это именно то, что он делает.