Подтвердить что ты не робот

Почему мое изображение Bytes per Row больше, чем его байты на пиксель, умноженное на его ширину?

Я конвертирую изображения в файл MOV, и со мной случилось что-то интересное. Я записал свои биты на цветной компонент, бит на пиксель и байты на строку. Здесь мой код:

NSLog(@"Image width: %d, Height: %d", CGImageGetWidth(image), CGImageGetHeight(image));
NSLog(@"BPC: %d \ BPP: %d \ ByPR: %d", CGImageGetBitsPerComponent(image), CGImageGetBitsPerPixel(image), CGImageGetBytesPerRow(image));

Здесь мой вывод:

Ширина изображения: 300, Высота: 300 (все как ожидалось) BPC: 8 (8 бит на цвет... пока что так хорошо) BPP: 32 (32 = 4 компонента ARGB * 8 бит на цвет... получили) ByPR: 1216 (300 пикселей на строку * 4 байта на пиксель = 1200 байт за строку)

Почему я регистрировал 1216 байт в строке, а не 1200? Кстати, это не просто случайность. Когда я создаю видео на основе этих чисел для размеров буфера, он работает. Когда я создаю его с 1200 байтами в строке, я получаю некоторый испорченный эффект сглаживания.

Мысли?!

4b9b3361

Ответ 1

Система любит, чтобы изображения были кратными 64 байтам в строке, предположительно для лучшей производительности из-за выравнивания строки в кеше. 1200 не кратно 64, но 1216.