如何在GTK中每秒更新图像?

时间:2017-06-16 07:30:04

标签: c multithreading image gtk libusb

`

  //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 我从相机流式传输,我得到了帧,但是当我在窗口中流式传输时,我只获得了最后一帧。我如何获得所有中间帧?

0 个答案:

没有答案