`
//Allocating size for the rgb image
rgb = uvc_allocate_frame(frame->width * frame->height * 3);
if (!rgb)
{
printf("unable to allocate bgr frame!");
return;
}
/*
*Converting the YUV frame into RGB.
*IN : YUV frame
*OUT : rgb
*/
ret = uvc_any2rgb(frame,rgb);
if (ret)
{
uvc_perror(ret, "uvc_any2rgb");
uvc_free_frame(rgb);
return;
}
/*
*Creating a pixbuf.
*rgb->data : contains the image data)
*rgb->step : Bytes per row
*/
pixbuf = gdk_pixbuf_new_from_data((char *)rgb->data,GDK_COLORSPACE_RGB,0,8,(int )rgb->width,(int)rgb->height,
(int)rgb->step,NULL,NULL);
if(pixbuf == NULL)
{
puts("No pixbuf");
uvc_free_frame(rgb);
return ;
}
//Loading the updated pixbuf into the image
gtk_image_set_from_pixbuf (GTK_IMAGE(image),pixbuf);
uvc_free_frame(rgb);`
所以这是在调用uvc_start_streaming时触发的回调函数。 我在C中使用gtk 我从相机流式传输,我得到了帧,但是当我在窗口中流式传输时,我只获得了最后一帧。我如何获得所有中间帧?