File tree 1 file changed +19
-8
lines changed
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) {
70
70
_gain = 24 ;
71
71
}
72
72
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 )) {
74
77
py_audio_start_streaming ();
75
78
_init = 1 ;
76
79
return 1 ;
@@ -119,16 +122,24 @@ size_t PDMClass::getBufferSize()
119
122
return _doubleBuffer.getSize ();
120
123
}
121
124
125
+ #define HALF_TRANSFER_SIZE (64 *_channels)
126
+ static int g_pcmbuf_size=0 ;
127
+
122
128
void PDMClass::IrqHandler (bool halftranfer)
123
129
{
124
- if (_doubleBuffer.available () == 0 ) {
125
- g_pcmbuf = (uint16_t *)_doubleBuffer.data ();
130
+ if (g_pcmbuf_size < _doubleBuffer.getSize ()) {
126
131
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
+ }
132
143
}
133
144
}
134
145
You can’t perform that action at this time.
0 commit comments