bool CAudioGenerateDoc::GenerateBegin() { // // Waveform storage // m_waveformBuffer.Start(NumChannels(), SampleRate()); if(m_fileoutput) { if(!OpenGenerateFile(m_wave)) return false; } ProgressBegin(this); if(m_audiooutput) { m_soundstream.SetChannels(NumChannels()); m_soundstream.SetSampleRate(int(SampleRate())); m_soundstream.Open(((CAudioProcessApp *)AfxGetApp())->DirSound()); } return true; }
void CAudioMixerWaveADPCM::Mix( IAudioDevice *pDevice, channel_t *pChannel, void *pData, int outputOffset, int inputOffset, fixedint fracRate, int outCount, int timecompress ) { if ( NumChannels() == 1 ) pDevice->Mix16Mono( pChannel, (short *)pData, outputOffset, inputOffset, fracRate, outCount, timecompress ); else pDevice->Mix16Stereo( pChannel, (short *)pData, outputOffset, inputOffset, fracRate, outCount, timecompress ); }
/* * Do what the Binder needs to do before a domain goes away */ void Binder_FreeDomain(DomainMgr_st *dm_st, dcb_ro_t *rop, dcb_rw_t *rwp) { PerDomain_st *bst = ROP_TO_PDS(rop); VP_clp vp = &rop->vp_cl; Channel_EP ep; TRC (eprintf ("Binder_FreeDomain: %qx\n", rop->id)); /* XXX Needs more thought here. */ for (ep = 0; ep < VP$NumChannels(vp); ep++) { Plumber$Disconnect (Plumber, bst->rop, ep); } }
virtual int GetMixSampleSize() { return CalcSampleSize( 16, NumChannels() ); }
static uint32_t NumChannels_m (VP_cl *self ) { return VP$NumChannels(self); }
void Main (Closure_clp self) { FB_st *st; IOEntryMod_clp emod; int i; TRC(printf("FB/MGA: entered\n")); st = (FB_st *)Heap$Malloc(Pvs(heap), sizeof(FB_st)); if (st == NULL) RAISE_Heap$NoMemory(); memset(st, 0, sizeof(FB_st)); CL_INIT(st->cl, &fb_ms, st); /* Before we do anything, see if we can find a framebuffer device that we understand. */ st->cardbase = (Pixel_t *) MGAInit(FB_WIDTH, FB_HEIGHT, FB_DEPTH, FB_MODE); TRC(printf("st->cardbase = %p\n", st->cardbase)); if(!st->cardbase) { fprintf(stderr, "Failed to initialise MGA device\n"); Heap$Free(Pvs(heap), st); return; } #ifdef TEST_CARD test_card16a( (uint16_t *) st->cardbase ); #else memset((uchar_t *) st->cardbase, 0, FB_WIDTH * FB_HEIGHT * (FB_DEPTH/8) ); #endif /* Init state */ st->qosleft = 100; st->cursched = 0; st->schedndx = 0; for (i = 0; i < FB_SCHEDLEN; i++) { st->sched[0][i] = st->sched[1][i] = 0; } /* Initialise window DS */ for (i = 0 ; i < FB_MAX_WINDOWS; i++) { FB_Window *w = &st->window[i]; w->wid = i; w->free = True; w->tagword = w->tag = w->wid; /* extend the tag to be a full word (32 or 64 bits) wide */ w->tagword |= (w->tagword<<8); w->tagword |= (w->tagword<<16); /* Generates harmless overflow warning on 32bit architectures */ w->tagword |= (w->tagword<<32); } /* Initialise stream DS */ for (i = 0 ; i < FB_MAX_STREAMS; i++) { FB_Stream *s = &st->stream[i]; s->sid = i; s->free = True; s->qos = 0; } TRC(printf("About to create an entry...\n")); /* Create an entry*/ emod = NAME_FIND ("modules>IOEntryMod", IOEntryMod_clp); st->fbentry = IOEntryMod$New (emod, Pvs(actf), Pvs(vp), VP$NumChannels (Pvs(vp))); TRC(printf("About to grab stretches for FB and CLIP\n")); /* Grab stretches for FB and CLIP */ { Stretch_clp str; Stretch_Size size; /* Get a stretch for clip RAM. Allocate a spare line of tiles at the start and end in case we need to blit over the edges */ str = STR_NEW(sizeof(tag_t)*FB_WIDTH*(FB_HEIGHT+16)); if (!str) { fprintf(stderr,"Couldn't get stretch"); } st->clipstr = str; st->clipbase = (tag_t *) STR_RANGE(str, &size); st->clip = st->clipbase + (FB_WIDTH * 8); if (!st->clip || size < (FB_WIDTH*(FB_HEIGHT+16))) { fprintf(stderr,"Stretch bogus\n"); } TRC(fprintf(stderr,"FB: Clip RAM at %p size %lx\n", st->clip, size)); } TRC(printf("About to init clip RAM\n")); /* Initialise the clip RAM */ InitClipRAM(&st->cl); TRC(printf("About to add dev>fblite to namespace\n")); CX_ADD("dev>fblite", st->cardbase, addr_t); TRC(printf("About to init blitting code\n")); /* Init the blitting code */ blit_init(st); /* Turn on cursor */ TRC(printf("About to turn on cursor\n")); MGALoadCursor(st->cardbase, CURSOR_IDX, CURSOR_BITS); MGAMoveCursor(st->cardbase, CURSOR_IDX, CURSOR_INITX, CURSOR_INITY); /* Export management interface */ TRC(printf("About to export management interface\n")); IDC_EXPORT ("dev>FB", FB_clp, &st->cl); /* Go into a loop to service all the clients */ /* Launch WSSvr */ TRC(printf("Trying to launch wssvr\n")); TRY { Closure_clp wssvr; wssvr = NAME_FIND("modules>WSSvr", Closure_clp); Threads$Fork(Pvs(thds), wssvr->op->Apply, wssvr->st, 0); st->wssvr_shares_domain = True; } CATCH_ALL { printf("Couldn't launch WSSvr - exception %s\n", exn_ctx.cur_exception); } ENDTRY; TRC(printf("FB/MGA: Init Done. (%ix%i %ibpp mode %i)\n", FB_WIDTH,FB_HEIGHT,FB_DEPTH,FB_MODE)); blit_loop(st); }