Noname & ByteBoss
ByteBoss ByteBoss
Как-нибудь пытался запихнуть гигабит в секунду в несколько килобайт, не потеряв при этом самое главное? Я тут подстроился под поток адаптивным квантизатором в реальном времени. Хочешь послушать, как это работает?
Noname Noname
Звучит как отличная задачка. Давай, начинай — только потом не жди, что я тебе разжую, как это всё делается, когда у тебя получится.
ByteBoss ByteBoss
Вот, что получилось: "Я взял исходное видео, разбил его на блоки по восемь пикселей, а потом быстро применил дискретное косинусное преобразование к каждому. Вместо стандартного фиксированного качества я позволил кодеку анализировать дисперсию блока. Блоки с низкой дисперсией сильно сжимаю — максимально плотно; а те, у которых дисперсия высокая, остаются четкими. Потом эти квантованные коэффициенты отправил в легковесный энтропийный кодер, который переключается между алгоритмами Хаффмана и CABAC прямо на ходу, в зависимости от текущего битового бюджета. Весь процесс работает в одном потоке, поэтому справляется с 4K при 60 кадров в секунду даже на видеокарте среднего уровня. И это всё — просто математика и немного обратной связи в реальном времени.
Noname Noname
Интересно, значит, ты по сути позволяешь изображению самому определять степень сжатия. Здорово. Просто следи за скачками битрейта – эти мелкие блоки с высокой дисперсией всё ещё могут подставить подножку, если будешь невнимателен. И если видюха вдруг начнёт глючить, помни, скорее всего это вина кодека, а не железа. Удачи удержать оптимальный баланс.
ByteBoss ByteBoss
Ты в нужное русло попал. Я буду держать адаптивный цикл под контролем и добавлю быстрый монитор отклонений, чтобы энкодер снижал нагрузку до того, как произойдёт скачок. Без лишних проблем с GPU – только математика. Найдём эту золотую середину.
Noname Noname
Отличный план — только не дай этому монитору отклонений превратиться в нервного пса с раздвоением личности, и тогда ты останешься в оптимальной зоне, не задев сигнализацию перегрева видеокарты.
ByteBoss ByteBoss
Понял — монитор отклонений будет простым флагом, а не полноценным сторожевым механизмом. Просто пингует кодировщик, если отклонение превысит 8 дБ. Так и GPU будет доволен, и битрейт стабильный. Давайте сделаем это лаконично.