@@ -113,9 +113,13 @@ bool USBAudio::write(uint8_t * buf) {
113
113
return true ;
114
114
}
115
115
116
- void USBAudio::writeSync (uint8_t *buf)
116
+ void USBAudio::writeSync (uint8_t *buf, AudioSampleCorrectType jitter_nb )
117
117
{
118
- USBDevice::writeNB (EPISO_IN, buf, PACKET_SIZE_ISO_OUT, PACKET_SIZE_ISO_OUT);
118
+ if ((jitter_nb != RemoveOneSample) && (jitter_nb != AddOneSample)) {
119
+ jitter_nb = NoCorrection;
120
+ }
121
+ /* each sample is 2 bytes */
122
+ USBDevice::writeNB (EPISO_IN, buf, PACKET_SIZE_ISO_OUT + jitter_nb *(this ->channel_nb_out *2 ), PACKET_SIZE_ISO_OUT+this ->channel_nb_out *2 );
119
123
}
120
124
121
125
uint32_t USBAudio::readSync (uint8_t *buf)
@@ -195,7 +199,7 @@ bool USBAudio::USBCallback_setConfiguration(uint8_t configuration) {
195
199
196
200
// Configure isochronous endpoint
197
201
realiseEndpoint (EPISO_OUT, PACKET_SIZE_ISO_IN, ISOCHRONOUS);
198
- realiseEndpoint (EPISO_IN, PACKET_SIZE_ISO_OUT, ISOCHRONOUS);
202
+ realiseEndpoint (EPISO_IN, PACKET_SIZE_ISO_OUT+ this -> channel_nb_out * 2 , ISOCHRONOUS);
199
203
200
204
// activate readings on this endpoint
201
205
readStart (EPISO_OUT, PACKET_SIZE_ISO_IN);
@@ -597,8 +601,8 @@ uint8_t * USBAudio::configurationDesc() {
597
601
ENDPOINT_DESCRIPTOR, // bDescriptorType
598
602
PHY_TO_DESC (EPISO_IN), // bEndpointAddress
599
603
E_ISOCHRONOUS, // bmAttributes
600
- (uint8_t )(LSB (PACKET_SIZE_ISO_OUT)), // wMaxPacketSize
601
- (uint8_t )(MSB (PACKET_SIZE_ISO_OUT)), // wMaxPacketSize
604
+ (uint8_t )(LSB (PACKET_SIZE_ISO_OUT+channel_nb_out* 2 )), // wMaxPacketSize
605
+ (uint8_t )(MSB (PACKET_SIZE_ISO_OUT+channel_nb_out* 2 )), // wMaxPacketSize
602
606
0x01 , // bInterval
603
607
0x00 , // bRefresh
604
608
0x00 , // bSynchAddress
0 commit comments