// add a new parameter void net_add_param(u32 idx, const ParamDesc * pdesc) { s32 val; // copy descriptor, hm memcpy( &(net->params[net->numParams].desc), (const void*)pdesc, sizeof(ParamDesc) ); /////////////// // initialize scaler scaler_init(&(net->params[net->numParams].scaler), &(net->params[net->numParams].desc)); //////////// print_dbg("\r\n finished initializing param scaler."); //// TEST: don't // net->params[net->numParams].idx = idx; ///// net->params[net->numParams].play = 1; // net->params[net->numParams].preset = 0; net->numParams += 1; // query initial value val = bfin_get_param(idx); net->params[net->numParams - 1].data.value = scaler_get_in( &(net->params[net->numParams - 1].scaler), val); net->params[net->numParams - 1].data.changed = 0; }
int video_load_scaler(const char* name, int scale_factor) { scaler_init(&state.scaler); if(scale_factor <= 1) { return 0; } if(plugins_get_scaler(&state.scaler, name)) { return 1; } if(!scaler_is_factor_available(&state.scaler, scale_factor)) { return 1; } return 0; }
// add a new parameter void net_add_param(u32 idx, const ParamDesc * pdesc) { // copy descriptor, hm memcpy( &(net->params[net->numParams].desc), (const void*)pdesc, sizeof(ParamDesc) ); /////////////// // initialize scaler scaler_init(&(net->params[net->numParams].scaler), &(net->params[net->numParams].desc)); //////////// print_dbg("\r\n finished initializing param scaler."); net->params[net->numParams].idx = idx; net->params[net->numParams].play = 1; // net->params[net->numParams].preset = 0; net->numParams += 1; }
void initScaler(void) { scaler_init(cntx, c_cntx); }
int main(void) { open_log(NULL); ctx *context = init_ctx(); strcpy(context->dev_name, "/dev/video1"); open_device(context); //printf("%d %d\n", context->d_framerate.num, context->d_framerate.den); //context->c_top = 0; //context->c_left = 0; //context->c_width = 960; //context->c_height = 540; // //context->f_width = 960; //context->f_height = 540; //context->framerate.num = 1; //context->framerate.den = 7; init_device(context); //printf("%d %d\n", context->framerate.num, context->framerate.den); context->stop = 60; bool infinite; if (context->stop == 0) { infinite = true; } conv_ctx *conv_context = conv_ctx_init(context); //strcpy(conv_context->filename, "test.ts"); strcpy(conv_context->format, "avi"); start_capture(context); //rgb24_init(context, conv_context); scaler_init(context, conv_context); mux_encoder_init(context, conv_context); while (context->stop-- | infinite) { for (;;) { capture_timeout(context); /* read frame and go on */ if (read_frame(context)) { //rgb24(context, conv_context); scale(context, conv_context); mux_encode(context, conv_context); break; } } } write_cached(context, conv_context); //rgb24_uninit(context, conv_context); scaler_uninit(context, conv_context); mux_encoder_uninit(context, conv_context); conv_ctx_uninit(conv_context); stop_capture(context); uninit_device(context); close_device(context); close_log(); return EXIT_SUCCESS; }
int menu_options(){ struct pal_s *palp=0; int pal=0, skip=0, ret=0, cfilter=0, sfps=0, upscale=0, speed=0, i=0; char *tmp=0, *romdir=0; FILE *file; #ifdef DINGOO_NATIVE /* ** 100Mhz once caused Dingoo A320 MIPS to hang, ** when 100Mhz worked BW GB (Adjustris) game was running at 32 fps (versus 60 at 200Mhz). ** 150Mhz has never worked on my Dingoo A320. */ uintptr_t dingoo_clock_speeds[] = { 200000000, 250000000, 300000000, 336000000, 360000000, 400000000 /* , 430000000 Should not be needed */ }; /* ** under-under clock option is for GB games. ** GB games can often be ran under the already ** underclocked Dingoo speed of 336Mhz */ bool dingoo_clock_change_result; uintptr_t tempCore=336000000; /* default Dingoo A320 clock speed */ uintptr_t tempMemory=112000000; /* default Dingoo A320 memory speed */ cpu_clock_get(&tempCore, &tempMemory); #endif /* DINGOO_NATIVE */ pal = findpal(); cfilter = rc_getint("colorfilter"); if(cfilter && !rc_getint("filterdmg")) cfilter = 2; upscale = rc_getint("upscaler"); skip = rc_getint("frameskip")+1; sfps = rc_getint("showfps"); #ifdef DINGOO_NATIVE speed = 0; #else speed = rc_getint("cpuspeed")/50 - 4; #endif /* DINGOO_NATIVE */ if(speed<0) speed = 0; if(speed>11) speed = 11; romdir = rc_getstr("romdir"); romdir = romdir ? strdup(romdir) : strdup("."); start: dialog_begin("Options",NULL); dialog_option("Mono Palette",lpalettes,&pal); /* 1 */ dialog_option("Color Filter",lcolorfilter,&cfilter); /* 2 */ dialog_option("Upscaler",lupscaler,&upscale); /* 3 */ dialog_option("Frameskip",lframeskip,&skip); /* 4 */ dialog_option("Show FPS",lsdl_showfps,&sfps); /* 5 */ #if defined(WIZ) || defined(DINGOO_NATIVE) dialog_option("Clock Speed",lclockspeeds,&speed); /* 6 */ #else dialog_text("Clock Speed","Default",0); /* 6 */ #endif dialog_text("Rom Path",romdir,FIELD_SELECTABLE); /* 7 */ #ifdef GNUBOY_HARDWARE_VOLUME dialog_option("Volume", volume_levels, &volume_hardware); /* 8 */ /* this is not the OSD volume.. */ #else dialog_text("Volume", "Default", 0); /* 8 */ /* this is not the OSD volume.. */ #endif /* GNBOY_HARDWARE_VOLUME */ dialog_text(NULL,NULL,0); /* 9 */ dialog_text("Apply",NULL,FIELD_SELECTABLE); /* 10 */ dialog_text("Apply & Save",NULL,FIELD_SELECTABLE); /* 11 */ dialog_text("Cancel",NULL,FIELD_SELECTABLE); /* 12 */ switch(ret=dialog_end()){ case 7: /* "Rom Path" romdir */ tmp = menu_requestdir("Select Rom Directory",romdir); if(tmp){ free(romdir); romdir = tmp; } goto start; case 12: /* Cancel */ return ret; break; case 10: /* Apply */ case 11: /* Apply & Save */ #ifdef GNUBOY_HARDWARE_VOLUME pcm_volume(volume_hardware * 10); #endif /* GNBOY_HARDWARE_VOLUME */ palp = &gbpal[pal]; if(speed) { #ifdef DINGOO_NATIVE /* ** For now do NOT plug in into settings system, current ** (Wiz) speed system is focused on multiples of 50Mhz. ** Dingoo default clock speed is 336Mhz (CPU certified for ** 360, 433MHz is supposed to be possible). ** Only set clock speed if changed in options each and ** everytime - do not use config file */ --speed; /* check menu response is withing the preset array range/size */ if (speed > (sizeof(dingoo_clock_speeds)/sizeof(uintptr_t) - 1) ) speed = 0; tempCore = dingoo_clock_speeds[speed]; dingoo_clock_change_result = cpu_clock_set(tempCore); tempCore=tempMemory=0; cpu_clock_get(&tempCore, &tempMemory); /* currently unused */ /* TODO display clock speed next to on screen FPS indicator */ #endif /* DINGOO_NATIVE */ speed = speed*50 + 200; } sprintf(config[0],"set dmg_bgp 0x%.6x 0x%.6x 0x%.6x 0x%.6x", palp->dmg_bgp[0], palp->dmg_bgp[1], palp->dmg_bgp[2], palp->dmg_bgp[3]); sprintf(config[1],"set dmg_wndp 0x%.6x 0x%.6x 0x%.6x 0x%.6x",palp->dmg_wndp[0],palp->dmg_wndp[1],palp->dmg_wndp[2],palp->dmg_wndp[3]); sprintf(config[2],"set dmg_obp0 0x%.6x 0x%.6x 0x%.6x 0x%.6x",palp->dmg_obp0[0],palp->dmg_obp0[1],palp->dmg_obp0[2],palp->dmg_obp0[3]); sprintf(config[3],"set dmg_obp1 0x%.6x 0x%.6x 0x%.6x 0x%.6x",palp->dmg_obp1[0],palp->dmg_obp1[1],palp->dmg_obp1[2],palp->dmg_obp1[3]); sprintf(config[4],"set colorfilter %i",cfilter!=0); sprintf(config[5],"set filterdmg %i",cfilter==1); sprintf(config[6],"set upscaler %i",upscale); sprintf(config[7],"set frameskip %i",skip-1); sprintf(config[8],"set showfps %i",sfps); sprintf(config[9],"set cpuspeed %i",speed); #ifdef DINGOO_NATIVE /* FIXME Windows too..... if (DIRSEP_CHAR == '\\').... */ { char tmp_path[PATH_MAX]; char *dest, *src; dest = &tmp_path[0]; src = romdir; /* escape the path seperator (should escape other things too.) */ while(*dest = *src++) { if (*dest == DIRSEP_CHAR) { dest++; *dest = DIRSEP_CHAR; } dest++; } sprintf(config[10], "set romdir \"%s\"", tmp_path); scaler_init(0); } #else sprintf(config[10],"set romdir \"%s\"",romdir); scaler_init(0); #endif /* DINGOO_NATIVE */ for(i=0; i<11; i++) rc_command(config[i]); pal_dirty(); if (ret == 11){ /* Apply & Save */ file = fopen("ohboy.rc","w"); for(i=0; i<11; i++){ fputs(config[i],file); fputs("\n",file); } fclose(file); } break; } free(romdir); return ret; }
int menu(){ char *dir; int mexit=0; static char *loadrom; int old_upscale = 0, new_upscale = 0; old_upscale = rc_getint("upscaler"); gui_begin(); while(!mexit){ dialog_begin(rom.name,"ohBoy"); dialog_text("Back to Game",NULL,FIELD_SELECTABLE); dialog_text("Load State",NULL,FIELD_SELECTABLE); dialog_text("Save State",NULL,FIELD_SELECTABLE); dialog_text("Reset Game",NULL,FIELD_SELECTABLE); dialog_text(NULL,NULL,0); dialog_text("Load ROM",NULL,FIELD_SELECTABLE); dialog_text("Options",NULL,FIELD_SELECTABLE); dialog_text("Controls",NULL,FIELD_SELECTABLE); dialog_text("About",NULL,FIELD_SELECTABLE); dialog_text("Quit","",FIELD_SELECTABLE); #ifdef DINGOO_NATIVE dialog_text(NULL, NULL, 0); /* blank line */ dialog_text("Menu:", NULL, 0); dialog_text(" Slide Power", NULL, 0); #endif /* DINGOO_NATIVE */ switch(dialog_end()){ case 2: if(menu_state(0)) mexit=1; break; case 3: if(menu_state(1)) mexit=1; break; case 4: rc_command("reset"); mexit=1; break; case 6: dir = rc_getstr("romdir"); if(loadrom = menu_requestfile(NULL,"Select Rom",dir,"gb;gbc;zip")) { loader_unload(); ohb_loadrom(loadrom); mexit=1; } break; case 7: if(menu_options()) mexit=1; break; case 8: if(menu_controls()) mexit=1; break; case 9: if(menu_about()) mexit=0; break; case 10: exit(0); break; default: mexit=1; break; } } new_upscale = rc_getint("upscaler"); if (old_upscale != new_upscale) scaler_init(new_upscale); gui_end(); return 0; }