Единственное заполнение, которое вы можете получить, это на ряд пикселей - вы должны использовать что-то вроде:
/* ... */
uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddress(imageBuffer);
size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
for(interesting values of y)
{
uint8_t *pointerToThisLine = baseAddress + bytesPerRow*y;
}
Вместо того, чтобы предполагать, так или иначе, что одна строка развертки заканчивается где-то в памяти, а затем следующаясразу начинается.
Тем не менее, верхняя часть вашего изображения явно правильная, и мне еще предстоит увидеть случай, когда высота тона не была равна ширине * bytesPerPixel, так что это вряд ли будет вызыватьваша проблема на практике, даже если вы не сделали это правильно.
Осматривая ваше изображение, кажется, что разбитая область содержит копии различных фрагментов рабочей области, поэтому я не думаю, что проблема заключается в заполнениисвязанный - это своего рода более тупое управление памятью или ошибка передачи.Вы проверяли эту сторону вещей?