我想在GTK窗口中顯示原始RGB圖像(固定大小,不帶alpha通道,< 60fps)的流。我在這裏使用cairo was told。C,cairo:呈現RGB圖像流
我的代碼可以很好地處理單個圖像,並且仍然可以以大約1 FPS的速度處理圖像流。 高於2 FPS我的應用程序崩潰與Xorg錯誤,所以我認爲我的開羅機制是錯誤的。
它看起來有點像這樣:
unsigned char *image_data;
cairo_surface_t *image;
GtkWidget *main_window;
void init_window()
{
// (...) all the GTK initialization stuff
image_data = malloc(IMAGE_BYTES);
image = cairo_image_surface_create_for_data(image_data,
CAIRO_FORMAT_RGB24,
IMAGE_W, IMAGE_H,
cairo_format_stride_for_width(CAIRO_FORMAT_RGB24, IMAGE_W));
}
void update_image()
{
cairo_t *cr;
cr = gdk_cairo_create(main_window->window);
cairo_set_source_surface(cr, image, 10, 10);
cairo_paint(cr);
cairo_destroy(cr);
}
int main()
{
// (...)
init_window();
while ((image_data = receive_image()) != NULL)
update_image();
}
什麼是呈現一系列圖像,在開羅的正確方法? 哪些結構應該重新使用,哪些結構需要重新創建?
提示:這是爲UVC攝像頭完成的:https://github.com/ufo-kit/libuca,以防萬一您正在處理相機。 – drahnr 2014-03-21 09:56:46