juce-framework / JUCE

JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, LV2 and AAX audio plug-ins.
https://juce.com
Other
6.54k stars 1.73k forks source link

Samsung Galaxy S10 - Connecting/ Disconnecting Wired Headset Produces Input Stream Error #1095

Open WassimErriha opened 2 years ago

WassimErriha commented 2 years ago

Detailed steps on how to reproduce the bug

When running the demo app ProcessingAudioInputTutorial, I get the error Failed to read from input stream: ErrorDisconnected every time I connect or disconnect a wired headset. This error is only reproduceable on Samsung Galaxy S10. Running the same demo on a Samsung S7 device works just fine. Also, connecting/ disconnecting Bluetooth headset seems to work ok on both devices.

I checked Oboe's issue tracker, but I'm not sure if this issue is related.

What is the expected behaviour?

Connecting/ Disconnecting wired headset should not disconnect input stream.

Operating systems

Android

What versions of the operating systems?

Samsung S7 - Android 8 - arm-64-v8a Samsung S10 - Android 12 - arm-64-v8a

Architectures

Other

Stacktrace

2022-07-27 12:45:50.839 22398-22398/? I/ioinputtutoria: Late-enabling -Xcheck:jni
2022-07-27 12:45:50.858 22398-22398/? E/USNET: USNET: appName: com.juce.processingaudioinputtutorial
2022-07-27 12:45:50.860 22398-22398/? D/ProcessState: Binder ioctl to enable oneway spam detection failed: Invalid argument
2022-07-27 12:45:50.862 22398-22398/? D/ActivityThread: setConscryptValidator
2022-07-27 12:45:50.862 22398-22398/? D/ActivityThread: setConscryptValidator - put
2022-07-27 12:45:50.949 22398-22398/? V/studio.deploy: Startup agent attached to VM
2022-07-27 12:45:50.949 22398-22398/? V/studio.deploy: No existing instrumentation found. Loading instrumentation from instruments-962d6e1a.jar
2022-07-27 12:45:50.961 22398-22398/? W/ioinputtutoria: DexFile /data/data/com.juce.processingaudioinputtutorial/code_cache/.studio/instruments-962d6e1a.jar is in boot class path but is not in a known location
2022-07-27 12:45:50.965 22398-22398/? V/studio.deploy: Applying transforms with cached classes
2022-07-27 12:45:50.995 22398-22398/? W/ioinputtutoria: Redefining intrinsic method java.lang.Thread java.lang.Thread.currentThread(). This may cause the unexpected use of the original definition of java.lang.Thread java.lang.Thread.currentThread()in methods that have already been compiled.
2022-07-27 12:45:50.995 22398-22398/? W/ioinputtutoria: Redefining intrinsic method boolean java.lang.Thread.interrupted(). This may cause the unexpected use of the original definition of boolean java.lang.Thread.interrupted()in methods that have already been compiled.
2022-07-27 12:45:51.001 22398-22398/? D/ActivityThread: handleBindApplication()++ app=com.juce.processingaudioinputtutorial
2022-07-27 12:45:51.003 22398-22398/? D/CompatibilityChangeReporter: Compat change id reported: 171979766; UID 10185; state: DISABLED
2022-07-27 12:45:51.090 22398-22398/com.juce.processingaudioinputtutorial V/GraphicsEnvironment: ANGLE Developer option for 'com.juce.processingaudioinputtutorial' set to: 'default'
2022-07-27 12:45:51.091 22398-22398/com.juce.processingaudioinputtutorial V/GraphicsEnvironment: App is not on the allowlist for updatable production driver.
2022-07-27 12:45:51.106 22398-22398/com.juce.processingaudioinputtutorial D/LoadedApk: LoadedApk::makeApplication() appContext.mOpPackageName=com.juce.processingaudioinputtutorial appContext.mBasePackageName=com.juce.processingaudioinputtutorial
2022-07-27 12:45:51.106 22398-22398/com.juce.processingaudioinputtutorial D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2022-07-27 12:45:51.209 22398-22398/com.juce.processingaudioinputtutorial D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2022-07-27 12:45:51.211 22398-22398/com.juce.processingaudioinputtutorial D/ActivityThread: handleBindApplication() --
2022-07-27 12:45:52.883 22398-22411/com.juce.processingaudioinputtutorial W/System: A resource failed to call close. 
2022-07-27 12:50:28.578 22398-23790/com.juce.processingaudioinputtutorial D/OpenGLRenderer: RenderThread::requireGlContext()
2022-07-27 12:50:28.579 22398-23790/com.juce.processingaudioinputtutorial I/AdrenoGLES-0: QUALCOMM build                   : 3dad7f8ed7, I593c16c433
    Build Date                       : 10/01/21
    OpenGL ES Shader Compiler Version: EV031.32.02.02
    Local Branch                     : 
    Remote Branch                    : refs/tags/AU_LINUX_ANDROID_LA.UM.9.1.R1.11.00.00.604.073
    Remote Branch                    : NONE
    Reconstruct Branch               : NOTHING
2022-07-27 12:50:28.579 22398-23790/com.juce.processingaudioinputtutorial I/AdrenoGLES-0: Build Config                     : S P 10.0.7 AArch64
2022-07-27 12:50:28.579 22398-23790/com.juce.processingaudioinputtutorial I/AdrenoGLES-0: Driver Path                      : /vendor/lib64/egl/libGLESv2_adreno.so
2022-07-27 12:50:28.588 22398-23790/com.juce.processingaudioinputtutorial I/AdrenoGLES-0: PFP: 0x016ee190, ME: 0x00000000
2022-07-27 12:50:28.594 22398-23790/com.juce.processingaudioinputtutorial D/OpenGLRenderer: RenderThread::setGrContext()
2022-07-27 12:50:28.596 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: JUCE v7.0.0
2022-07-27 12:50:28.607 22398-22398/com.juce.processingaudioinputtutorial I/DecorView: [INFO] isPopOver=false, config=true
2022-07-27 12:50:28.607 22398-22398/com.juce.processingaudioinputtutorial I/DecorView: updateCaptionType >> DecorView@940149a[], isFloating=false, isApplication=true, hasWindowControllerCallback=true, hasWindowDecorCaption=false
2022-07-27 12:50:28.607 22398-22398/com.juce.processingaudioinputtutorial D/DecorView: setCaptionType = 0, this = DecorView@940149a[]
2022-07-27 12:50:28.616 22398-22398/com.juce.processingaudioinputtutorial I/DecorView: getCurrentDensityDpi: from real metrics. densityDpi=420 msg=resources_loaded
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: -----InputDevices:
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: name = System Default (Input)
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: id = 0
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: sample rates size = 9
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: num channels = 1
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: name = SM-G973W built-in microphone
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: id = 17
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: sample rates size = 9
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: num channels = 2
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: name = SM-G973W telephony
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: id = 18
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: sample rates size = 9
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: num channels = 2
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: name = SM-G973W built-in microphone
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: id = 19
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: sample rates size = 9
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: num channels = 2
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: -----OutputDevices:
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: name = System Default (Output)
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: id = 0
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: sample rates size = 9
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: num channels = 2
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: name = SM-G973W built-in earphone speaker
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: id = 2
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: sample rates size = 1
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: num channels = 1
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: name = SM-G973W built-in speaker
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: id = 3
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: sample rates size = 1
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: num channels = 2
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: name = SM-G973W telephony
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: id = 14
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: sample rates size = 2
2022-07-27 12:50:28.636 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: num channels = 2
2022-07-27 12:50:28.638 22398-22398/com.juce.processingaudioinputtutorial D/OboeAudio: AAudioLoader():  dlopen(libaaudio.so) returned 0x1a15ed8dcdf16779
2022-07-27 12:50:28.638 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Preparing Oboe stream with params:
    AAudio supported = 1
    API = Unspecified
    DeviceId = 0
    Direction = Output
    SharingMode = Exclusive
    ChannelCount = 2
    Format = Float
    SampleRate = 48000
    PerformanceMode = LowLatency
2022-07-27 12:50:28.638 22398-22398/com.juce.processingaudioinputtutorial I/OboeAudio: openStream() OUTPUT -------- OboeVersion1.6.1 --------
2022-07-27 12:50:28.638 22398-22398/com.juce.processingaudioinputtutorial I/AAudio: AAudioStreamBuilder_openStream() called ----------------------------------------
2022-07-27 12:50:28.638 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: rate   =  48000, channels  = 2, format   = 5, sharing = EX, dir = OUTPUT
2022-07-27 12:50:28.638 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: device =      0, sessionId = -1, perfMode = 12, callback: ON with frames = 0
2022-07-27 12:50:28.638 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: usage  =      1, contentType = 2, inputPreset = 6, allowedCapturePolicy = 0
2022-07-27 12:50:28.638 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: privacy sensitive = false
2022-07-27 12:50:28.638 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: opPackageName = (null)
2022-07-27 12:50:28.638 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: attributionTag = (null)
2022-07-27 12:50:28.638 22398-22398/com.juce.processingaudioinputtutorial D/ioinputtutoria: PlayerBase::PlayerBase()
2022-07-27 12:50:28.659 22398-22398/com.juce.processingaudioinputtutorial D/AudioStreamInternal_Client: open() original HW burst = 48, minMicros = 2000 => SW burst = 96
2022-07-27 12:50:28.659 22398-22398/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#1) from 0 to 2
2022-07-27 12:50:28.659 22398-22398/com.juce.processingaudioinputtutorial I/AAudioFlowGraph: configure() source format = 0x00000005, channels = 2, sink format = 0x00000001, channels = 2
2022-07-27 12:50:28.660 22398-22398/com.juce.processingaudioinputtutorial I/AAudio: AAudioStreamBuilder_openStream() returns 0 = AAUDIO_OK for s#1 ----------------
2022-07-27 12:50:28.660 22398-22398/com.juce.processingaudioinputtutorial D/OboeAudio: AudioStreamAAudio.open() format=2, sampleRate=48000, capacity = 3072
2022-07-27 12:50:28.660 22398-22398/com.juce.processingaudioinputtutorial D/OboeAudio: AudioStreamAAudio.open: AAudioStream_Open() returned AAUDIO_OK
2022-07-27 12:50:28.660 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Building Oboe stream with result: OK
    Stream state = Open
2022-07-27 12:50:28.660 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Setting the bufferSizeInFrames to 192
2022-07-27 12:50:28.660 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Stream details:
    Uses AAudio = 1
    DeviceId = 3
    Direction = Output
    SharingMode = Exclusive
    ChannelCount = 2
    Format = Float
    SampleRate = 48000
    BufferSizeInFrames = 192
    BufferCapacityInFrames = 3072
    FramesPerBurst = 96
    FramesPerCallback = 0
    BytesPerFrame = 8
    BytesPerSample = 4
    PerformanceMode = LowLatency
2022-07-27 12:50:28.660 22398-22398/com.juce.processingaudioinputtutorial D/AAudio: AAudioStream_requestStop(s#1) called
2022-07-27 12:50:28.660 22398-22398/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#1) from 2 to 10
2022-07-27 12:50:28.670 22398-22398/com.juce.processingaudioinputtutorial D/AAudio: AAudioStream_close(s#1) called ---------------
2022-07-27 12:50:28.670 22398-22398/com.juce.processingaudioinputtutorial D/AudioStreamInternal_Client: release_l(): mServiceStreamHandle = 0x000001A0
2022-07-27 12:50:28.670 22398-22398/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#1) from 10 to 11
2022-07-27 12:50:28.772 22398-22398/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#1) from 11 to 11
2022-07-27 12:50:28.772 22398-22398/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#1) from 11 to 12
2022-07-27 12:50:28.773 22398-22398/com.juce.processingaudioinputtutorial D/AudioStreamInternal_Client: ~AudioStreamInternal() 0xb4000079ff05e960 called
2022-07-27 12:50:28.773 22398-22398/com.juce.processingaudioinputtutorial D/AAudioStream: ~AudioStream(s#1) mPlayerBase strongCount = 2
2022-07-27 12:50:28.773 22398-22398/com.juce.processingaudioinputtutorial D/AAudio: AAudioStream_close(s#1) returned 0 ---------
2022-07-27 12:50:28.773 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Requested Oboe stream close with result: OK
2022-07-27 12:50:28.776 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Preparing Oboe stream with params:
    AAudio supported = 1
    API = Unspecified
    DeviceId = 0
    Direction = Output
    SharingMode = Exclusive
    ChannelCount = 2
    Format = Float
    SampleRate = 48000
    PerformanceMode = LowLatency
2022-07-27 12:50:28.776 22398-22398/com.juce.processingaudioinputtutorial I/OboeAudio: openStream() OUTPUT -------- OboeVersion1.6.1 --------
2022-07-27 12:50:28.777 22398-22398/com.juce.processingaudioinputtutorial I/AAudio: AAudioStreamBuilder_openStream() called ----------------------------------------
2022-07-27 12:50:28.777 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: rate   =  48000, channels  = 2, format   = 5, sharing = EX, dir = OUTPUT
2022-07-27 12:50:28.777 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: device =      0, sessionId = -1, perfMode = 12, callback: ON with frames = 0
2022-07-27 12:50:28.777 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: usage  =      1, contentType = 2, inputPreset = 6, allowedCapturePolicy = 0
2022-07-27 12:50:28.777 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: privacy sensitive = false
2022-07-27 12:50:28.777 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: opPackageName = (null)
2022-07-27 12:50:28.777 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: attributionTag = (null)
2022-07-27 12:50:28.777 22398-22398/com.juce.processingaudioinputtutorial D/ioinputtutoria: PlayerBase::PlayerBase()
2022-07-27 12:50:28.794 22398-22398/com.juce.processingaudioinputtutorial D/AudioStreamInternal_Client: open() original HW burst = 48, minMicros = 2000 => SW burst = 96
2022-07-27 12:50:28.794 22398-22398/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#2) from 0 to 2
2022-07-27 12:50:28.794 22398-22398/com.juce.processingaudioinputtutorial I/AAudioFlowGraph: configure() source format = 0x00000005, channels = 2, sink format = 0x00000001, channels = 2
2022-07-27 12:50:28.795 22398-22398/com.juce.processingaudioinputtutorial I/AAudio: AAudioStreamBuilder_openStream() returns 0 = AAUDIO_OK for s#2 ----------------
2022-07-27 12:50:28.795 22398-22398/com.juce.processingaudioinputtutorial D/OboeAudio: AudioStreamAAudio.open() format=2, sampleRate=48000, capacity = 3072
2022-07-27 12:50:28.795 22398-22398/com.juce.processingaudioinputtutorial D/OboeAudio: AudioStreamAAudio.open: AAudioStream_Open() returned AAUDIO_OK
2022-07-27 12:50:28.795 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Building Oboe stream with result: OK
    Stream state = Open
2022-07-27 12:50:28.796 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Setting the bufferSizeInFrames to 1920
2022-07-27 12:50:28.796 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Stream details:
    Uses AAudio = 1
    DeviceId = 3
    Direction = Output
    SharingMode = Exclusive
    ChannelCount = 2
    Format = Float
    SampleRate = 48000
    BufferSizeInFrames = 1920
    BufferCapacityInFrames = 3072
    FramesPerBurst = 96
    FramesPerCallback = 0
    BytesPerFrame = 8
    BytesPerSample = 4
    PerformanceMode = LowLatency
2022-07-27 12:50:28.796 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Preparing Oboe stream with params:
    AAudio supported = 1
    API = Unspecified
    DeviceId = 0
    Direction = Input
    SharingMode = Exclusive
    ChannelCount = 1
    Format = Float
    SampleRate = 48000
    PerformanceMode = LowLatency
2022-07-27 12:50:28.796 22398-22398/com.juce.processingaudioinputtutorial I/OboeAudio: openStream() INPUT -------- OboeVersion1.6.1 --------
2022-07-27 12:50:28.796 22398-22398/com.juce.processingaudioinputtutorial I/AAudio: AAudioStreamBuilder_openStream() called ----------------------------------------
2022-07-27 12:50:28.796 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: rate   =  48000, channels  = 1, format   = 5, sharing = EX, dir = INPUT
2022-07-27 12:50:28.796 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: device =      0, sessionId = -1, perfMode = 12, callback: OFF with frames = 0
2022-07-27 12:50:28.796 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: usage  =      1, contentType = 2, inputPreset = 6, allowedCapturePolicy = 0
2022-07-27 12:50:28.796 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: privacy sensitive = false
2022-07-27 12:50:28.796 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: opPackageName = (null)
2022-07-27 12:50:28.796 22398-22398/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: attributionTag = (null)
2022-07-27 12:50:28.796 22398-22398/com.juce.processingaudioinputtutorial D/ioinputtutoria: PlayerBase::PlayerBase()
2022-07-27 12:50:28.797 22398-22398/com.juce.processingaudioinputtutorial D/ioinputtutoria: PlayerBase::PlayerBase()
2022-07-27 12:50:28.798 22398-22398/com.juce.processingaudioinputtutorial D/AudioStreamInternal_Client: ~AudioStreamInternal() 0xb4000079ff06ade0 called
2022-07-27 12:50:28.798 22398-22398/com.juce.processingaudioinputtutorial D/AAudioStream: ~AudioStream(s#3) mPlayerBase strongCount = 1
2022-07-27 12:50:28.798 22398-22398/com.juce.processingaudioinputtutorial D/ioinputtutoria: PlayerBase::~PlayerBase()
2022-07-27 12:50:28.808 22398-22398/com.juce.processingaudioinputtutorial I/AudioRecord: createRecord_l(0): AUDIO_INPUT_FLAG_FAST successful; frameCount 0 -> 4096
2022-07-27 12:50:28.808 22398-22398/com.juce.processingaudioinputtutorial D/AudioStreamRecord: open() setup I16>FLOAT conversion buffer with 192 frames
2022-07-27 12:50:28.808 22398-22398/com.juce.processingaudioinputtutorial W/AudioStreamRecord: open() flags changed from 0x00000005 to 0x00000001
2022-07-27 12:50:28.808 22398-22398/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#4) from 0 to 2
2022-07-27 12:50:28.808 22398-22398/com.juce.processingaudioinputtutorial I/AAudio: AAudioStreamBuilder_openStream() returns 0 = AAUDIO_OK for s#4 ----------------
2022-07-27 12:50:28.808 22398-22398/com.juce.processingaudioinputtutorial D/OboeAudio: AudioStreamAAudio.open() format=2, sampleRate=48000, capacity = 4096
2022-07-27 12:50:28.808 22398-22398/com.juce.processingaudioinputtutorial D/OboeAudio: AudioStreamAAudio.open: AAudioStream_Open() returned AAUDIO_OK
2022-07-27 12:50:28.808 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Building Oboe stream with result: OK
    Stream state = Open
2022-07-27 12:50:28.808 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Setting the bufferSizeInFrames to 1920
2022-07-27 12:50:28.808 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Stream details:
    Uses AAudio = 1
    DeviceId = 17
    Direction = Input
    SharingMode = Shared
    ChannelCount = 1
    Format = Float
    SampleRate = 48000
    BufferSizeInFrames = 4096
    BufferCapacityInFrames = 4096
    FramesPerBurst = 192
    FramesPerCallback = 0
    BytesPerFrame = 4
    BytesPerSample = 4
    PerformanceMode = LowLatency
2022-07-27 12:50:28.808 22398-22398/com.juce.processingaudioinputtutorial D/AAudio: AAudioStream_requestStart(s#4) called --------------
2022-07-27 12:50:28.808 22398-22398/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#4) from 2 to 3
2022-07-27 12:50:28.837 22398-22398/com.juce.processingaudioinputtutorial D/AAudio: AAudioStream_requestStart(s#4) returned 0 ---------
2022-07-27 12:50:28.837 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Requested Oboe stream start with result: OK
2022-07-27 12:50:28.837 22398-22416/com.juce.processingaudioinputtutorial D/AudioStreamLegacy: onAudioDeviceUpdate(deviceId = 17)
2022-07-27 12:50:28.837 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Starting Oboe stream with result: OK
2022-07-27 12:50:28.837 22398-22398/com.juce.processingaudioinputtutorial D/AAudio: AAudioStream_requestStart(s#2) called --------------
2022-07-27 12:50:28.837 22398-22398/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#2) from 2 to 3
2022-07-27 12:50:28.838 22398-22416/com.juce.processingaudioinputtutorial D/AudioStreamLegacy: onAudioDeviceUpdate(deviceId = 17)
2022-07-27 12:50:28.952 22398-22398/com.juce.processingaudioinputtutorial D/AAudio: AAudioStream_requestStart(s#2) returned 0 ---------
2022-07-27 12:50:28.952 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Requested Oboe stream start with result: OK
2022-07-27 12:50:28.952 22398-22398/com.juce.processingaudioinputtutorial I/JUCE: Starting Oboe stream with result: OK
2022-07-27 12:50:28.952 22398-23807/com.juce.processingaudioinputtutorial D/AudioStreamInternalPlay_Client: callbackLoop() entering >>>>>>>>>>>>>>>
2022-07-27 12:50:28.952 22398-23807/com.juce.processingaudioinputtutorial D/AudioStreamInternal_Client: onEventFromServer - got AAUDIO_SERVICE_EVENT_STARTED
2022-07-27 12:50:28.952 22398-23807/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#2) from 3 to 4
2022-07-27 12:50:28.957 22398-23807/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#4) from 3 to 4
2022-07-27 12:50:28.982 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@8a36c31[JuceActivity]: setView = com.rmsl.juce.ComponentPeerView@6faf097 TM=true
2022-07-27 12:50:28.985 22398-23790/com.juce.processingaudioinputtutorial D/OpenGLRenderer: setSurface called with nullptr
2022-07-27 12:50:28.994 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@71762f0[JuceActivity]: setView = com.rmsl.juce.ComponentPeerView@aba7069 TM=true
2022-07-27 12:50:28.996 22398-23790/com.juce.processingaudioinputtutorial D/OpenGLRenderer: setSurface called with nullptr
2022-07-27 12:50:29.004 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: setView = com.rmsl.juce.ComponentPeerView@b00aa25 TM=true
2022-07-27 12:50:29.018 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@f80a008[JuceActivity]: setView = com.android.internal.policy.DecorView@940149a TM=true
2022-07-27 12:50:29.025 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@8a36c31[JuceActivity]: Relayout returned: old=(0,0,1080,2154) new=(0,0,336,336) req=(336,336)4 dur=3 res=0x1 s={false 0} ch=false fn=-1
2022-07-27 12:50:29.030 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@71762f0[JuceActivity]: Relayout returned: old=(0,0,1080,2154) new=(0,0,336,336) req=(336,336)4 dur=2 res=0x1 s={false 0} ch=false fn=-1
2022-07-27 12:50:29.036 22398-22416/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: Resizing android.view.ViewRootImpl@8b6c3a1: frame=[0,0][1082,2042] reportDraw=true forceLayout=false backDropFrame=Rect(0, 0 - 1082, 2042)
2022-07-27 12:50:29.042 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: Relayout returned: old=(0,0,1080,2154) new=(0,0,1082,2042) req=(1082,2042)0 dur=8 res=0x7 s={true -5476376621302179632} ch=true fn=-1
2022-07-27 12:50:29.044 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: [DP] dp(1) 0 android.view.ViewRootImpl.reportNextDraw:11374 android.view.ViewRootImpl.performTraversals:4167 android.view.ViewRootImpl.doTraversal:2893 
2022-07-27 12:50:29.044 22398-23790/com.juce.processingaudioinputtutorial D/hw-ProcessState: Binder ioctl to enable oneway spam detection failed: Invalid argument
2022-07-27 12:50:29.044 22398-23790/com.juce.processingaudioinputtutorial D/OpenGLRenderer: eglCreateWindowSurface
2022-07-27 12:50:29.052 22398-23790/com.juce.processingaudioinputtutorial D/OpenGLRenderer: setSurface called with nullptr
2022-07-27 12:50:29.052 22398-23790/com.juce.processingaudioinputtutorial D/OpenGLRenderer: setSurface called with nullptr
2022-07-27 12:50:29.094 22398-23790/com.juce.processingaudioinputtutorial I/BufferQueueProducer: [ViewRootImpl@aa7be1c[JuceActivity]#0(BLAST Consumer)0](id:577e00000000,api:1,p:22398,c:22398) queueBuffer: queued for the first time.
2022-07-27 12:50:29.110 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@f80a008[JuceActivity]: Relayout returned: old=(0,0,1080,2280) new=(0,0,1080,2280) req=(1080,2280)0 dur=4 res=0x7 s={true -5476376621302109872} ch=true fn=-1
2022-07-27 12:50:29.110 22398-23790/com.juce.processingaudioinputtutorial D/OpenGLRenderer: eglCreateWindowSurface
2022-07-27 12:50:29.114 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@f80a008[JuceActivity]: [DP] dp(1) 1 android.view.ViewRootImpl.reportNextDraw:11374 android.view.ViewRootImpl.performTraversals:4167 android.view.ViewRootImpl.doTraversal:2893 
2022-07-27 12:50:29.119 22398-23790/com.juce.processingaudioinputtutorial I/BufferQueueProducer: [ViewRootImpl@f80a008[JuceActivity]#1(BLAST Consumer)1](id:577e00000001,api:1,p:22398,c:22398) queueBuffer: queued for the first time.
2022-07-27 12:50:29.121 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@f80a008[JuceActivity]: [DP] pdf(0) 1 android.view.ViewRootImpl.lambda$addFrameCompleteCallbackIfNeeded$3$ViewRootImpl:4969 android.view.ViewRootImpl$$ExternalSyntheticLambda16.run:6 android.os.Handler.handleCallback:938 
2022-07-27 12:50:29.121 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@f80a008[JuceActivity]: [DP] rdf()
2022-07-27 12:50:29.121 22398-22398/com.juce.processingaudioinputtutorial D/ViewRootImpl@f80a008[JuceActivity]: reportDrawFinished (fn: -1) 
2022-07-27 12:50:29.121 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: [DP] pdf(0) 0 android.view.ViewRootImpl.lambda$addFrameCompleteCallbackIfNeeded$3$ViewRootImpl:4969 android.view.ViewRootImpl$$ExternalSyntheticLambda16.run:6 android.os.Handler.handleCallback:938 
2022-07-27 12:50:29.121 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: [DP] rdf()
2022-07-27 12:50:29.121 22398-22398/com.juce.processingaudioinputtutorial D/ViewRootImpl@aa7be1c[JuceActivity]: reportDrawFinished (fn: -1) 
2022-07-27 12:50:29.122 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@8a36c31[JuceActivity]: dispatchDetachedFromWindow
2022-07-27 12:50:29.131 22398-22398/com.juce.processingaudioinputtutorial D/InputTransport: Input channel destroyed: '38133f4', fd=90
2022-07-27 12:50:29.133 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@71762f0[JuceActivity]: dispatchDetachedFromWindow
2022-07-27 12:50:29.135 22398-22398/com.juce.processingaudioinputtutorial D/InputTransport: Input channel destroyed: '1a91363', fd=93
2022-07-27 12:50:29.140 22398-23811/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: Resizing android.view.ViewRootImpl@8b6c3a1: frame=[0,257][1082,2155] reportDraw=false forceLayout=false backDropFrame=Rect(0, 0 - 1082, 1898)
2022-07-27 12:50:29.142 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: Relayout returned: old=(0,0,1082,2042) new=(0,257,1082,2155) req=(1082,1898)0 dur=5 res=0x1 s={true -5476376621302179632} ch=false fn=2
2022-07-27 12:50:29.143 22398-23790/com.juce.processingaudioinputtutorial D/OpenGLRenderer: setSurface() destroyed EGLSurface
2022-07-27 12:50:29.143 22398-23790/com.juce.processingaudioinputtutorial D/OpenGLRenderer: destroyEglSurface
2022-07-27 12:50:29.143 22398-23790/com.juce.processingaudioinputtutorial D/OpenGLRenderer: eglCreateWindowSurface
2022-07-27 12:50:29.177 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: handleResized, msg = 5 frames=ClientWindowFrames{frame=[0,0][1082,2042] display=[-10000,-10000][10000,10000] backdrop=[0,0][1082,2042]} forceNextWindowRelayout=false displayId=0 frameChanged=true backdropFrameChanged=true configChanged=false displayChanged=false mNextDrawUseBlastSync=false mergedConfiguration={mGlobalConfig={1.1 302mcc220mnc [en_CA] ldltr sw411dp w411dp h777dp 420dpi nrml long hdr widecg port night finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 2280) mAppBounds=Rect(0, 112 - 1080, 2154) mMaxBounds=Rect(0, 0 - 1080, 2280) mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=undefined mAlwaysOnTop=undefined mRotation=ROTATION_0 mPopOver=off mFreeformTaskPinningState=unpinned} s.21645 fontWeightAdjustment=0 ff=0 bf=0 bts=0 desktop/d dm/n dc/d ?dcui ?dcaf enb/d themeSeq=0} mOverrideConfig={1.1 302mcc220mnc [en_CA] ldltr sw411dp w411dp h777dp 420dpi nrml long hdr widecg port night finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 2280) mAppBounds=Rect(0, 112 - 1080, 2154) mMaxBounds=Rect(0, 0 - 1080, 2280) mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=standard mAlwaysOnTop=undefined mRotation=ROTATION_0 mPopOver=off mFreeformTaskPinningState=unpinned} s.1 fontWeightAdjustment=0 ff=0 bf=0 bts=0 desktop/d dm/n dc/d ?dcui ?dcaf enb/d themeSeq=0}}
2022-07-27 12:50:29.177 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: [DP] dp(1) 0 android.view.ViewRootImpl.reportNextDraw:11374 android.view.ViewRootImpl.handleResized:2204 android.view.ViewRootImpl.access$1200:294 
2022-07-27 12:50:29.178 22398-23790/com.juce.processingaudioinputtutorial I/BufferQueueProducer: [ViewRootImpl@aa7be1c[JuceActivity]#0(BLAST Consumer)0](id:577e00000000,api:1,p:22398,c:22398) queueBuffer: queued for the first time.
2022-07-27 12:50:29.187 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1
2022-07-27 12:50:29.188 22398-22398/com.juce.processingaudioinputtutorial D/InputMethodManager: startInputInner - Id : 0
2022-07-27 12:50:29.188 22398-22398/com.juce.processingaudioinputtutorial I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2022-07-27 12:50:29.193 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: handleResized, msg = 4 frames=ClientWindowFrames{frame=[0,257][1082,2155] display=[-10000,-10000][10000,10000] backdrop=[0,0][1082,1898]} forceNextWindowRelayout=false displayId=0 frameChanged=true backdropFrameChanged=true configChanged=false displayChanged=false mNextDrawUseBlastSync=false mergedConfiguration={mGlobalConfig={1.1 302mcc220mnc [en_CA] ldltr sw411dp w411dp h777dp 420dpi nrml long hdr widecg port night finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 2280) mAppBounds=Rect(0, 112 - 1080, 2154) mMaxBounds=Rect(0, 0 - 1080, 2280) mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=undefined mAlwaysOnTop=undefined mRotation=ROTATION_0 mPopOver=off mFreeformTaskPinningState=unpinned} s.21645 fontWeightAdjustment=0 ff=0 bf=0 bts=0 desktop/d dm/n dc/d ?dcui ?dcaf enb/d themeSeq=0} mOverrideConfig={1.1 302mcc220mnc [en_CA] ldltr sw411dp w411dp h777dp 420dpi nrml long hdr widecg port night finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 2280) mAppBounds=Rect(0, 112 - 1080, 2154) mMaxBounds=Rect(0, 0 - 1080, 2280) mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=standard mAlwaysOnTop=undefined mRotation=ROTATION_0 mPopOver=off mFreeformTaskPinningState=unpinned} s.1 fontWeightAdjustment=0 ff=0 bf=0 bts=0 desktop/d dm/n dc/d ?dcui ?dcaf enb/d themeSeq=0}}
2022-07-27 12:50:29.232 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: [DP] pdf(0) 0 android.view.ViewRootImpl.lambda$addFrameCompleteCallbackIfNeeded$3$ViewRootImpl:4969 android.view.ViewRootImpl$$ExternalSyntheticLambda16.run:6 android.os.Handler.handleCallback:938 
2022-07-27 12:50:29.232 22398-22398/com.juce.processingaudioinputtutorial I/ViewRootImpl@aa7be1c[JuceActivity]: [DP] rdf()
2022-07-27 12:50:29.232 22398-22398/com.juce.processingaudioinputtutorial D/ViewRootImpl@aa7be1c[JuceActivity]: reportDrawFinished (fn: 2) 
2022-07-27 12:50:29.233 22398-22398/com.juce.processingaudioinputtutorial D/InputMethodManager: startInputInner - Id : 0
2022-07-27 12:50:31.574 22398-23807/com.juce.processingaudioinputtutorial D/IsochronousClockModel: lateness > 5msecs,  value in micros is=41000
2022-07-27 12:50:31.674 22398-23807/com.juce.processingaudioinputtutorial D/IsochronousClockModel: lateness > 5msecs,  value in micros is=30568
2022-07-27 12:50:31.724 22398-23807/com.juce.processingaudioinputtutorial D/AudioStreamInternal_Client: onEventFromServer - got AAUDIO_SERVICE_EVENT_STOPPED
2022-07-27 12:50:31.726 22398-23807/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#2) from 4 to 13
2022-07-27 12:50:31.726 22398-23807/com.juce.processingaudioinputtutorial W/AudioStreamInternal_Client: onEventFromServer - AAUDIO_SERVICE_EVENT_DISCONNECTED - FIFO cleared
2022-07-27 12:50:31.727 22398-23807/com.juce.processingaudioinputtutorial D/AudioStreamInternalPlay_Client: callbackLoop() exiting, result = -899, isActive() = 0 <<<<<<<<<<<<<<
2022-07-27 12:50:31.727 22398-23869/com.juce.processingaudioinputtutorial D/OboeAudio: oboe_aaudio_error_thread_proc(,-899) - entering >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2022-07-27 12:50:31.728 22398-23869/com.juce.processingaudioinputtutorial D/AAudio: AAudioStream_requestStop(s#2) called
2022-07-27 12:50:31.728 22398-23869/com.juce.processingaudioinputtutorial D/AAudioStream: joinThread_l() pthread_join succeeded
2022-07-27 12:50:31.728 22398-23869/com.juce.processingaudioinputtutorial D/IsochronousClockModel: stop(nanos = 126695582767501) max lateness = 40998 micros
2022-07-27 12:50:31.728 22398-23869/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#2) from 13 to 9
2022-07-27 12:50:31.728 22398-23869/com.juce.processingaudioinputtutorial W/AAudioStream: setState(2) tried to set to 9 but already DISCONNECTED
2022-07-27 12:50:31.735 22398-23869/com.juce.processingaudioinputtutorial I/JUCE: Oboe stream onErrorBeforeClose(): ErrorDisconnected
2022-07-27 12:50:31.735 22398-23869/com.juce.processingaudioinputtutorial I/JUCE: Uses AAudio = 1
    Direction = Output
    SharingMode = Exclusive
    ChannelCount = 2
    Format = Float
    SampleRate = 48000
    BufferSizeInFrames = 1920
    BufferCapacityInFrames = 3072
    FramesPerBurst = 96
    FramesPerCallback = 0
    BytesPerFrame = 8
    BytesPerSample = 4
    PerformanceMode = LowLatency
    getDeviceId = 3
2022-07-27 12:50:31.735 22398-23869/com.juce.processingaudioinputtutorial D/AAudio: AAudioStream_requestStop(s#2) called
2022-07-27 12:50:31.735 22398-23869/com.juce.processingaudioinputtutorial D/AAudioStream: joinThread() - but has no thread or already join()ed
2022-07-27 12:50:31.735 22398-23869/com.juce.processingaudioinputtutorial W/AudioStreamInternal_Client: requestStop_l() stop callback returned -895, returning early
2022-07-27 12:50:31.746 22398-23869/com.juce.processingaudioinputtutorial D/AAudio: AAudioStream_close(s#2) called ---------------
2022-07-27 12:50:31.746 22398-23869/com.juce.processingaudioinputtutorial D/AudioStreamInternal_Client: release_l(): mServiceStreamHandle = 0x000001A1
2022-07-27 12:50:31.746 22398-23869/com.juce.processingaudioinputtutorial D/AAudioStream: joinThread() - but has no thread or already join()ed
2022-07-27 12:50:31.746 22398-23869/com.juce.processingaudioinputtutorial W/AudioStreamInternal_Client: requestStop_l() stop callback returned -895, returning early
2022-07-27 12:50:31.746 22398-23869/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#2) from 13 to 11
2022-07-27 12:50:31.844 22398-22416/com.juce.processingaudioinputtutorial D/AudioStreamLegacy: onAudioDeviceUpdate(deviceId = 3181)
2022-07-27 12:50:31.844 22398-22416/com.juce.processingaudioinputtutorial D/AudioStreamLegacy: onAudioDeviceUpdate() DISCONNECT the stream now, device 17 => 3181
2022-07-27 12:50:31.844 22398-22416/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#4) from 4 to 13
2022-07-27 12:50:31.848 22398-23869/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#2) from 11 to 11
2022-07-27 12:50:31.848 22398-23869/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#2) from 11 to 12
2022-07-27 12:50:31.848 22398-23869/com.juce.processingaudioinputtutorial D/AudioStreamInternal_Client: ~AudioStreamInternal() 0xb4000079ff05e960 called
2022-07-27 12:50:31.848 22398-23869/com.juce.processingaudioinputtutorial D/AAudioStream: ~AudioStream(s#2) mPlayerBase strongCount = 2
2022-07-27 12:50:31.848 22398-23869/com.juce.processingaudioinputtutorial D/AAudio: AAudioStream_close(s#2) returned 0 ---------
2022-07-27 12:50:31.848 22398-23869/com.juce.processingaudioinputtutorial I/JUCE: Oboe stream onErrorAfterClose(): ErrorDisconnected
2022-07-27 12:50:31.848 22398-23869/com.juce.processingaudioinputtutorial I/JUCE: Requested Oboe stream close with result: ErrorClosed
2022-07-27 12:50:31.849 22398-23869/com.juce.processingaudioinputtutorial I/JUCE: Preparing Oboe stream with params:
    AAudio supported = 1
    API = Unspecified
    DeviceId = 0
    Direction = Output
    SharingMode = Exclusive
    ChannelCount = 2
    Format = Float
    SampleRate = 48000
    PerformanceMode = LowLatency
2022-07-27 12:50:31.849 22398-23869/com.juce.processingaudioinputtutorial I/OboeAudio: openStream() OUTPUT -------- OboeVersion1.6.1 --------
2022-07-27 12:50:31.849 22398-23869/com.juce.processingaudioinputtutorial I/AAudio: AAudioStreamBuilder_openStream() called ----------------------------------------
2022-07-27 12:50:31.849 22398-23869/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: rate   =  48000, channels  = 2, format   = 5, sharing = EX, dir = OUTPUT
2022-07-27 12:50:31.849 22398-23869/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: device =      0, sessionId = -1, perfMode = 12, callback: ON with frames = 0
2022-07-27 12:50:31.849 22398-23869/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: usage  =      1, contentType = 2, inputPreset = 6, allowedCapturePolicy = 0
2022-07-27 12:50:31.849 22398-23869/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: privacy sensitive = false
2022-07-27 12:50:31.849 22398-23869/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: opPackageName = (null)
2022-07-27 12:50:31.849 22398-23869/com.juce.processingaudioinputtutorial I/AudioStreamBuilder: attributionTag = (null)
2022-07-27 12:50:31.849 22398-23869/com.juce.processingaudioinputtutorial D/ioinputtutoria: PlayerBase::PlayerBase()
2022-07-27 12:50:31.915 22398-23869/com.juce.processingaudioinputtutorial D/AudioStreamInternal_Client: open() original HW burst = 48, minMicros = 2000 => SW burst = 96
2022-07-27 12:50:31.916 22398-23869/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#5) from 0 to 2
2022-07-27 12:50:31.916 22398-23869/com.juce.processingaudioinputtutorial I/AAudioFlowGraph: configure() source format = 0x00000005, channels = 2, sink format = 0x00000001, channels = 2
2022-07-27 12:50:31.917 22398-23869/com.juce.processingaudioinputtutorial I/AAudio: AAudioStreamBuilder_openStream() returns 0 = AAUDIO_OK for s#5 ----------------
2022-07-27 12:50:31.917 22398-23869/com.juce.processingaudioinputtutorial D/OboeAudio: AudioStreamAAudio.open() format=2, sampleRate=48000, capacity = 3072
2022-07-27 12:50:31.917 22398-23869/com.juce.processingaudioinputtutorial D/OboeAudio: AudioStreamAAudio.open: AAudioStream_Open() returned AAUDIO_OK
2022-07-27 12:50:31.917 22398-23869/com.juce.processingaudioinputtutorial I/JUCE: Building Oboe stream with result: OK
    Stream state = Open
2022-07-27 12:50:31.917 22398-23869/com.juce.processingaudioinputtutorial I/JUCE: Setting the bufferSizeInFrames to 1920
2022-07-27 12:50:31.917 22398-23869/com.juce.processingaudioinputtutorial I/JUCE: Stream details:
    Uses AAudio = 1
    DeviceId = 3180
    Direction = Output
    SharingMode = Exclusive
    ChannelCount = 2
    Format = Float
    SampleRate = 48000
    BufferSizeInFrames = 1920
    BufferCapacityInFrames = 3072
    FramesPerBurst = 96
    FramesPerCallback = 0
    BytesPerFrame = 8
    BytesPerSample = 4
    PerformanceMode = LowLatency
2022-07-27 12:50:31.918 22398-23869/com.juce.processingaudioinputtutorial D/AAudio: AAudioStream_requestStart(s#5) called --------------
2022-07-27 12:50:31.918 22398-23869/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#5) from 2 to 3
2022-07-27 12:50:31.993 22398-23869/com.juce.processingaudioinputtutorial D/AAudio: AAudioStream_requestStart(s#5) returned 0 ---------
2022-07-27 12:50:31.993 22398-23869/com.juce.processingaudioinputtutorial I/JUCE: Requested Oboe stream start with result: OK
2022-07-27 12:50:31.994 22398-23869/com.juce.processingaudioinputtutorial I/JUCE: Starting Oboe stream with result: OK
2022-07-27 12:50:31.994 22398-23869/com.juce.processingaudioinputtutorial D/OboeAudio: oboe_aaudio_error_thread_proc() - exiting <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial D/AudioStreamInternalPlay_Client: callbackLoop() entering >>>>>>>>>>>>>>>
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial I/JUCE: Failed to read from input stream: ErrorDisconnected
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial D/AudioStreamInternal_Client: onEventFromServer - got AAUDIO_SERVICE_EVENT_STARTED
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial D/AAudioStream: setState(s#5) from 3 to 4
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial I/JUCE: Failed to read from input stream: ErrorDisconnected
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial I/JUCE: Failed to read from input stream: ErrorDisconnected
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial I/JUCE: Failed to read from input stream: ErrorDisconnected
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial I/JUCE: Failed to read from input stream: ErrorDisconnected
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial I/JUCE: Failed to read from input stream: ErrorDisconnected
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial I/JUCE: Failed to read from input stream: ErrorDisconnected
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial I/JUCE: Failed to read from input stream: ErrorDisconnected
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial I/JUCE: Failed to read from input stream: ErrorDisconnected
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial I/JUCE: Failed to read from input stream: ErrorDisconnected
2022-07-27 12:50:31.998 22398-23894/com.juce.processingaudioinputtutorial I/JUCE: Failed to read from 

This repeats in an endless loop ...

Plug-in formats (if applicable)

No response

Plug-in host applications (DAWs) (if applicable)

No response

Testing on the develop branch

I have not tested against the develop branch

Code of Conduct

hpsaturn commented 4 months ago

I had the same issue using USB-C headset in a Pixel7 device. When you plugged it, the recordstream enter to invalid state -895 and my record process fails in the next creation of the stream. My solution was added a new method in my AudioDeviceManager implementation of Oboe, to have a stream reset way, something like this:


std::shared_ptr<oboe::AudioStream> mRecordingStream;

void AndroidAudioDeviceManager::createAudioRecorder() {
  oboe::AudioStreamBuilder inBuilder;
  setupRecordingStreamParameters(&inBuilder, mSampleRate);
  oboe::Result result = inBuilder.openStream(mRecordingStream);
  warnIfNotLowLatency(mRecordingStream);
}

void AndroidAudioDeviceManager::reset_recording() {
  mRecordingStream.reset();
  createAudioRecorder();
}

void AndroidAudioDeviceManager::start_recording() {
  oboe::Result result = mRecordingStream->requestStart();
  if (result != oboe::Result::OK) {
    return;
  }
  m_record_initstate = INIT_DONE;
}

// Starting here:

virtual void record(SampleVector& v) {
  start_recording();
  if (m_record_initstate != AndroidAudioDeviceManager::INIT_DONE) {
    logwarn("AndroidAudioDevice::record() trying to restart recording");
    reset_recording();
    record(v);   // recurrence to try again
    return;
  }
  fetch_record_data(v);
}