|
Problema c waveOutOpen
|
|||
---|---|---|---|
#18+
Privet vsem Napisal (ili daje sodral s helpa) programmku vivoda buffera na sound cartu. Inizializiruyu cartu sleduyuschim obrazom: bool waveStartPlay(memBlock (*ProcessPlay)(void), AnsiString& errMes) { DWORD err; MIXERLINE mixerLine; unsigned long n, numSrc; int i=0; // ProcessPlaySound = NULL; // Clear processing if(InPlay == TRUE) // Go away if already playing { errMes="Already record. Press stop before!"; return false; } if(ProcessPlay == NULL) { errMes="No process function defined (pointer==0)"; return false; } ProcessPlaySound = ProcessPlay; InRecord = FALSE; WaveFormat.wFormatTag = WAVE_FORMAT_PCM; WaveFormat.nChannels = 1; WaveFormat.nSamplesPerSec = 8000; WaveFormat.wBitsPerSample = 2; WaveFormat.nBlockAlign = waveFormat.nChannels * (waveFormat.wBitsPerSample/8); WaveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAlign; WaveFormat.cbSize = 0; /* Open the default WAVE Out Device, specifying my callback */ err = waveOutOpen(&HWaveOut, WAVE_MAPPER, &WaveFormat, (DWORD_PTR)WaveOutProc, 0, CALLBACK_FUNCTION); switch(err) { case MMSYSERR_INVALHANDLE: errMes = "Error open. "+IntToStr(err) + " MMSYSERR_INVALHANDLE"; return false; case MMSYSERR_BADDEVICEID: errMes = "Error open. "+IntToStr(err) + " MMSYSERR_BADDEVICEID"; return false; case MMSYSERR_NODRIVER: errMes = "Error open. "+IntToStr(err) + " MMSYSERR_NODRIVER"; return false; case MMSYSERR_NOMEM: errMes = "Error open. "+IntToStr(err) + " MMSYSERR_NOMEM"; return false; case WAVERR_BADFORMAT: errMes = "Error open. "+IntToStr(err) + " WAVERR_BADFORMAT"; return false; } Vsegda poluchayu oshibku WAVERR_BADFORMAT. Pochemu? Vse vrode OK. Napisal esche programulinu dlya zapisi zvuka ispol'zuya waveInOpen... Esli zapuskayu snachala zapis' zvuka, a potom proigrivanie, to vse OK. Podskajite, gde mojet bit' problema, a to ya uje ustal hodit' po krugu. I esche, kto-nit' nahodil rabochie primeri s ispol'zovaniem waveOutOpen. Esli da, kin'te link pls S uvajeniem. Sergey. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2003, 11:58 |
|
Problema c waveOutOpen
|
|||
---|---|---|---|
#18+
помойму через MCI все это проще сделать так что прочитай на эту тему инфу ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2003, 16:38 |
|
Problema c waveOutOpen
|
|||
---|---|---|---|
#18+
А что за формат такой 2 бита на сэмрл и 8000 сэмплов в секунду, моно? Это вроде получается 4000 байт в секунду звучек, довольно говнистый вопервых, во вторых ну что это такое waveFormat.nChannels * (waveFormat.wBitsPerSample/8); у тебя сначало 2 на 8 делится(а это нолик целочисленный) а потом этот нолик полученный умножаеш на 8000 и опять нолик получаеш. н и в третьи а сделай ка ты нормальный форматик 8 бит на сэмрл 22050 (ну или 11025 на худой конец) сэмплов в секунду, вот тогда и посмотри что у тебя выходить будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2003, 21:36 |
|
|
start [/forum/topic.php?fid=57&msg=32145276&tid=2036353]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 139ms |
0 / 0 |