Страница 1 из 1

OpusEnc --set-ctrl-int параметры

Сообщение #1Добавлено: 27.08.2015, 11:36
j7n
Где розыскать все "advanced" параметры для OpusEnc --set-ctrl-int ?

Я нашел в сети только две:
4004=1104 to force max bandwidth to SWB (12kHz)
4008=1105 to force fullband

Их идентификаторы совсем не понятные! :evil:

Мне собственно интересно есть ли параметр чтобы отключить DC rejection filter (3Hz cutoff). Такой параметр имеется например в Dolby. Я хочу закодировать несколько chiptunes, которые все имеют переменный DC-offset.

Я понимаю что уже не "модно" самому кодеки настраивать, но спор по эту тему начинать не хочу.

Сообщение #2Добавлено: 27.08.2015, 17:20
Sojindox
Лично я ничего подобного в исходниках не нашел, видимо это не задекларировано в комментариях.

но за 4008=1105 - спасибо) отписывайся если что найдешь!

Сообщение #3Добавлено: 27.08.2015, 19:51
j7n
Я сам не проверял эти параметры, так как не вижу им применения. Я их нашел поиском, где обсуждалось как сделать низкокачественную кодировку для сравнения (low anchor). Если 4080 какой то адрес в памяти, то скорее всего он будет не применим к другим версиям.

DC-rejection у кодека действительно есть.

Изображение

Из-за этого местами растет пиковый уровень, и может возникать клиппинг. Не знаю почему так сделали. Highpass я употребляю только для винила, но с более высокой частоты чем 3 Hz.

Сообщение #4Добавлено: 27.08.2015, 22:25
Sojindox
да, это интересно будет обсудить http://www.hydrogenaud.io/forums/index.php?showtopic=109964

разработчик Rockbox Saratoga сказал вот что по этому поводу - I'd say the Vorbis one looks like its clipping more, but if this is a problem, just use replaygain so it won't clip. Its not a good idea to rely on DC anyway, since your DAC probably won't produce it, so you may get clipping anyway on playback.

Сообщение #5Добавлено: 28.08.2015, 00:19
j7n
Я не стал спрашивать в HA так-как тут обязательно надо будет предоставить ABX-логи. Я исходил из соображений что в запись не следует внести какие-либо обработки без причин на того. Даже если у меня нет саб-вуфера, и разницу я сейчас не улавливаю.

Спойлер
Много лет назад я обжегся на рекоммендацию использовать пресет "Remove very low and inaudible frequencies" в Sound Forge. Они ведь профессионалы и знают лучше. Не так ли?

"Removing very low and inaudible frequencies after recording eliminates any DC offset and gives your sounds more headroom for audible frequencies."

Но оказалось что данный эквалайзер также убрал басс.

Конечно уменьшить громкость на безопасный уровень всегда разумно, и я это буду соблудать. (the Vorbis one looks like its clipping more..) На скриншоте ясно, что я активировал "зум" чтобы показывать место где работа фильтра отчетливо видна на огибающую одного "инструмента" (шкала слева).

Правда что DC скорее не передается на колонки/наушники. Я записивал музыку из игр через Yamaha OPL-3 (игр периода Doom, Strife, Warcraft, и.т.д). Наблюдал что в Stereo Out, DC еще был, но при записи с другого комьютера, зависило от того подключался ли к усиленному выходу или прямому линейному. Может это зависит от комбинации с конкретным ADC, конденсаторами.

Но это уже как бы оффтопик. Проверил обе параметра на версию с rarewares: действуют. (Но они бесполезны.) Пишите в тему если найдете любые другие настройки. В прошлом году например читал, что один пользователь желал форсировать режим CELT.

Однако...: One limitation you are coming across is that, while the codec has a vast range of potential internal configurations, the current encoders tend to pick what they think is best and not give you a lot of choice. Works well most of the time, but inevitably you will find situations where a different setting would be better.

Сообщение #6Добавлено: 28.08.2015, 11:53
Sojindox
А можно тестовый семпл получить?

Сообщение #7Добавлено: 29.08.2015, 10:35
j7n
Слышимых разниц нет. Извините, что вводил в заблуждение.

Сообщение #8Добавлено: 29.08.2015, 12:54
Sojindox
Xiph.org Speex developer, jmvalin - написал что отключение DC-rejection повлечет за собой повышение шума на 100 Hz.

Слышимых разниц нет. Извините, что вводил в заблуждение.

Да ничего, заходите еще!

Сообщение #9Добавлено: 07.09.2015, 18:46
Sojindox
теоретически предполагаю что это отключается в opus_encoder.c (libopus 1.1)
Код: Выделить всё
361   /* Approximates -round(log2(4.*cutoff_Hz/Fs)) */
362   shift=celt_ilog2(Fs/(cutoff_Hz*3));

где тройка означает сами знаете что)

еще нашел как перевести опус в двухканальный режим, без всяких там урезаний, что увеличивает качество L/R ценой более высокого битрейта

Код: Выделить всё
    if (st->force_channels!=OPUS_AUTO && st->channels == 2)
    {
        st->stream_channels = st->force_channels;
    } else {
#ifdef FUZZING
       /* Random mono/stereo decision */
       if (st->channels == 2 && (rand()&0x1F)==0)
          st->stream_channels = 3-st->stream_channels;
#else
       /* Rate-dependent mono-stereo decision */
       if (st->channels == 2)
       {
          opus_int32 stereo_threshold;
          stereo_threshold = stereo_music_threshold + ((voice_est*voice_est*(stereo_voice_threshold-stereo_music_threshold))>>14);
          if (st->stream_channels == 2)
             stereo_threshold -= 1000;
          else
             stereo_threshold += 1000;
          st->stream_channels = (equiv_rate > stereo_threshold) ? 2 : 1;
       } else {
          st->stream_channels = st->channels;
       }

1000 заменить на 4000
P.S.
жаль что мне не хватает мозгов, скомпилировать opus-tools 0.1.9 на g++ , исходники от xiph явно ориентированны на многолетнее долбление бубна...