亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? frontend.c

?? LINUX下非常有名的視頻采集和顯示源代碼,直接安裝后可以使用,效果很好
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <getopt.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <sys/mman.h>#include <fcntl.h>#include <pthread.h>#include <linux/types.h> #include <gtk/gtk.h>#include <glib.h>#include <linux/videodev.h>#include <png.h>#include "gqcam.h"#include "frontend.h"#include "preferences.h"#include "save.h"#include "color.h"#include "greyscale.h"#include "timer.h"void closedialog(GtkWidget *widget, GtkWidget *dialog){  gtk_widget_destroy(dialog);}void errordialog(char *message, struct Camera *camera){  GtkWidget *errordialog;  GtkWidget *button;  GtkWidget *label;    errordialog = gtk_dialog_new();  button = gtk_button_new_with_label("Oops...");  gtk_box_pack_start (GTK_BOX (GTK_DIALOG(errordialog)->action_area), button, TRUE, TRUE, 0);  gtk_signal_connect (GTK_OBJECT(button), "clicked", (GtkSignalFunc) closedialog, errordialog);      gtk_widget_show (button);  label = gtk_label_new(message);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG(errordialog)->vbox), label, TRUE, TRUE, 8);  gtk_widget_show (label);    gtk_widget_show(errordialog);  return;}void setbrightness(GtkAdjustment *adj, struct Camera *camera){  pthread_mutex_lock(&camera->pref_mutex);  camera->vid_pic.brightness = (adj->value)*256;  camera->update_camera = 1;  pthread_mutex_unlock(&camera->pref_mutex);}void setwhite(GtkAdjustment *adj, struct Camera *camera){  pthread_mutex_lock(&camera->pref_mutex);  camera->vid_pic.whiteness = (adj->value)*256;  camera->update_camera = 1;  pthread_mutex_unlock(&camera->pref_mutex);}void setcontrast(GtkAdjustment *adj, struct Camera *camera){  pthread_mutex_lock(&camera->pref_mutex);  camera->vid_pic.contrast = (adj->value)*256;  camera->update_camera = 1;  pthread_mutex_unlock(&camera->pref_mutex);}void sethue(GtkAdjustment *adj, struct Camera *camera){  pthread_mutex_lock(&camera->pref_mutex);  camera->vid_pic.hue = (adj->value)*256;  camera->update_camera = 1;  pthread_mutex_unlock(&camera->pref_mutex);}void setcolor(GtkAdjustment *adj, struct Camera *camera){  pthread_mutex_lock(&camera->pref_mutex);  camera->vid_pic.colour = (adj->value)*256;  camera->update_camera = 1;  pthread_mutex_unlock(&camera->pref_mutex);}void setsizefull(GtkWidget *widget, struct Camera *camera){  pthread_mutex_lock(&camera->pref_mutex);  camera->vid_win.width = camera->vid_caps.maxwidth;  camera->vid_win.height = camera->vid_caps.maxheight;  camera->update_camera = 1;  pthread_mutex_unlock(&camera->pref_mutex);}void setsizehalf(GtkWidget *widget, struct Camera *camera){  pthread_mutex_lock(&camera->pref_mutex);  camera->vid_win.width = (camera->vid_caps.maxwidth)/2;  camera->vid_win.height = (camera->vid_caps.maxheight)/2;  camera->update_camera = 1;  clearimg(camera);  pthread_mutex_unlock(&camera->pref_mutex);}void setsizequarter(GtkWidget *widget, struct Camera *camera){  pthread_mutex_lock(&camera->pref_mutex);  camera->vid_win.width = (camera->vid_caps.maxwidth)/4;  camera->vid_win.height = (camera->vid_caps.maxheight)/4;  camera->update_camera = 1;  clearimg(camera);  pthread_mutex_unlock(&camera->pref_mutex);}void setdepth4(GtkWidget *widget, struct Camera *camera){  pthread_mutex_lock(&camera->pref_mutex);  camera->vid_pic.depth = 4;  camera->update_camera = 1;  pthread_mutex_unlock(&camera->pref_mutex);}void setdepth6(GtkWidget *widget, struct Camera *camera){  pthread_mutex_lock(&camera->pref_mutex);  camera->vid_pic.depth = 6;  camera->update_camera = 1;  pthread_mutex_unlock(&camera->pref_mutex);}void stop_capture(GtkWidget *widget, struct Camera *camera){  pthread_mutex_lock( &camera->pref_mutex );  if( camera->dev ) {    camera->capture = 0;    close_cam(camera, 0);  }  pthread_mutex_unlock( &camera->pref_mutex );}void start_capture(GtkWidget *widget, struct Camera *camera){  pthread_mutex_lock( &camera->pref_mutex );  open_cam(camera);  get_cam_info(camera);  camera->capture = 1;  update_controls(camera);  if( !camera->frozen ){    clearimg(camera);  }  pthread_mutex_unlock( &camera->pref_mutex );}void en_dis_able(GtkWidget *disable, GtkWidget *enable){  /* k-l-u-d-g-e */  /* when you call this func w/ NULL, NULL it will go back to the orig state */  /* I don't know how to ask GTK for object refs, so I put in this hack -jackd */  static GtkWidget *a = NULL;  static GtkWidget *b = NULL;  if( a == NULL && b == NULL ) {    b = disable;    a = enable;  }  if( disable == NULL && enable == NULL ) {    gtk_widget_set_sensitive(a, FALSE);    gtk_widget_set_sensitive(b, TRUE);  }  else {    gtk_widget_set_sensitive(disable, FALSE);    gtk_widget_set_sensitive(enable, TRUE);  }}void camera_info(GtkWidget *widget, struct Camera *camera){  GtkWidget *dialog;  GtkWidget *textbox;  GtkWidget *button;  GtkWidget *hbox;  GtkWidget *vscrollbar;  char buff[80];    dialog = gtk_dialog_new();  gtk_window_set_title(GTK_WINDOW (dialog),"Gqcam - Camera Info");  textbox = gtk_text_new(NULL, NULL);  gtk_widget_set_usize(textbox, 400, 200);  button = gtk_button_new_with_label("Close");  gtk_signal_connect_object (GTK_OBJECT (button), "clicked",			     GTK_SIGNAL_FUNC (gtk_widget_destroy), 			     GTK_OBJECT(dialog));  hbox = gtk_hbox_new(FALSE, 0);  gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox),		     hbox);  vscrollbar = gtk_vscrollbar_new (GTK_TEXT(textbox)->vadj);  gtk_container_add(GTK_CONTAINER (GTK_DIALOG(dialog)->action_area),		     button);  gtk_container_add (GTK_CONTAINER (hbox),		     textbox);  gtk_container_add (GTK_CONTAINER(hbox), vscrollbar);  gtk_widget_show_all (dialog);  sprintf(buff, "Name: %s\n", camera->vid_caps.name);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Type: %i\n", camera->vid_caps.type);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  if (camera->vid_caps.type & VID_TYPE_CAPTURE) {    sprintf(buff, "\tCan capture\n");    gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);   }  if (camera->vid_caps.type & VID_TYPE_TUNER) {    sprintf(buff, "\tCan tune\n");    gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  }  if (camera->vid_caps.type & VID_TYPE_TELETEXT) {    sprintf(buff, "\tDoes teletext\n");    gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  }  if (camera->vid_caps.type & VID_TYPE_OVERLAY) {    sprintf(buff, "\tOverlay onto frame buffer\n");    gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  }  if (camera->vid_caps.type & VID_TYPE_CHROMAKEY) {    sprintf(buff, "\tOverlay by chromakey\n");    gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  }  if (camera->vid_caps.type & VID_TYPE_CLIPPING) {    sprintf(buff, "\tCan clip\n");    gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  }  if (camera->vid_caps.type & VID_TYPE_FRAMERAM) {    sprintf(buff, "\tUses the frame buffer memory\n");    gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  }  if (camera->vid_caps.type & VID_TYPE_SCALES) {    sprintf(buff, "\tScalable\n");    gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  }  if (camera->vid_caps.type & VID_TYPE_MONOCHROME) {    sprintf(buff, "\tMonochrome only\n");    gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  }  if (camera->vid_caps.type & VID_TYPE_SUBCAPTURE) {    sprintf(buff, "\tCan capture subareas of the image\n");    gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  }  sprintf(buff, "Channels: %i\n", camera->vid_caps.channels);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Audios: %i\n", camera->vid_caps.audios);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Maxwidth: %i\n", camera->vid_caps.maxwidth);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Maxheight: %i\n", camera->vid_caps.maxheight);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Minwidth: %i\n", camera->vid_caps.minwidth);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Minheight: %i\n", camera->vid_caps.minheight);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "---------\n");  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);    sprintf(buff, "X: %i\n", camera->vid_win.x);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Y: %i\n", camera->vid_win.y);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Width: %i\n", camera->vid_win.width);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Height: %i\n", camera->vid_win.height);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Chromakey: %i\n", camera->vid_win.chromakey);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Flags: %i\n", camera->vid_win.flags);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "---------\n");  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);    sprintf(buff, "Brightness:\t%i (%i)\n", camera->vid_pic.brightness, camera->vid_pic.brightness/256);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Hue:\t\t%i (%i)\n", camera->vid_pic.hue, camera->vid_pic.hue/256);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Color:\t\t%i (%i)\n", camera->vid_pic.colour, camera->vid_pic.colour/256);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Contrast:\t%i (%i)\n", camera->vid_pic.contrast, camera->vid_pic.contrast/256);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Whiteness:\t%i (%i)\n", camera->vid_pic.whiteness, camera->vid_pic.whiteness/256);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Depth:\t\t%i\n", camera->vid_pic.depth);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  sprintf(buff, "Palette:\t%i\n", camera->vid_pic.palette);  gtk_text_insert(GTK_TEXT(textbox), NULL, NULL, NULL, buff, -1);  gtk_adjustment_set_value(GTK_ADJUSTMENT(GTK_TEXT(textbox)->vadj), 0);  //  print_cam_info(camera);}void about_dialog(GtkWidget *widget, struct Camera *camera){  GtkWidget *dialog, *label, *button;  char buff[80];  dialog = gtk_dialog_new();  sprintf(buff, "Gqcam version %s\n(C)2000 Cory Lueninghoener", VERSION);    label = gtk_label_new (buff);  button = gtk_button_new_with_label("Thanks, Cory!");       gtk_window_set_title(GTK_WINDOW (dialog),"Gqcam - About");  gtk_signal_connect_object (GTK_OBJECT (button), "clicked",			     GTK_SIGNAL_FUNC (gtk_widget_destroy), 			     GTK_OBJECT(dialog));  gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area),		     button);  gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), label, FALSE, FALSE, 10);    //gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox),  //		     label);  gtk_widget_show_all (dialog);}/*void pref_dialog(GtkWidget *widget, struct Camera *camera){  errordialog("Preferences dialog is not implemented yet...", camera);}*/void open_dialog_ok(GtkWidget *widget, struct Camera *camera){  stop_capture( NULL, camera );  usleep(1);  clearimg(camera);  sprintf(camera->devname,"%s",gtk_file_selection_get_filename (GTK_FILE_SELECTION (widget->parent->parent->parent)));  gtk_widget_destroy(widget->parent->parent->parent);    start_capture(NULL, camera);  en_dis_able( NULL, NULL );}void open_dialog(GtkWidget *widget, struct Camera *camera){  GtkWidget *opendialog;    opendialog = gtk_file_selection_new ("Open Device");  gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (opendialog)->ok_button),		      "clicked", (GtkSignalFunc) open_dialog_ok, camera);    gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (opendialog)->cancel_button), "clicked", (GtkSignalFunc) gtk_widget_destroy, GTK_OBJECT (opendialog));    gtk_file_selection_set_filename(GTK_FILE_SELECTION(opendialog), camera->devname);    gtk_widget_show(opendialog);}/* void close_dialog(GtkWidget *widget, struct Camera *camera)   {   fprintf( stderr, "close_dialog calling stop_capture\n" );   stop_capture( NULL, camera );   usleep(1);   clearimg(camera);   }*/void update_controls(struct Camera *camera){  gtk_widget_destroy(camera->controltop);  if (camera->greyscale)    create_controls_greyscale(camera);  else    create_controls_color(camera);  if (camera->docked)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产成人91porn| 中文字幕一区二区日韩精品绯色| 久久影院午夜论| 一区二区三区不卡视频| 国模一区二区三区白浆| 欧美日韩精品电影| 中文字幕在线一区免费| 久久国产福利国产秒拍| 色婷婷久久久综合中文字幕| 日韩欧美国产麻豆| 偷拍与自拍一区| 色综合久久精品| 国产精品乱码一区二区三区软件| 美女性感视频久久| 在线成人小视频| 亚洲成年人影院| 91视频免费播放| 国产精品久线观看视频| 久久电影网电视剧免费观看| 欧美一区日韩一区| 午夜欧美电影在线观看| 欧美视频一区在线| 亚洲一区二区三区在线播放| 色综合中文字幕国产| 久久久久久久久久久电影| 久久se这里有精品| 欧美一级欧美三级在线观看| 亚洲免费观看在线观看| 成人精品鲁一区一区二区| 日韩免费性生活视频播放| 秋霞午夜鲁丝一区二区老狼| 欧美老年两性高潮| 午夜伊人狠狠久久| 欧美精品在线视频| 日本欧美肥老太交大片| 51精品秘密在线观看| 日产精品久久久久久久性色| 欧美伦理电影网| 免费看日韩精品| 91精品久久久久久久99蜜桃| 亚洲va国产va欧美va观看| 欧美电影在哪看比较好| 日本 国产 欧美色综合| 欧美成人午夜电影| 国产一区二区三区高清播放| 国产三级精品三级在线专区| 国产精品99久久久久久久女警| 555www色欧美视频| 精品一区二区三区蜜桃| 日韩免费福利电影在线观看| 久久精品国产免费看久久精品| 日韩一区二区三区电影在线观看| 捆绑调教一区二区三区| 久久久www免费人成精品| 不卡的av中国片| 亚洲成人免费影院| 精品国精品国产尤物美女| 国产精品一级黄| 亚洲黄网站在线观看| 91精品国产色综合久久| 国产盗摄一区二区| 一区二区免费在线| xnxx国产精品| 日本乱人伦aⅴ精品| 久久se精品一区精品二区| 综合久久给合久久狠狠狠97色 | 亚洲欧美日本在线| 欧美美女一区二区三区| 成人综合在线观看| 亚洲成人中文在线| 中文一区二区在线观看| 在线观看91av| 99久久精品99国产精品| 老司机精品视频导航| 亚洲欧美一区二区三区极速播放| 欧美日韩二区三区| 国产精品香蕉一区二区三区| 亚洲gay无套男同| 国产精品久久久久影视| 日韩西西人体444www| 99精品视频在线免费观看| 久久av资源网| 亚洲成人免费在线观看| 国产精品大尺度| 337p日本欧洲亚洲大胆精品| 色综合一区二区| 国产黄色91视频| 五月激情丁香一区二区三区| 亚洲欧洲99久久| 久久夜色精品国产噜噜av| 欧美伦理视频网站| 欧美色精品在线视频| av电影在线观看一区| 国产精品资源网站| 久久国产尿小便嘘嘘| 午夜精品视频在线观看| 亚洲欧洲日韩女同| 日本一区二区三区四区| 日韩免费一区二区| 欧美欧美午夜aⅴ在线观看| 一本久久精品一区二区| 成人国产精品免费观看动漫| 国产伦精品一区二区三区视频青涩| 午夜精品福利一区二区蜜股av| 日韩美女啊v在线免费观看| 国产拍揄自揄精品视频麻豆| 精品国产伦一区二区三区观看方式 | 久久精品国产网站| 日本成人中文字幕| 日日骚欧美日韩| 亚洲二区在线视频| 婷婷成人综合网| 亚洲成人一区二区| 亚洲一级二级三级| 亚洲h在线观看| 亚洲在线中文字幕| 午夜视频一区二区| 日韩精品免费专区| 久久91精品久久久久久秒播| 免费观看在线综合色| 久久99精品久久久久| 国内外成人在线| 国产成人免费视频一区| 成人美女视频在线观看18| 不卡一区在线观看| 色吧成人激情小说| 欧美日韩一区二区三区四区| 91麻豆精品国产91久久久久久 | 精品久久久久久综合日本欧美| 日韩欧美国产综合| 国产日韩一级二级三级| 国产精品久久久久久久午夜片| 亚洲日本欧美天堂| 婷婷综合五月天| 国产精品一区二区免费不卡| 成人av午夜影院| 欧美午夜精品一区二区三区| 久久久久亚洲蜜桃| 中文字幕一区二区三区在线播放| 亚洲欧美日韩久久| 青娱乐精品在线视频| 毛片av中文字幕一区二区| 成人精品在线视频观看| 在线亚洲高清视频| 日韩免费看的电影| 国产婷婷色一区二区三区| 亚洲精品日韩一| 久久国产精品露脸对白| 91免费精品国自产拍在线不卡| 9191久久久久久久久久久| 国产亚洲精品中文字幕| 亚洲国产综合在线| 国产一区二区在线视频| 欧美影院午夜播放| 久久久久久免费| 午夜天堂影视香蕉久久| 国产九色sp调教91| 欧美裸体一区二区三区| 国产精品每日更新| 午夜国产精品一区| 99精品视频中文字幕| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产亚洲1区2区3区| 亚洲美女精品一区| 国产美女在线精品| 69久久99精品久久久久婷婷 | 一区二区三区精品在线| 国产一区二区精品久久| 欧美影院精品一区| 中文字幕亚洲电影| 另类小说一区二区三区| 91黄视频在线观看| 亚洲欧洲性图库| 国产精品一区二区不卡| 678五月天丁香亚洲综合网| 亚洲婷婷国产精品电影人久久| 国产一区二区在线视频| 91精品婷婷国产综合久久性色| 一区二区免费视频| 色综合天天综合给合国产| 久久久久久麻豆| 免费xxxx性欧美18vr| 欧美日韩成人激情| 一区二区三区四区在线免费观看| 成人夜色视频网站在线观看| 欧美草草影院在线视频| 日韩av成人高清| 91麻豆精品91久久久久久清纯 | 日韩毛片一二三区| 丁香五精品蜜臀久久久久99网站| 欧美大尺度电影在线| 欧美96一区二区免费视频| 国产欧美日韩精品一区| 极品少妇一区二区三区精品视频| 在线综合视频播放| 日韩av电影天堂| 日韩美一区二区三区| 亚洲成人免费电影| 91精品国产高清一区二区三区 | 99精品视频免费在线观看|