File tree 1 file changed +17
-8
lines changed
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) {
69
69
gain_db = 24 ;
70
70
}
71
71
72
- // g_pcmbuf = (uint16_t*)_doubleBuffer.data();
72
+ g_pcmbuf = (uint16_t *)_doubleBuffer.data ();
73
+ _doubleBuffer.swap (0 );
73
74
74
75
if (py_audio_init (channels, sampleRate, gain_db, 0 .9883f )) {
75
76
py_audio_start_streaming ();
@@ -118,16 +119,24 @@ size_t PDMClass::getBufferSize()
118
119
return _doubleBuffer.getSize ();
119
120
}
120
121
122
+ #define HALF_TRANSFER_SIZE (64 *_channels)
123
+ static int g_pcmbuf_size=0 ;
124
+
121
125
void PDMClass::IrqHandler (bool halftranfer)
122
126
{
123
- if (_doubleBuffer.available () == 0 ) {
124
- g_pcmbuf = (uint16_t *)_doubleBuffer.data ();
127
+ if (g_pcmbuf_size < _doubleBuffer.getSize ()) {
125
128
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
+ }
131
140
}
132
141
}
133
142
You can’t perform that action at this time.
0 commit comments