I’m hunting echo issues with certain USB headsets. I would like to capture USB audio transmitted to and received from the headset. Then I could compare this recording to recordings from my VoIP application.
I wrote a simple c++ application that parses the USBPcap capture file (pcap format), searches for URB_FUNCTION_ISOCH_TRANSFER packets and dumps all audio samples into two wave files (input, output). This works well for audio in: The dumped wave file contains the correct audio capture from the USB headset. But the parser finds none URB_FUNCTION_ISOCH_TRANSFER OUT packets containing data. All URB_FUNCTION_ISOCH_TRANSFER OUT packets have a reported size of 159 bytes, while the URB_FUNCTION_ISOCH_TRANSFER IN have a reported size of 479 bytes.
For IN packets, the USBPCAP_BUFFER_ISOCH_HEADER is followed by 10 USBPCAP_BUFFER_ISO_PACKET with correct offset and length. For OUT packets, dataLength is 0 and all following 10 USBPCAP_BUFFER_ISO_PACKET structures have a reported length of 0.
When I open the file in Wireshark, it just looks the same: URB_FUNCTION_ISOCH_TRANSFER IN contains data, URB_FUNCTION_ISOCH_TRANSFER OUT does not contain data.
USBPcap 1.4 or 1.3, Wireshark 3.02, Windows 10 - 17763, x64, Jabra Evolve headset.
Do you have any hints for capturing audio out data?
Wolfgang