Код: Выделить всё
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_MJPEG
< /code>
i.e. от v4l2_pix_fmt_yuyv
Код: Выделить всё
for (size_t i = 0; i < 2; i++) {
void *v = buffers[buf.index].start;
char *c = v;
printf("%x ", c[i] & 0xff);
}
printf("%d\n", buf.index);
Код: Выделить всё
b4 8f 1
ff d8 2
ff d8 3
ff d8 0
ff d8 1
Что интересно, буферный индекс Buf.index - всегда для 1 для разбитых прогонов для самой первой итерации. Если это 0, то все работает нормально. < /P>
Я, честно говоря, понятия не имею, что происходит. Я вижу, что в коде есть ожидание, используя Select , что должно гарантировать, что память не используется для написания, но, тем не менее, кажется, что возвращаемая память, выпущенная в поисках, каким-то образом повреждена. Но почему только для первого кадра?
Подробнее здесь: https://stackoverflow.com/questions/796 ... -sometimes