// // 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_dialog_set_alternative_button_order(GTK_DIALOG(dialog), A_RESET, GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, GTK_RESPONSE_APPLY, -1); 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); } 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; }
float ADM_flyDialogGtk::calcZoomFactor(void) { GtkWindow *window = (GtkWindow*)gtk_widget_get_ancestor((GtkWidget*)_canvas, GTK_TYPE_WINDOW); return UI_calcZoomToFitScreen(window, (GtkWidget*)_canvas, _w, _h); }
// // Video is in YV12 Colorspace // // uint8_t DIA_getMPdelogo(MPDELOGO_PARAM *param,AVDMGenericVideoStream *in) { // Allocate space for green-ised video width=in->getInfo()->width; height=in->getInfo()->height; working=new uint8_t [width*height*4]; original=NULL; uint8_t ret=0; dialog=create_dialog1(); gtk_dialog_set_alternative_button_order(GTK_DIALOG(dialog), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1); gtk_register_dialog(dialog); x=param->xoff; y=param->yoff; w=param->lw; h=param->lh; band=param->band; imgsrc=new ADMImage(width,height); incoming=in; rgbConv=new ColYuvRgb(width,height); rgbConv->reset(width,height); float zoom = UI_calcZoomToFitScreen(GTK_WINDOW(dialog), WID(drawingarea1), width, height); zoomW = width * zoom; zoomH = height * zoom; rgbBufferDisplay=new uint8_t[zoomW*zoomH*4]; gtk_widget_set_usize(WID(drawingarea1), zoomW, zoomH); if (zoom < 1) { UI_centreCanvasWindow((GtkWindow*)dialog, WID(drawingarea1), zoomW, zoomH); resizer = new ADMImageResizer(width, height, zoomW, zoomH, PIX_FMT_RGB32, PIX_FMT_RGB32); } prepare(0); gtk_widget_show(dialog); ui_upload(); ui_update(); #define CONNECT(x,y,z) gtk_signal_connect(GTK_OBJECT(WID(x)), #y,GTK_SIGNAL_FUNC(z), NULL); CONNECT(drawingarea1,expose_event,gui_draw); CONNECT(hscale1,value_changed,frame_changed); #define CONNECT_SPIN(x) CONNECT(spinbutton##x, value_changed,ui_changed) CONNECT_SPIN(X); CONNECT_SPIN(Y); CONNECT_SPIN(W); CONNECT_SPIN(H); CONNECT_SPIN(Band); draw(dialog,width,height); ret=0; int response; while( (response=gtk_dialog_run(GTK_DIALOG(dialog)))==GTK_RESPONSE_APPLY) { ui_changed(); } if(response==GTK_RESPONSE_OK) { ui_read( ); param->xoff=x; param->yoff=y; param->lw=w; param->lh=h; param->band=band; ret=1; } gtk_unregister_dialog(dialog); gtk_widget_destroy(dialog); delete working; delete imgsrc; delete rgbConv; if (resizer) { delete resizer; delete[] rgbBufferDisplay; resizer=NULL; rgbBufferDisplay=NULL; } working=NULL; dialog=NULL; original=NULL; imgsrc=NULL; return ret; }
float ADM_flyDialog::calcZoomFactor(void) { return UI_calcZoomToFitScreen(((ADM_QCanvas*)_canvas)->parentWidget()->parentWidget(), ((ADM_QCanvas*)_canvas)->parentWidget(), _w, _h); }