LINUX.ORG.RU

V4L2 + SDL некорректно выводит изображение.

 , ,


0

1

Не могу разобраться с проблемой, изображение получаю, но оно все кривое... http://pastebin.com/z5t4avtp Вроде все логично, получил буфер, предварительно предупрдив о RGB32, затем в proccess_image обработал и вывел, но вот все на перекосяк. Пример взят с документации v4l2 и добавлены изменения только с форматом и изменино все в process_ image, в чем проблема не могу выяснить пару дней

Во-первых, надо узнать, что вернет драйвер.

                fmt.fmt.pix.width       = 640;
                fmt.fmt.pix.height      = 480;
                fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB32;
                fmt.fmt.pix.field       = V4L2_FIELD_TOP;
 
                if (-1 == xioctl(fd, VIDIOC_S_FMT, &fmt))
                        errno_exit("VIDIOC_S_FMT");
 
                /* Note VIDIOC_S_FMT may change width and height. */

When the application calls the VIDIOC_S_FMT ioctl with a pointer to a v4l2_format structure the driver checks and adjusts the parameters against hardware abilities.

Во-вторых, приведи параметры sdl surface в соответствие с параметрами v4l

    SDL_Surface * surface = SDL_CreateRGBSurfaceFrom(p,640,480,24,1280,0,0,0,0);      

Даже если драйвер полностью под тебя прогнулся, то ",24,1280," не соответствуют твоим параметрам.

fopen ★★
()
Ответ на: комментарий от mapcicc

Посмотреть на fmt.fmt.pix.pixelformat и соответственно преобразовать изображение в RGBA.

fopen ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.