webrtc/sdk/objc
Peter Hanspers d4fce5a361 Use playout sample rate for audio unit.
Fixing a race condition where session.sampleRate changes before AudioDeviceIOS::HandleValidRouteChange() finishes.

session.sampleRate is read into session_sample_rate at 576 and used at 623 to initialize the audio unit. However, in the call to SetupAudioBuffersForActiveAudioSession() the session.sampleRate is read again and may have changed, resulting in different sample rates used for the buffers and the audio unit. The consequence is a sample rate mismatch with either high pitched or low pitched audio.

The fix is to always use the buffer sample rate for the audio unit.

The DCHECK at 622 would save us in debug, but not in production, hence removed.

Change-Id: I562f1bf7f94d7447139ada2636b02ade7fcd6371
Bug: webrtc:14011
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/260329
Reviewed-by: Henrik Andreasson <henrika@google.com>
Commit-Queue: Peter Hanspers <peterhanspers@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36708}
2022-04-29 14:07:02 +00:00
..
api Update sdk/ to not use implicit conversion from scoped_refptr<T> to T*. 2022-04-28 08:10:15 +00:00
base Implement OnResolutionChange to objc RTCVideoEncoderSelector 2022-04-20 13:23:03 +00:00
components Fix H.264 codec on Arm64(M1) MacOS 2022-04-06 09:04:10 +00:00
Framework Reland "Remove placeholder Obj-C headers and use angle-bracketed headers." 2020-10-22 11:29:48 +00:00
helpers Added new apple devices. 2022-03-29 15:40:35 +00:00
native Use playout sample rate for audio unit. 2022-04-29 14:07:02 +00:00
unittests Disable tests with 'method was not invoked' error on simulator 2022-04-28 18:57:01 +00:00
DEPS Remove +api from internal DEPS files. 2019-01-28 11:17:00 +00:00
Info.plist Obj-C SDK Cleanup 2018-08-30 10:42:41 +00:00
OWNERS Remove wildcard ownership for build files. 2020-02-19 14:05:46 +00:00
README.md Obj-C SDK Cleanup 2018-08-30 10:42:41 +00:00

WebRTC Obj-C SDK

This directory contains the Obj-C SDK for WebRTC. This includes wrappers for the C++ PeerConnection API and some platform specific components for iOS and macOS.

Organization

  • api/

    Wrappers around classes and functions in the C++ API for creating and configuring peer connections, etc.

  • base/

    This directory contains some base protocols and classes that are used by both the platform specific components and the SDK wrappers.

  • components/

    These are the platform specific components. Contains components for handling audio, capturing and rendering video, encoding and decoding using the platform's hardware codec implementation and for representing video frames in the platform's native format.

  • helpers/

    These files are not WebRTC specific, but are general helper classes and utilities for the Cocoa platforms.

  • native/

    APIs for wrapping the platform specific components and using them with the C++ API.

  • unittests/

    This directory contains the tests.