// // Video is in YV12 Colorspace // // uint8_t DIA_getEqualizer(EqualizerParam *param, AVDMGenericVideoStream *in) { int ret; uint32_t l,f; uint32_t max=in->getInfo()->nb_frames; incoming=in; // Allocate space for green-ised video w=in->getInfo()->width; h=in->getInfo()->height; rgbConv=new ColYuvRgb(w,h); rgbConv->reset(w,h); histogram=new uint32_t [256*128]; histogramout=new uint32_t [256*128]; imgdst=new ADMImage(w,h); imgsrc=new ADMImage(w,h); imgdisplay=new ADMImage(w,h); if(curframe<max) max=curframe; ADM_assert(in->getFrameNumberNoAlloc(max, &l, imgsrc,&f)); memcpy(imgdisplay->data+w*h,imgsrc->data+w*h,(w*h)>>1); // init local equalizer memcpy(scaler,param->_scaler,sizeof(scaler)); dialog=create_dialog1(); gtk_register_dialog(dialog); gtk_widget_set_usize(WID(drawingarea_histin), 256,128); gtk_widget_set_usize(WID(drawingarea_histout), 256,128); float zoom = UI_calcZoomToFitScreen(GTK_WINDOW(dialog), WID(drawingarea1), w, h); zoomW = w * zoom; zoomH = h * zoom; rgbbuffer=new uint32_t[zoomW*zoomH]; gtk_widget_set_usize(WID(drawingarea1), zoomW, zoomH); if (zoom < 1) { UI_centreCanvasWindow((GtkWindow*)dialog, WID(drawingarea1), zoomW, zoomH); resizer = new ADMImageResizer(w, h, zoomW, zoomH, PIX_FMT_YUV420P, PIX_FMT_RGB32); } gtk_dialog_add_action_widget (GTK_DIALOG (dialog), WID(buttonCancel), GTK_RESPONSE_CANCEL); gtk_dialog_add_action_widget (GTK_DIALOG (dialog), WID(button3), GTK_RESPONSE_OK); gtk_dialog_add_action_widget (GTK_DIALOG (dialog), WID(buttonApply), GTK_RESPONSE_APPLY); gtk_dialog_add_action_widget (GTK_DIALOG (dialog), WID(buttonReset), A_RESET); upload(); gtk_signal_connect(GTK_OBJECT(WID(drawingarea1)), "expose_event", GTK_SIGNAL_FUNC(draw), NULL); gtk_signal_connect(GTK_OBJECT(WID(gui_scale)), "value_changed",GTK_SIGNAL_FUNC(frame_changed), NULL); // gtk_signal_connect(GTK_OBJECT(WID(curve1)), "curve-type-changed",GTK_SIGNAL_FUNC(spinner), NULL); /* */ GtkWidget *curve=WID(curve1); gtk_curve_set_range (GTK_CURVE(curve),0,255.,0.,255.); gtk_widget_show(dialog); upload(); compute_histogram(); spinner(); ret=0; int response; _again: while( (response=gtk_dialog_run(GTK_DIALOG(dialog)))==GTK_RESPONSE_APPLY) { spinner(); } if(response==A_RESET) { gfloat duo[2]= {0,255.}; gtk_curve_set_curve_type(GTK_CURVE(WID(curve1)),GTK_CURVE_TYPE_SPLINE); gtk_curve_reset(GTK_CURVE(WID(curve1))); goto _again; } if(response==GTK_RESPONSE_OK) { printf("Accepting new values\n"); memcpy(param->_scaler,scaler,sizeof(scaler)); ret=1; } gtk_unregister_dialog(dialog); gtk_widget_destroy(dialog); delete imgdst; delete imgsrc; delete imgdisplay; delete [] rgbbuffer; delete [] histogram; delete [] histogramout; delete rgbConv; if (resizer) { delete resizer; resizer=NULL; } rgbConv=NULL; histogram=NULL; histogramout=NULL; rgbbuffer=NULL; imgdst=NULL; imgsrc=NULL; dialog=NULL; imgdisplay=NULL; return ret; }
void set_points_in_curve( int type, GtkWidget *curve) { gtk_curve_set_curve_type( GTK_CURVE(curve), type ); }