File tree Expand file tree Collapse file tree 1 file changed +17
-8
lines changed Expand file tree Collapse file tree 1 file changed +17
-8
lines changed Original file line number Diff line number Diff line change @@ -69,7 +69,8 @@ int PDMClass::begin(int channels, long sampleRate) {
6969 gain_db = 24 ;
7070 }
7171
72- // g_pcmbuf = (uint16_t*)_doubleBuffer.data();
72+ g_pcmbuf = (uint16_t *)_doubleBuffer.data ();
73+ _doubleBuffer.swap (0 );
7374
7475 if (py_audio_init (channels, sampleRate, gain_db, 0 .9883f )) {
7576 py_audio_start_streaming ();
@@ -118,16 +119,24 @@ size_t PDMClass::getBufferSize()
118119 return _doubleBuffer.getSize ();
119120}
120121
122+ #define HALF_TRANSFER_SIZE (64 *_channels)
123+ static int g_pcmbuf_size=0 ;
124+
121125void PDMClass::IrqHandler (bool halftranfer)
122126{
123- if (_doubleBuffer.available () == 0 ) {
124- g_pcmbuf = (uint16_t *)_doubleBuffer.data ();
127+ if (g_pcmbuf_size < _doubleBuffer.getSize ()) {
125128 audio_pendsv_callback ();
126- _doubleBuffer.swap (_doubleBuffer.availableForWrite ());
127-
128- if (_onReceive) {
129- _onReceive ();
130- }
129+ g_pcmbuf += (HALF_TRANSFER_SIZE/2 );
130+ g_pcmbuf_size += HALF_TRANSFER_SIZE;
131+
132+ if (g_pcmbuf_size == _doubleBuffer.getSize ()) {
133+ _doubleBuffer.swap (g_pcmbuf_size);
134+ g_pcmbuf = (uint16_t *)_doubleBuffer.data ();
135+ g_pcmbuf_size = 0 ;
136+ if (_onReceive) {
137+ _onReceive ();
138+ }
139+ }
131140 }
132141}
133142
You can’t perform that action at this time.
0 commit comments