Skip to content

Commit 4a5ac4c

Browse files
committed
Fix device format error crash & return error
Squashed: Buffer checks only when modify state success Create converter only when required Catch output device errors also Return error if input not available Define error codes ApplyEngineState ModifyEngineState
1 parent a890367 commit 4a5ac4c

File tree

2 files changed

+267
-99
lines changed

2 files changed

+267
-99
lines changed

modules/audio_device/audio_engine_device.h

Lines changed: 60 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,63 @@ RTC_FWD_DECL_OBJC_CLASS(RTC_OBJC_TYPE(RTCNativeAudioSessionDelegateAdapter));
4040

4141
namespace webrtc {
4242

43+
// Error codes for AudioEngineDevice.
44+
// Apple recommends that you use values in the range -1000 through -9999 inclusive. Values outside
45+
// of this range are reserved by Apple for internal use.
46+
enum AudioEngineErrorCode {
47+
// Success (no error)
48+
kAudioEngineNoError = 0,
49+
50+
// General errors
51+
kAudioEngineUnknownError = -1000,
52+
kAudioEngineInitError = -1001,
53+
kAudioEngineTerminateError = -1002,
54+
kAudioEngineNotInitializedError = -1003,
55+
kAudioEngineAlreadyInitializedError = -1004,
56+
57+
// Device errors
58+
kAudioEngineDeviceNotFoundError = -2000,
59+
kAudioEngineDeviceUnavailableError = -2001,
60+
kAudioEngineDeviceDisconnectedError = -2002,
61+
kAudioEngineDeviceUnauthorizedError = -2003,
62+
kAudioEngineDeviceInUseError = -2004,
63+
kAudioEngineDeviceFormatError = -2005,
64+
65+
// Playback errors
66+
kAudioEnginePlayoutInitError = -3000,
67+
kAudioEnginePlayoutStartError = -3001,
68+
kAudioEnginePlayoutStopError = -3002,
69+
kAudioEnginePlayoutAlreadyInitializedError = -3003,
70+
kAudioEnginePlayoutNotInitializedError = -3004,
71+
kAudioEnginePlayoutDeviceNotAvailableError = -3010,
72+
73+
// Recording errors
74+
kAudioEngineRecordingInitError = -4000,
75+
kAudioEngineRecordingStartError = -4001,
76+
kAudioEngineRecordingStopError = -4002,
77+
kAudioEngineRecordingAlreadyInitializedError = -4003,
78+
kAudioEngineRecordingNotInitializedError = -4004,
79+
kAudioEngineRecordingPermissionDeniedError = -4005,
80+
kAudioEngineRecordingDeviceNotAvailableError = -4010,
81+
82+
// Engine state errors
83+
kAudioEngineInvalidStateError = -5000,
84+
kAudioEngineStateTransitionError = -5001,
85+
kAudioEngineInterruptionError = -5002,
86+
87+
// Resource errors
88+
kAudioEngineOutOfMemoryError = -6000,
89+
kAudioEngineResourceLimitError = -6001,
90+
91+
// Render mode errors
92+
kAudioEngineRenderModeError = -7000,
93+
kAudioEngineManualRenderingError = -7001,
94+
95+
// Voice processing errors
96+
kAudioEngineVoiceProcessingError = -8000,
97+
kAudioEngineAGCError = -8001
98+
};
99+
43100
class FineAudioBuffer;
44101

45102
extern NSString* const kAudioEngineInputMixerNodeKey;
@@ -332,9 +389,9 @@ class AudioEngineDevice : public AudioDeviceModule, public AudioSessionObserver
332389
AVAudioOutputNode* OutputNode();
333390

334391
bool IsMicrophonePermissionGranted();
335-
void ModifyEngineState(std::function<EngineState(EngineState)> state_transform);
336-
void ApplyDeviceEngineState(EngineStateUpdate state);
337-
void ApplyManualEngineState(EngineStateUpdate state);
392+
int32_t ModifyEngineState(std::function<EngineState(EngineState)> state_transform);
393+
int32_t ApplyDeviceEngineState(EngineStateUpdate state);
394+
int32_t ApplyManualEngineState(EngineStateUpdate state);
338395

339396
// AudioEngine observer methods. May be called from any thread.
340397
void ReconfigureEngine(bool is_required);

0 commit comments

Comments
 (0)