> Ну ээ результат hdcd-декодирования в 16 бит положить невозможно :)Очень даже возможно :)
> Искажения будут..
Не будет.
> лучше уж тогда вообще не трогать. Ну то есть даже пытаться
> не надо такое делать, смысл обработки же именно в представлении 20-битного
> сигнала.
Начнем с того, что 16 бит (с дитерингом) вполне достаточно для воспроизведения практически в любых реальных условиях. Даже на высококачественной аппаратуре в специально подготовленном помещении на классической музыке с минимальным использованием компрессора.
24 бита (как и 88-192 kHz) нужны для студии дабы не накапливать ошибки округления при многократной обработке и не получать артефакты при возникновении ультразвука во время записи.
Что же касается hdcd, то если я правильно понял идею hdcd причина его возникновения была в плохом качестве дешевых DAC того времени - вместо полноценных 16 бит они выдавали честных 14-12. Самый простой способ исправить ситуацию - динамическая регулировка громкости (примерно тоже что и динамическая контрастность в мониторах). Тихие фрагменты пишутся существенно громче дабы они были выше 14 бит и ослабляются дополнительным хаком в аналоговой части DAC. На самом деле вполне неплохое решение проблемы. Похожие приемы применяются в психоаккустической модели кодеков с потерями.
На сегодняшний день полноценные 15-16 бит можно сказать норма, даже для весьма дешевых решений. Смысл в подобных ухищрениях пропал. Тем более используя современный алгоритмы (нойз шейпинг) можно получить диапазон более 18 бит на 16 битной записи. При этом будет 100% совместимость с любым плеером/устройством.
> По поводу суммы - ну хз, может заголовки разные выходят?
У -f s24le нет заголовков, это чистый (raw) pcm поток.
> А cmp -l на оба полученных файлов много различий пишет?
Много - весь файл.
> Вообще там есть логирование в фильтре, если в verbose-режиме запускать.
> av_log(ctx, AV_LOG_VERBOSE, "Channel %d:
> counter A: %d, B: %d, C: %d\n", i, state->code_counterA,
>
> state->code_counterB, state->code_counterC);
> Отличный от нуля счетчик и говорит о сработавшем фильтре. Лучше через это
> проверять. А то контрольные суммы.. что-то не то.
Проверил - пишит 0. Открыл в аудиоредакторе - с фильтром он делает весь файл в два раза тише. Наверное оставляет место для расширения пиков. Но ИМХО это неправильно - сперва следовало бы убедиться, что поток hdcd и только тогда его преобразовывать.