Agora RTC Objective-C API Reference  Refactor
Instance Methods
<AgoraAudioFrameDelegate> Protocol Reference

Inherits <NSObject>.

Instance Methods

(BOOL) - onRecordAudioFrame:channelId:
 
(BOOL) - onPlaybackAudioFrame:channelId:
 
(BOOL) - onMixedAudioFrame:channelId:
 
(BOOL) - onEarMonitoringAudioFrame:
 
(AgoraAudioFramePosition- getObservedAudioFramePosition
 
(BOOL) - onPlaybackAudioFrameBeforeMixing:channelId:uid:
 

Detailed Description

The AgoraAudioFrameDelegate protocol enables audio frame callback event notifications to your application.

Method Documentation

◆ onRecordAudioFrame:channelId:

- (BOOL) onRecordAudioFrame: (AgoraAudioFrame *_Nonnull)  frame
channelId: (NSString *_Nonnull)  channelId 
optional

Gets the captured audio frame.

To ensure that the format of the cpatured audio frame is as expected, you can choose one of the following two methods to set the audio data format:

  • Method 1: After calling setRecordingAudioFrameParametersWithSampleRate:channel:mode:samplesPerCall: to set the audio data format and setAudioFrameDelegate: to register the audio frame observer object, the SDK calculates the sampling interval according to the parameters set in the methods, and triggers the onRecordAudioFrame:channelId: callback according to the sampling interval.
  • Method 2: After calling setAudioFrameDelegate: to register the audio frame observer object, set the audio data format in the return value of the getObservedAudioFramePosition callback. The SDK then calculates the sampling interval according to the return value of the getRecordAudioParams callback, and triggers the onRecordAudioFrame:channelId: callback according to the sampling interval.
Note
- The priority of method 1 is higher than that of method 2. If method 1 is used to set the audio data format, the setting of method 2 is invalid.
Parameters
frameThe raw audio data. See AgoraAudioFrame.
channelIdThe channel ID.
Returns
Without practical meaning.

◆ onPlaybackAudioFrame:channelId:

- (BOOL) onPlaybackAudioFrame: (AgoraAudioFrame *_Nonnull)  frame
channelId: (NSString *_Nonnull)  channelId 
optional

Gets the raw audio frame for playback.

To ensure that the data format of audio frame for playback is as expected, Agora recommends that you choose one of the following two methods to set the audio data format:

  • Method 1: After calling setPlaybackAudioFrameParametersWithSampleRate:channel:mode:samplesPerCall: to set the audio data format and setAudioFrameDelegate: to register the audio frame observer object, the SDK calculates the sampling interval according to the parameters set in the methods, and triggers the onPlaybackAudioFrame: callback according to the sampling interval.
  • Method 2: After calling setAudioFrameDelegate: to register the audio frame observer object, set the audio data format in the return value of the getObservedAudioFramePosition callback. The SDK then calculates the sampling interval according to the return value of the getPlaybackAudioParams callback, and triggers the onPlaybackAudioFrame: callback according to the sampling interval.
Note
- The priority of method 1 is higher than that of method 2. If method 1 is used to set the audio data format, the setting of method 2 is invalid.
Parameters
frameThe raw audio data. See AgoraAudioFrame.
channelIdThe channel ID.
Returns
Without practical meaning.

◆ onMixedAudioFrame:channelId:

- (BOOL) onMixedAudioFrame: (AgoraAudioFrame *_Nonnull)  frame
channelId: (NSString *_Nonnull)  channelId 
optional

Retrieves the mixed captured and playback audio frame.

To ensure that the data format of mixed captured and playback audio frame meets the expectations, Agora recommends that you choose one of the following two ways to set the data format:

  • Method 1: After calling setMixedAudioFrameParametersWithSampleRate:channel:samplesPerCall: to set the audio data format and setAudioFrameDelegate: to register the audio frame observer object, the SDK calculates the sampling interval according to the parameters set in the methods, and triggers the onMixedAudioFrame:channelId: callback according to the sampling interval.
  • Method 2: After calling setAudioFrameDelegate: to register the audio frame observer object, set the audio data format in the return value of the getObservedAudioFramePosition callback. The SDK then calculates the sampling interval according to the return value of the getMixedAudioParams callback, and triggers the onMixedAudioFrame:channelId: callback according to the sampling interval.
Note
- The priority of method 1 is higher than that of method 2. If method 1 is used to set the audio data format, the setting of method 2 is invalid.
Parameters
frameThe raw audio data. See AgoraAudioFrame.
channelIdThe channel ID.
Returns
Without practical meaning.

◆ onEarMonitoringAudioFrame:

- (BOOL) onEarMonitoringAudioFrame: (AgoraAudioFrame *_Nonnull)  frame
optional

Gets the in-ear monitoring audio frame.

In order to ensure that the obtained in-ear audio data meets the expectations, Agora recommends that you choose one of the following two methods to set the in-ear monitoring-ear audio data format:

  • Method 1: After calling setEarMonitoringAudioFrameParametersWithSampleRate:channel:mode:samplesPerCall: to set the audio data format and setAudioFrameDelegate: to register the audio frame observer object, the SDK calculates the sampling interval according to the parameters set in the methods, and triggers the onEarMonitoringAudioFrame: callback according to the sampling interval.
  • Method 2: After calling setAudioFrameDelegate: to register the audio frame observer object, set the audio data format in the return value of the getObservedAudioFramePosition callback. The SDK then calculates the sampling interval according to the return value of the getEarMonitoringAudioParams callback, and triggers the onEarMonitoringAudioFrame: callback according to the sampling interval.
Note
- The priority of method 1 is higher than that of method 2. If method 1 is used to set the audio data format, the setting of method 2 is invalid.
Parameters
frameThe raw audio data. See AgoraAudioFrame.
Returns
Without practical meaning.

◆ getObservedAudioFramePosition

- (AgoraAudioFramePosition) getObservedAudioFramePosition
optional

Sets the frame position for the video observer.

After successfully registering the audio data observer, the SDK uses this callback for each specific audio frame processing node to determine whether to trigger the following callbacks:

  • onRecordAudioFrame:channelId:
  • onPlaybackAudioFrame:
  • onPlaybackAudioFrameBeforeMixing:channelId:uid:
  • onMixedAudioFrame:channelId:
  • onEarMonitoringAudioFrame: You can set one or more positions you need to observe by modifying the return value of getObservedAudioFramePosition based on your scenario requirements: When the annotation observes multiple locations, the | (or operator) is required. To conserve system resources, you can reduce the number of frame positions that you want to observe.
Returns
Returns a bitmask that sets the observation position, with the following values:
  • AgoraAudioFramePositionPlayback (0x0001): This position can observe the playback audio mixed by all remote users, corresponding to the onPlaybackAudioFrame: callback.
  • AgoraAudioFramePositionRecord (0x0002): This position can observe the collected local user's audio, corresponding to the onRecordAudioFrame:channelId: callback.
  • AgoraAudioFramePositionMixed (0x0004): This position can observe the playback audio mixed by the loacl user and all remote users, corresponding to the onMixedAudioFrame:channelId: callback.
  • AgoraAudioFramePositionBeforeMixing (0x0008): This position can observe the audio of a single remote user before mixing, corresponding to the onPlaybackAudioFrameBeforeMixing:channelId:uid: callback.
  • AgoraAudioFramePositionEarMonitoring (0x0010): This position can observe the in-ear monitoring audio of the local user, corresponding to the onEarMonitoringAudioFrame: callback.

◆ onPlaybackAudioFrameBeforeMixing:channelId:uid:

- (BOOL) onPlaybackAudioFrameBeforeMixing: (AgoraAudioFrame *_Nonnull)  frame
channelId: (NSString *_Nonnull)  channelId
uid: (NSUInteger)  uid 
optional

Retrieves the audio frame before mixing of subscribed remote users.

Parameters
channelIdThe channel ID.
uidThe ID of subscribed remote users.
frameThe raw audio data. See AgoraAudioFrame.
Returns
Without practical meaning.