Вот сам файл - https://yadi.sk/d/qQf796LPtsFrR
Не открывается встроенным сплиттером(нормально открывается LAV/libavformat), причина вот в этом куске кода:
for (int i = 0; i < sizeof(Chunk.id); i++) {
BYTE ch = Chunk.data[i];
if (ch != 0x20 && (ch < \'0\' || ch > \'9\') && (ch < \'A\' || ch > \'Z\') && (ch < \'a\' || ch > \'z\')) {
TRACE(L"CWAVFile::Open() : broken file!\\n");
return E_FAIL;
}
}
Первый сивмол в id - ноль, из-за этого выходим с ошибкой. Хотя по факту там id должен быть \'DISP\', видимо где-то а расчетах ошибка либо мы чего-то не знаем(ну типа добавление нулей в конце данных и т.д.).
Очень аккуратно исправил воспроизведение этого файла в r1789, дабы не сломать все остальное.
Дай знать, если еще есть подобные файлы (моно 8 бит), которые даже после r1789 не воспроизводиться корректно.
Если чего поломалось, тоже прошу сообщить.
Такой случай встречаю впервые. Вероятнее всего как-то связано с выравниванием, но нужно официальное описание, где про это написано. А то боюсь, так выравнивает, только какая-нибудь одна утилита от MS.