Re: вопрос знатокам
От: lpd Черногория  
Дата: 10.04.20 08:02
Оценка: +3
Здравствуйте, MarcoPolo, Вы писали:
MP>
MP>params.width = (width + 15) & ~15;
MP>


Это округление до большего, кратного 16:
&~15 эквиваленто &0xfffffff0, т.е. сбросу младших 4 бит.
Скорее всего нужно для округления до границы большего блока размера 16.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Отредактировано 10.04.2020 8:04 lpd . Предыдущая версия . Еще …
Отредактировано 10.04.2020 8:04 lpd . Предыдущая версия .
Re: вопрос знатокам
От: Videoman Россия https://hts.tv/
Дата: 10.04.20 10:56
Оценка: 2 (1) +1
Здравствуйте, MarcoPolo, Вы писали:

MP>Зачем может понадобится делать так


MP>
MP>params.width = (width + 15) & ~15;
MP>


MP>в контексте обработки изображений?


Оптимизированная версия общей формулы для выравнивания ширины по заданному значению: "alidned_width = (width + align — 1) / align * align". В случае если align — степень двойки, то " / align * align" можно заменить на "& ~(align — 1)"
Отредактировано 10.04.2020 12:24 Videoman . Предыдущая версия .
Re: вопрос знатокам
От: kov_serg Россия  
Дата: 10.04.20 08:44
Оценка: +1
Здравствуйте, MarcoPolo, Вы писали:

MP>Зачем может понадобится делать так


MP>
MP>params.width = (width + 15) & ~15;
MP>


MP>в контексте обработки изображений?

Это называется выравнивание
вопрос знатокам
От: MarcoPolo  
Дата: 10.04.20 07:57
Оценка:
Зачем может понадобится делать так

params.width = (width + 15) & ~15;


в контексте обработки изображений?
Re: Округление
От: Qbit86 Кипр
Дата: 10.04.20 08:07
Оценка:
Здравствуйте, MarcoPolo, Вы писали:

MP>Зачем может понадобится делать так


MP>
MP>params.width = (width + 15) & ~15;
MP>


MP>в контексте обработки изображений?


Выглядит как округление вверх с точностью до 16 (да, шестнадцати).
Например:
16 -> 16
17 -> 32
31 -> 32
32 -> 32
Глаза у меня добрые, но рубашка — смирительная!
Re: вопрос знатокам
От: andrey.desman  
Дата: 10.04.20 08:48
Оценка:
Здравствуйте, MarcoPolo, Вы писали:

MP>Зачем может понадобится делать так


MP>
MP>params.width = (width + 15) & ~15;
MP>


MP>в контексте обработки изображений?


Просто выравнивание. Чтобы каждая строка изображения (ее адрес) был кратен 16. Например, для обработки через SSE (хотя для AVX2 маловато, а для AVX512 тем более).
Да, в конце каждой строки остается паддинг, зато по памяти все хорошо выровнено.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.