PlaybackChannel::PlaybackChannel(RedClient& client, uint32_t id) : RedChannel(client, SPICE_CHANNEL_PLAYBACK, id, new PlaybackHandler(*this), Platform::PRIORITY_HIGH) , _wave_player (NULL) , _mode (SPICE_AUDIO_DATA_MODE_INVALID) , _celt_mode (NULL) , _celt_decoder (NULL) , _playing (false) { #ifdef WAVE_CAPTURE init_wave(); #endif PlaybackHandler* handler = static_cast<PlaybackHandler*>(get_message_handler()); handler->set_handler(SPICE_MSG_MIGRATE, &PlaybackChannel::handle_migrate); handler->set_handler(SPICE_MSG_SET_ACK, &PlaybackChannel::handle_set_ack); handler->set_handler(SPICE_MSG_PING, &PlaybackChannel::handle_ping); handler->set_handler(SPICE_MSG_WAIT_FOR_CHANNELS, &PlaybackChannel::handle_wait_for_channels); handler->set_handler(SPICE_MSG_DISCONNECTING, &PlaybackChannel::handle_disconnect); handler->set_handler(SPICE_MSG_NOTIFY, &PlaybackChannel::handle_notify); handler->set_handler(SPICE_MSG_PLAYBACK_MODE, &PlaybackChannel::handle_mode); set_capability(SPICE_PLAYBACK_CAP_CELT_0_5_1); }
ENTRYPOINT void init_cube (ModeInfo *mi) { int i; cube_configuration *cc; MI_INIT (mi, ccs); cc = &ccs[MI_SCREEN(mi)]; if ((cc->glx_context = init_GL(mi)) != NULL) { reshape_cube (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); } cc->trackball = gltrackball_init (False); cc->ncolors = 256; cc->colors = (XColor *) calloc(cc->ncolors, sizeof(XColor)); reset_colors (mi); init_wave (mi); cc->ncubes = MI_COUNT (mi); if (cc->ncubes < 1) cc->ncubes = 1; cc->cubes = (cube *) calloc (sizeof(cube), cc->ncubes); for (i = 0; i < cc->ncubes; i++) { /* Set the size to roughly cover a 2x2 square on average. */ GLfloat scale = 1.8 / sqrt (cc->ncubes); cube *cube = &cc->cubes[i]; double th = -(skew ? frand(skew) : 0) * M_PI / 180; cube->x = (frand(1)-0.5); cube->y = (frand(1)-0.5); cube->z = frand(0.12); cube->cth = cos(th); cube->sth = sin(th); cube->w = scale * (frand(1) + 0.2); cube->d = scale * (frand(1) + 0.2); if (cube->x < cc->min_x) cc->min_x = cube->x; if (cube->y < cc->min_y) cc->min_y = cube->y; if (cube->x > cc->max_x) cc->max_x = cube->x; if (cube->y > cc->max_y) cc->max_y = cube->y; } /* Sorting by depth improves frame rate slightly. With 6000 polygons we get: 3.9 FPS unsorted; 3.1 FPS back to front; 4.3 FPS front to back. */ qsort (cc->cubes, cc->ncubes, sizeof(*cc->cubes), cmp_cubes); }
void DXChannel::init_desc(BufferDesc &desc) { init_wave(wfx, desc); memset(&bufdesc, 0, sizeof(DSBUFFERDESC)); bufdesc.dwSize = sizeof(DSBUFFERDESC); //DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLFREQUENCY; bufdesc.dwFlags = DSBCAPS_CTRLFREQUENCY | DSBCAPS_CTRLVOLUME; bufdesc.dwBufferBytes = desc.BufferBytes ? desc.BufferBytes : 3 * wfx.nAvgBytesPerSec; bufdesc.lpwfxFormat = &wfx; }
void check_enemy_wave(GameState * state) { if (state->spells.frost_wave_active) { return; } if (state->wave.completed) { state->wave.cool_down_counter++; if (state->wave.cool_down_counter == state->wave.cool_down) { init_wave(state); } } else { if (state->wave.nr_of_enemies == state->wave.nr_of_spawned_enemies) { state->wave.completed = 1; state->wave.started = 0; } else { init_spawning(state); } } }
void init_game_state(GameState * state) { //stel de beginwaarden van eigenschappen in init_world_from_file(&state->world, "assets/worlds/world1.world"); state->game_over = 0; state->wave.wave_number = 0; state->spells.frost_wave_active = 0; state->spells.poison_gas_active = 0; state->spells.spell_duration = 0; init_wave(state); state->enemies = (Entity*) malloc(sizeof(Entity)); state->towers = (Entity**) malloc(sizeof(Entity*)); state->enemies_length = 0; state->towers_length = 0; state->world.castle->castle.health = CASTLE_HEALTH; state->mana = 1250; state->money = 10000; state->score = 0; state->play = 0; init_buttons(&state->hud); }
void DXChannel::setFormat(BufferDesc &d) { init_wave(wfx, d); buffer->SetFormat(&wfx); }
CreateSample::CreateSample(BufferDesc &bd, void *x) : lpvWrite(0), dwLength(0), desc({0}), xdata(x) { init_wave(desc, bd); maxval = (1 << desc.wBitsPerSample) -1; }
int main(int argc, char* argv[]) { bool impresp; int nt,nx,nz,nw,init,i,padfactor,nfilt,nkol,it,ix,iz,iw; float v,dx,dz,lambda,sixth,gamma,epsdamp,pi2,dw,dt, w,wov; sf_complex wov2, a, b, c, d, cshift; float ***ppp; sf_complex *pp, *qq; cfilter aa, fac1, fac2; sf_file out, imp=NULL; sf_init(argc,argv); out = sf_output("out"); sf_setformat(out,"native_float"); if (!sf_getint("nz",&nz)) nz=96; if (!sf_getint("nx",&nx)) nx=48; if (!sf_getint("nt",&nt)) nt=12; if (!sf_getint("nw",&nw)) nw=2; if (!sf_getint("init",&init)) init=1; if (!sf_getfloat("v",&v)) v=1.; if (!sf_getfloat("dz",&dz)) dz=1.; if (!sf_getfloat("dx",&dx)) dx=2.; if (!sf_getfloat("lambda",&lambda)) lambda=nz*dz/4.; sf_putint(out,"n1",nz); sf_putint(out,"n2",nx); sf_putint(out,"n3",nt); aa = allocatechelix(9); if (!sf_getfloat("sixth",&sixth)) sixth=0.0833; if (!sf_getfloat("gamma",&gamma)) gamma=0.667; if (!sf_getfloat("epsdamp",&epsdamp)) epsdamp=0.01; if (!sf_getint("padfactor",&padfactor)) padfactor=1024; if (!sf_getint("nfilt",&nfilt)) nfilt=nx+2; if (!sf_getbool("impresp",&impresp)) impresp=false; if (impresp) { imp = sf_output("imp"); sf_setformat(imp,"native_complex"); sf_putint(imp,"n1",2*nx); sf_putint(imp,"n2",2); } ppp = sf_floatalloc3(nz,nx,nt); pp = sf_complexalloc(nx*nz); qq = sf_complexalloc(nx*nz); pi2 = 2.*SF_PI; dw = v*pi2/lambda; dt = pi2/(nt*dw); nkol=pad2(padfactor*nx); /* dkol=pi2/nkol; */ for (it=0; it < nt; it++) { for (ix=0; ix < nx; ix++) { for (iz=0; iz < nz; iz++) { ppp[it][ix][iz] = 0.; } } } fac1 = allocatechelix(nfilt); fac2 = allocatechelix(nfilt); helimakelag(fac1,nx,nz); helimakelag(fac2,nx,nz); xkolmog_init(nkol); for (iw=0; iw < nw; iw++) { /* frequency loop */ w = (iw+1)*dw; if (impresp) w=dw*nw/2; wov = w/v; wov2 = sf_cmplx(epsdamp,wov); #ifdef SF_HAS_COMPLEX_H wov2 = -wov2*wov2; #else wov2 = sf_cneg(sf_cmul(wov2,wov2)); #endif sf_warning("%g %g (%d of %d)",crealf(wov2),cimagf(wov2),iw,nw); init_wave(init,nx,dx,nz,dz,pp,wov,nw,iw); for (iz=0; iz < nx*nz; iz++) { qq[iz]=sf_cmplx(0.,0.); } /* isotropic laplacian = 5-point laplacian */ a= sf_cmplx(0.,0.); #ifdef SF_HAS_COMPLEX_H b= gamma*(1+sixth*wov2)* (-1./(dz*dz)); c= gamma*(1+sixth*wov2)* (-1./(dx*dx)); d= gamma*(1+sixth*wov2)* (2/(dx*dx) + 2/(dz*dz)) -wov2; #else b = sf_crmul(sf_cadd(sf_cmplx(1.,0.),sf_crmul(wov2,sixth)), gamma*(-1./(dz*dz))); c = sf_crmul(sf_cadd(sf_cmplx(1.,0.),sf_crmul(wov2,sixth)), gamma*(-1./(dx*dx))); d = sf_cadd(sf_crmul(sf_cadd(sf_cmplx(1.,0.),sf_crmul(wov2,sixth)), gamma*(2/(dx*dx) + 2/(dz*dz))),sf_cneg(wov2)); #endif /* + rotated 5-point laplacian */ #ifdef SF_HAS_COMPLEX_H a += (1-gamma)*(1+sixth*wov2)* (-0.5/(dx*dz)); b += (1-gamma)*(1+sixth*wov2)*0.; c += (1-gamma)*(1+sixth*wov2)*0.; d += (1-gamma)*(1+sixth*wov2)* 2.0/(dx*dz); #else a = sf_cadd(a,sf_crmul(sf_cadd(sf_cmplx(1.0,0.0), sf_crmul(wov2,sixth)), (1-gamma)*(-0.5/(dx*dz)))); d = sf_cadd(d,sf_crmul(sf_cadd(sf_cmplx(1.0,0.0), sf_crmul(wov2,sixth)), (1-gamma)*(2.0/(dx*dz)))); #endif aa->flt[0] = a; aa->lag[0] = -nx-1; aa->flt[1] = b; aa->lag[1] = -nx; aa->flt[2] = a; aa->lag[2] = -nx+1; aa->flt[3] = c; aa->lag[3] = -1; aa->flt[4] = d; aa->lag[4] = 0; aa->flt[5] = c; aa->lag[5] = 1; aa->flt[6] = a; aa->lag[6] = nx-1; aa->flt[7] = b; aa->lag[7] = nx; aa->flt[8] = a; aa->lag[8] = nx+1; xkolmog_helix(aa,fac1,fac2); for (i=0; i < nfilt; i++) { #ifdef SF_HAS_COMPLEX_H fac1->flt[i]=0.5*(fac2->flt[i]+conjf(fac1->flt[i])); #else fac1->flt[i]=sf_crmul(sf_cadd(fac2->flt[i],conjf(fac1->flt[i])), 0.5); #endif } if (impresp) { for (iz=0; iz < nx*nz; iz++) { pp[iz]=sf_cmplx(0.,0.); } pp[nx/2-1]=sf_cmplx(1.,0.); sf_complexwrite(pp,2*nx,imp); } cpolydiv_init(nx*nz,fac2); cpolydiv_lop(false,false,nx*nz,nx*nz,pp,qq); if (impresp) { sf_complexwrite(qq,2*nx,imp); break; } /* back to time domain */ for (it=0; it < nt; it++) { cshift = cexpf(sf_cmplx( 0.,-w*it*dt)); for (ix=0; ix < nx; ix++) { for (iz=0; iz < nz; iz++) { #ifdef SF_HAS_COMPLEX_H ppp[it][ix][iz] += crealf(qq[ix+iz*nx]*cshift); #else ppp[it][ix][iz] += crealf(sf_cmul(qq[ix+iz*nx],cshift)); #endif } } } } /* end frequency loop */ sf_floatwrite(ppp[0][0],nt*nx*nz,out); exit(0); }