Salve,
volevo chiedere un parere su quale secondo voi potesse essere la migliore via per preparare diversi buffer (WAVEHDR) da usare per la cattura audio tramite le waveForm API.
Il seguente codice mi è stato consigliato proprio su questo forum e devo dire che funziona alla perfezione, forse magari fa troppo uso dell'operatore new, ma per il resto credo vada bene:
Tuttavia anche il codice di seguito potrebbe andare bene, inoltre non c'è nessuna allocazione dinamica:codice:WAVEHDR **buff = new WAVEHDR*[num_buffers]; for (int i = 0; i<num_buffers; i++) { buff[i] = new WAVEHDR; ZeroMemory(buff[i],sizeof(WAVEHDR)); buff[i]->lpData = (char*) malloc(system_buf_len); buff[i]->dwBufferLength = system_buf_len; buff[i]->dwBytesRecorded = 0; buff[i]->dwUser = 0; buff[i]->dwFlags = 0; buff[i]->dwLoops = 0; waveInPrepareHeader(hwi, buff[i], sizeof(WAVEHDR)); waveInAddBuffer(hwi, buff[i], sizeof(WAVEHDR)); }
cosa ne pensate?codice:#include <vector> typedef std::vector<WAVEHDR> WaveHdrArray; typedef std::vector<char> CharArray; (...) WaveHdrArray buff(num_buffers); CharArray chArray(system_buf_len * num_buffers); for (int i = 0; i<num_buffers; i++) { ZeroMemory(&buff[i],sizeof(WAVEHDR)); buff[i].lpData = &chArray[i * system_buf_len]; buff[i].dwBufferLength = system_buf_len; buff[i].dwBytesRecorded = 0; buff[i].dwUser = 0; buff[i].dwFlags = 0; buff[i].dwLoops = 0; waveInPrepareHeader(hwi, &buff[i], sizeof(WAVEHDR)); waveInAddBuffer(hwi, &buff[i], sizeof(WAVEHDR)); }
grazie



Rispondi quotando