Package org.webrtc.audio
Class WebRtcAudioRecord
java.lang.Object
org.webrtc.audio.WebRtcAudioRecord
-
Field Summary
Modifier and TypeFieldDescriptionprivate static final int
private static final int
private static final long
private final int
private IAudioRecordListener
private final JavaAudioDeviceModule.SamplesReadyCallback
private final int
private static final int
private static final int
private ByteBuffer
private static final int
private static final int
static final int
static final int
private byte[]
private Map<String,
ByteBuffer> private final JavaAudioDeviceModule.AudioRecordErrorCallback
private final ScheduledExecutorService
private ScheduledFuture<String>
private final boolean
private final boolean
private static org.slf4j.Logger
private boolean
private long
private final JavaAudioDeviceModule.AudioRecordStateCallback
private static final String
-
Constructor Summary
ConstructorDescriptionWebRtcAudioRecord
(Object context, Object audioManager) Audio thread which keeps calling ByteBuffer.read() waiting for audio to be recorded.WebRtcAudioRecord
(Object context, ScheduledExecutorService scheduler, Object audioManager, int audioSource, int audioFormat, JavaAudioDeviceModule.AudioRecordErrorCallback errorCallback, JavaAudioDeviceModule.AudioRecordStateCallback stateCallback, JavaAudioDeviceModule.SamplesReadyCallback audioSamplesReadyCallback, boolean isAcousticEchoCancelerSupported, boolean isNoiseSuppressorSupported, IAudioRecordListener audioRecordListener) -
Method Summary
Modifier and TypeMethodDescriptionprivate static void
assertTrue
(boolean condition) private static String
audioStateToString
(int state) private void
doAudioRecordStateCallback
(int audioState) private boolean
enableBuiltInAEC
(boolean enable) private boolean
enableBuiltInNS
(boolean enable) void
encodedDataIsReady
(long nativeAudioRecordJni, String trackId, int bytes) private int
initRecording
(int sampleRate, int channels) (package private) boolean
(package private) boolean
(package private) boolean
(package private) boolean
private void
nativeCacheDirectBufferAddress
(long nativeAudioRecordJni, ByteBuffer byteBuffer) private void
nativeCacheDirectBufferAddressForEncodedAudio
(long nativeAudioRecordJni, String trackId, ByteBuffer byteBuffer) private void
nativeDataIsRecorded
(long nativeAudioRecordJni, int bytes, long captureTimestampNs) void
nativeEncodedDataIsReady
(long nativeAudioRecordJni, String trackId, int bytes) void
notifyEncodedData
(String trackId, ByteBuffer audio) private void
private void
reportWebRtcAudioRecordError
(String errorMessage) private void
reportWebRtcAudioRecordInitError
(String errorMessage) private void
reportWebRtcAudioRecordStartError
(JavaAudioDeviceModule.AudioRecordStartErrorCode errorCode, String errorMessage) void
setMicrophoneMute
(boolean mute) void
setNativeAudioRecord
(long nativeAudioRecord) private boolean
private boolean
void
Prefer a specificAudioDeviceInfo
device for recording.void
-
Field Details
-
logger
private static org.slf4j.Logger logger -
TAG
- See Also:
-
CALLBACK_BUFFER_SIZE_MS
private static final int CALLBACK_BUFFER_SIZE_MS- See Also:
-
BUFFERS_PER_SECOND
private static final int BUFFERS_PER_SECOND- See Also:
-
BUFFER_SIZE_FACTOR
private static final int BUFFER_SIZE_FACTOR- See Also:
-
AUDIO_RECORD_THREAD_JOIN_TIMEOUT_MS
private static final long AUDIO_RECORD_THREAD_JOIN_TIMEOUT_MS- See Also:
-
DEFAULT_AUDIO_SOURCE
public static final int DEFAULT_AUDIO_SOURCE- See Also:
-
DEFAULT_AUDIO_FORMAT
public static final int DEFAULT_AUDIO_FORMAT- See Also:
-
AUDIO_RECORD_START
private static final int AUDIO_RECORD_START- See Also:
-
AUDIO_RECORD_STOP
private static final int AUDIO_RECORD_STOP- See Also:
-
CHECK_REC_STATUS_DELAY_MS
private static final int CHECK_REC_STATUS_DELAY_MS- See Also:
-
audioSource
private final int audioSource -
audioFormat
private final int audioFormat -
nativeAudioRecord
private long nativeAudioRecord -
byteBuffer
-
executor
-
future
-
microphoneMute
private volatile boolean microphoneMute -
emptyBytes
private byte[] emptyBytes -
errorCallback
-
stateCallback
-
audioSamplesReadyCallback
-
isAcousticEchoCancelerSupported
private final boolean isAcousticEchoCancelerSupported -
isNoiseSuppressorSupported
private final boolean isNoiseSuppressorSupported -
audioRecordListener
-
encodedByteBuffers
-
-
Constructor Details
-
WebRtcAudioRecord
Audio thread which keeps calling ByteBuffer.read() waiting for audio to be recorded. Feeds recorded data to the native counterpart as a periodic sequence of callbacks using DataIsRecorded(). This thread uses a Process.THREAD_PRIORITY_URGENT_AUDIO priority. -
WebRtcAudioRecord
public WebRtcAudioRecord(Object context, ScheduledExecutorService scheduler, Object audioManager, int audioSource, int audioFormat, @Nullable JavaAudioDeviceModule.AudioRecordErrorCallback errorCallback, @Nullable JavaAudioDeviceModule.AudioRecordStateCallback stateCallback, @Nullable JavaAudioDeviceModule.SamplesReadyCallback audioSamplesReadyCallback, boolean isAcousticEchoCancelerSupported, boolean isNoiseSuppressorSupported, IAudioRecordListener audioRecordListener)
-
-
Method Details
-
setNativeAudioRecord
public void setNativeAudioRecord(long nativeAudioRecord) -
isAcousticEchoCancelerSupported
boolean isAcousticEchoCancelerSupported() -
isNoiseSuppressorSupported
boolean isNoiseSuppressorSupported() -
isAudioConfigVerified
boolean isAudioConfigVerified() -
isAudioSourceMatchingRecordingSession
boolean isAudioSourceMatchingRecordingSession() -
enableBuiltInAEC
private boolean enableBuiltInAEC(boolean enable) -
enableBuiltInNS
private boolean enableBuiltInNS(boolean enable) -
initRecording
private int initRecording(int sampleRate, int channels) -
triggerAudioRecordStarted
public void triggerAudioRecordStarted()Prefer a specificAudioDeviceInfo
device for recording. Calling after recording starts is valid but may cause a temporary interruption if the audio routing changes. -
triggerAudioRecordStopped
public void triggerAudioRecordStopped() -
getAudioRecordListener
-
startRecording
private boolean startRecording() -
stopRecording
private boolean stopRecording() -
assertTrue
private static void assertTrue(boolean condition) -
nativeCacheDirectBufferAddress
-
nativeDataIsRecorded
private void nativeDataIsRecorded(long nativeAudioRecordJni, int bytes, long captureTimestampNs) -
nativeCacheDirectBufferAddressForEncodedAudio
private void nativeCacheDirectBufferAddressForEncodedAudio(long nativeAudioRecordJni, String trackId, ByteBuffer byteBuffer) -
nativeEncodedDataIsReady
-
encodedDataIsReady
-
setMicrophoneMute
public void setMicrophoneMute(boolean mute) -
releaseAudioResources
private void releaseAudioResources() -
reportWebRtcAudioRecordInitError
-
reportWebRtcAudioRecordStartError
private void reportWebRtcAudioRecordStartError(JavaAudioDeviceModule.AudioRecordStartErrorCode errorCode, String errorMessage) -
reportWebRtcAudioRecordError
-
doAudioRecordStateCallback
private void doAudioRecordStateCallback(int audioState) -
audioStateToString
-
notifyEncodedData
- Parameters:
audio
- => 20ms of encoded audio data
-
getEncodedByteBuffers
-