@@ -377,18 +377,25 @@ class VBANStream : public AudioStream {
377
377
uint8_t vbanSampleRateIdx = udpIncomingPacket[4 ] & VBAN_SR_MASK;
378
378
uint8_t vbchannels = udpIncomingPacket[6 ] + 1 ;
379
379
uint8_t vbframes = udpIncomingPacket[5 ] + 1 ;
380
- uint8_t vbformat = udpIncomingPacket[4 ] & VBAN_PROTOCOL_MASK;;
380
+ uint8_t vbformat = udpIncomingPacket[7 ] & VBAN_PROTOCOL_MASK;;
381
+ uint8_t vbformat_bits = udpIncomingPacket[7 ] & VBAN_BIT_RESOLUTION_MASK;;
381
382
uint32_t vbanSampleRate = VBanSRList[vbanSampleRateIdx];
382
383
383
384
LOGD (" sample_count: %d - frames: %d" , vban_rx_sample_count, vbframes);
384
385
assert (vban_rx_sample_count == vbframes*vbchannels);
385
386
386
-
387
+ // E.g. do not process any text
387
388
if (vbformat != cfg.format ){
388
389
LOGE (" Format ignored: 0x%x" , vbformat);
389
390
return ;
390
391
}
391
392
393
+ // Currently we support only 16 bits.
394
+ if (vbformat_bits != VBAN_BITFMT_16_INT){
395
+ LOGE (" Format only 16 bits supported" );
396
+ return ;
397
+ }
398
+
392
399
// Just to be safe, re-check sample count against max sample count to
393
400
// avoid overrunning outBuf later
394
401
if (vban_rx_sample_count > VBAN_PACKET_MAX_SAMPLES) {
@@ -398,9 +405,13 @@ class VBANStream : public AudioStream {
398
405
399
406
// update sample rate
400
407
if (cfg.sample_rate != vbanSampleRate || cfg.channels != vbchannels) {
408
+ // update audio info
401
409
cfg.sample_rate = vbanSampleRate;
402
410
cfg.channels = vbchannels;
403
411
setAudioInfo (cfg);
412
+ // remove any buffered data
413
+ rx_buffer.reset ();
414
+ available_active = false ;
404
415
}
405
416
406
417
if (p_out!=nullptr ){
@@ -412,7 +423,6 @@ class VBANStream : public AudioStream {
412
423
}
413
424
414
425
// write data to buffer
415
- TRACED ();
416
426
int size_written = rx_buffer.writeArray ((uint8_t *)vban_rx_data, vban_rx_data_bytes);
417
427
if (size_written != vban_rx_data_bytes) {
418
428
LOGE (" buffer overflow %d -> %d" , vban_rx_data_bytes, size_written);
0 commit comments