File tree Expand file tree Collapse file tree 1 file changed +19
-8
lines changed Expand file tree Collapse file tree 1 file changed +19
-8
lines changed Original file line number Diff line number Diff line change @@ -70,7 +70,10 @@ int PDMClass::begin(int channels, int sampleRate) {
7070 _gain = 24 ;
7171 }
7272
73- if (py_audio_init (channels, sampleRate, _gain, 0 .9883f )) {
73+ g_pcmbuf = (uint16_t *)_doubleBuffer.data ();
74+ _doubleBuffer.swap (0 );
75+
76+ if (py_audio_init (channels, sampleRate, gain_db, 0 .9883f )) {
7477 py_audio_start_streaming ();
7578 _init = 1 ;
7679 return 1 ;
@@ -119,16 +122,24 @@ size_t PDMClass::getBufferSize()
119122 return _doubleBuffer.getSize ();
120123}
121124
125+ #define HALF_TRANSFER_SIZE (64 *_channels)
126+ static int g_pcmbuf_size=0 ;
127+
122128void PDMClass::IrqHandler (bool halftranfer)
123129{
124- if (_doubleBuffer.available () == 0 ) {
125- g_pcmbuf = (uint16_t *)_doubleBuffer.data ();
130+ if (g_pcmbuf_size < _doubleBuffer.getSize ()) {
126131 audio_pendsv_callback ();
127- _doubleBuffer.swap (_doubleBuffer.availableForWrite ());
128- }
129-
130- if (_onReceive) {
131- _onReceive ();
132+ g_pcmbuf += (HALF_TRANSFER_SIZE/2 );
133+ g_pcmbuf_size += HALF_TRANSFER_SIZE;
134+
135+ if (g_pcmbuf_size == _doubleBuffer.getSize ()) {
136+ _doubleBuffer.swap (g_pcmbuf_size);
137+ g_pcmbuf = (uint16_t *)_doubleBuffer.data ();
138+ g_pcmbuf_size = 0 ;
139+ if (_onReceive) {
140+ _onReceive ();
141+ }
142+ }
132143 }
133144}
134145
You can’t perform that action at this time.
0 commit comments