В памяти, возвращаемая Vidioc_dqbuf, есть мусор. ИногдаLinux

Ответить Пред. темаСлед. тема
Anonymous
 В памяти, возвращаемая Vidioc_dqbuf, есть мусор. Иногда

Сообщение Anonymous »

Я пытаюсь снять видео USB -камеру как серию изображений MJPEG. Я использую этот официальный пример в качестве базы. Пожалуйста, обратитесь к нему, так как вставить его здесь довольно долго. Единственное, что я изменил, это формат пикселя: < /p>

Код: Выделить всё

fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_MJPEG
< /code>
i.e. от v4l2_pix_fmt_yuyv 
до v4l2_pix_fmt_mjpeg . Я использую настройки по умолчанию для приложения, то есть io_method_mmap - отображаемая память для буферов. Данные имеют полностью сломанный заголовок JPEG. Когда я печатаю первые 2 байта, они должны быть FF и d8 для правильных данных JPEG, но в моем случае они случайные. Но только для первой итерации. Я поместил следующий код непосредственно перед функцией Process_image :

Код: Выделить всё

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);
для broken запустить его печатные издания:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»