Size: a a a

pro.graphon (and gamedev)

2020 July 13

AT

Anatoly Tomilov in pro.graphon (and gamedev)
где-то может являться проблемой, что он глобальный, конечно, хотя и с этим можно иметь дело, я думаю. Там куча всего есть для настройки каждой прагмы
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Anatoly Tomilov
Как-то читал статью, где чувак, приглашённый в id Software со стороны и не знакомый с кодовой базой и движком id Tech 3 в паре мест воткнул прагмы OpenMP (перед главным циклом #pragma omp parallel или что-то типа того), что-то где-то разбил на пару функций и в результате ускорил игру если не в разы, то на много десятков процентов. Думаю, что вся муть свыше #pragma omp parallel или #pragma omp task нигде и не нужна, кроме самых сложных сетевых серверов.
id tech 4 это был и упоминание о той статье только в этом архивном треде, кажется, сохранилось, к сожалению
источник

K

Kirill in pro.graphon (and gamedev)
Всем салют! Я кодирую видео - всё отлично, но на некоторых разрешениях, у которых соотношение сторон не равно 1.(7), например на таком как 426x240 - пиксели жёстко пидарасит. Вот исходный кадр, на котором всё норм. Ниже то, что получается на выходе. Кодек h264_nvenc. В чём может быть проблема?
источник

K

Kirill in pro.graphon (and gamedev)
источник

AZ

Anton Zhuravsky in pro.graphon (and gamedev)
Kirill
Всем салют! Я кодирую видео - всё отлично, но на некоторых разрешениях, у которых соотношение сторон не равно 1.(7), например на таком как 426x240 - пиксели жёстко пидарасит. Вот исходный кадр, на котором всё норм. Ниже то, что получается на выходе. Кодек h264_nvenc. В чём может быть проблема?
почти наверняка ошиблись с выравниванием / разрешением (просите у кодека условно 99x100, отдаете кадр 100x100)
источник

K

Kirill in pro.graphon (and gamedev)
Anton Zhuravsky
почти наверняка ошиблись с выравниванием / разрешением (просите у кодека условно 99x100, отдаете кадр 100x100)
Нет, это исключено. Размеры для картинки и для видео берутся из одной переменной. Даже если проверять получившееся видео через ffprobe - то пишет 426x240
источник

AZ

Anton Zhuravsky in pro.graphon (and gamedev)
а как кодираете? через ffmpeg или сами?
источник

K

Kirill in pro.graphon (and gamedev)
Anton Zhuravsky
а как кодираете? через ffmpeg или сами?
Сам, через libav*
источник

AZ

Anton Zhuravsky in pro.graphon (and gamedev)
я бы все же проверил еще раз все размеры - картинка уж очень типичная для описанной ошибки. есть шансы, что libav меняет разрешение сам (мин/макс, четность и тп), это все же обертка над nvenc апишкой (та просто падает, если что-то не так с размерами)
источник

K

Kirill in pro.graphon (and gamedev)
Anton Zhuravsky
я бы все же проверил еще раз все размеры - картинка уж очень типичная для описанной ошибки. есть шансы, что libav меняет разрешение сам (мин/макс, четность и тп), это все же обертка над nvenc апишкой (та просто падает, если что-то не так с размерами)
У меня было такое подозрение, и оно подтвердилось - OpenGL из-за выравнивания смещал пиксели. Но я это починил, значит остался только кодек. Инфы не могу нагуглить, по этой теме её вообще очень мало
источник

AZ

Anton Zhuravsky in pro.graphon (and gamedev)
мы кодируем "сами" (через nvenc апи), работают соврешенно произвольные размеры и соотношения сторон (с учетом четности и пр)
источник

AZ

Anton Zhuravsky in pro.graphon (and gamedev)
Kirill
У меня было такое подозрение, и оно подтвердилось - OpenGL из-за выравнивания смещал пиксели. Но я это починил, значит остался только кодек. Инфы не могу нагуглить, по этой теме её вообще очень мало
если вы из opengl забираете пиксели - посмотрите в сторону gpu-gpu кодирования, там есть API, чтобы без лишних перемещений кодировать кадры. не скажу за доступность в libav, правда
источник

K

Kirill in pro.graphon (and gamedev)
Anton Zhuravsky
если вы из opengl забираете пиксели - посмотрите в сторону gpu-gpu кодирования, там есть API, чтобы без лишних перемещений кодировать кадры. не скажу за доступность в libav, правда
Большое спасибо, обязательно посмотрю. Но сейчас пиксели бы починить )
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
скорей всего проблема в том, что не учтена длина одной строки (row stride), которая может быть больше, чем разрешение по горизонтали * размер пикселя в байтах
источник

АК

Антон Ковалев... in pro.graphon (and gamedev)
Kirill
У меня было такое подозрение, и оно подтвердилось - OpenGL из-за выравнивания смещал пиксели. Но я это починил, значит остался только кодек. Инфы не могу нагуглить, по этой теме её вообще очень мало
А нужно конкретно какой-то кодек использовать или прямо все поддерживать?
источник

IS

I S in pro.graphon (and gamedev)
Где-то проблема с форматом пикселя, скорее всего на этапе копирования буфера. Проверить можно переставив входной и выходной в NV12
источник

K

Kirill in pro.graphon (and gamedev)
Антон Ковалев
А нужно конкретно какой-то кодек использовать или прямо все поддерживать?
Конкретно h264
источник

АК

Антон Ковалев... in pro.graphon (and gamedev)
Kirill
Конкретно h264
Тогда x264 либо NVDEC/AMF чем не угодил?
источник

K

Kirill in pro.graphon (and gamedev)
Антон Ковалев
Тогда x264 либо NVDEC/AMF чем не угодил?
nvenc и использую
источник

АК

Антон Ковалев... in pro.graphon (and gamedev)
Kirill
nvenc и использую
напрямую, а не через libav
источник