miik napisał(a)
A możesz dac przykład? Jak te struktury wypełnić? I co pobrać? Bo ja przedstawić graficznie sobie poradze, tylko potrzebuje uchwyt tego co mierzy dźwięk.
A co ty chcesz tam wypełniać?? (zakładam, że chcesz wykorzystać kody, które podałeś).
Po tym jak driver audio wypełni buffer (
WAVEHDR
) samplami, wyśle do aplikacji komunikat WIM_DATA. W komunikacie tym zawarty jest uchwyt do otwartego urządzenia audio i wskaźnik do bufora z nagranymi samplami (patrz CSoundRecorder::ThreadProc
). Teraz jak już masz wskaźnik do bufora to możesz <u>odczytać</u> sample:
```cpp
lpHdr->dwBytesRecorded
<--- liczba bajtów zapisanych do bufora (może być mniejsza niż lpHdr->dwBufferLength
)
```cpp
lpHdr->lpData
<--- wskaźnik do bufora (tego właściwego ;)) z nagranymi samplami
Oczywiście, liczba zapisanych bajtów nie jest równoznaczna z liczbą sampli - tą musisz sobie obliczyć na podstawie formatu, który podałeś funkcji
waveInOpen
(patrz CSoundRecorder::CSoundRecorder
i <code class="cpp">CSoundRecorder::OnStartRecord
). Czyli:
DWORD dwSamplesRecorded=lpHdr->dwBytesRecorded/m_WaveFormatEx.nBlockAlign;
Aha. Jak skończysz z buforem to kolejkujesz go znowu funkcją
waveInAddBuffer
.
Staram się coś wymyśleć, ale nie wszystko rozumiem, lepiej jak by było po polsku :-|
No przecież podałem ci link gdzie jest to wszystko (w miarę) opisane i po polsku :-|