Intel® Collaboration Suite for WebRTC
Community support and discussions on the Intel® Collaboration Suite for WebRTC (Intel® CS for WebRTC).
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!
For the latest information on Intel’s response to the Log4j/Log4Shell vulnerability, please see Intel-SA-00646
1136 Discussions

Intel CS for WebRTC 3.4 Android crash with custom AudioFrameGeneratorInterface and stereo input

lamian
Beginner
143 Views

1. Test Environment
Network status, WIFI, not related.
Server machine information : P2PServer, not related
Client machine information : Tested 2 devices (Samsung S6 Edge Plus and Xiaomi RedMi Note 3, other devices should have the same issue)
Test topology : p2p

2. Test Steps

a. I've write some test code, which is based on p2psample, but with a custom AudioFrameGeneratorInterface
The AudioFrameGeneratorInterface has following attribute: sampleRate is 44100Hz, gitsPerSample is 16, channelNumber is 2 (stereo)
b. Deploy the test code on two Android devices, then connect each other.
c. Once click "start video" button, the demo will crash immediately with following debug log:
D/WooGeen-PeerConnectionChannel: Found opus rtpmap 111 at a=rtpmap:111 opus/48000/2
D/WooGeen-PeerConnectionChannel: Found opus a=fmtp:111 minptime=10;useinbandfec=1
D/WooGeen-PeerConnectionChannel: Update remote SDP line: a=fmtp:111 minptime=10;useinbandfec=1; maxaveragebitrate=64000
D/WooGeen-PeerConnectionChannel: Setting Remote Description
D/WooGeen-PeerConnectionChannel: PC Observer ---- onSignalingChange: STABLE
D/WoogeenAudioRecordJni: InitRecording@[tid=3095]
D/WoogeenAudioRecordJni: OnCacheDirectBufferAddress
D/WoogeenAudioRecordJni: direct buffer capacity: 1764
D/WoogeenAudioRecordJni: frames_per_buffer: 441
E/rtc: #
# Fatal error in ../../webrtc/modules/audio_device/android/woogeen_audio_record_jni.cc, line 146
# last system error: 2
# Check failed: direct_buffer_capacity_in_bytes_ == frames_per_buffer_ * bytes_per_frame (1764 vs. 882)

#
A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 3095 (Thread-96869)

d. if I change the channelNumber of AudioFrameGeneratorInterface, then everything works.

 

3. Other important references
I think the bug is inside woogeen_audio_record_jni.cc, which calculated wrong frames_per_buffer value (with 44100hz 16bit stereo, a 10ms buffer should contain 441 * 2 = 882 samples).

0 Kudos
1 Reply
He_Z_Intel
Employee
143 Views

Thanks a lot lamian for reporting this issue, we are checking and fixing this issue.

Reply