Commit Graph
12 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 6d9a54d60d Android: Don't restart the microphone on resume after it was stopped while paused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:41:19 +02:00
Henrik RydgårdandClaude Opus 5.5 6cf4872e78 Android: Hand microphone input over on the CPU thread, like the other hosts
The Oboe input callback used to call Microphone::addAudioData directly,
writing PSP memory from the audio thread. Now it only pushes samples
into a SampleRing, and pollRecording drains it on the CPU thread.
Starting and stopping still go through Java, which asks for permission.

Every host with a microphone polls now, so sceUsbMic drops what only the
push path needed: QueueBuf's recursive mutex, restarting the mic on a
device change, and the startMic parameter nobody read. Also removes the
unused System_AudioRecordingState and Microphone::isNeedInput.

The Java microphone_command branch didn't return true, so every command
logged "processCommand failed".

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-10 18:49:21 +02:00
Henrik RydgårdandClaude Opus 5.5 834c3f00ee Android: Replace OpenSL ES audio with Oboe
Oboe uses AAudio on Android 8.1+ and falls back to OpenSL ES on older
devices. Output and microphone input both go through it. The mic now gets
resampled by Oboe from the device's rate to whatever the game asks for.

New: when a stream is disconnected (headphones unplugged, Bluetooth device
going away), it's reopened on the new default device instead of going
silent.

Oboe 1.11.0 is added as a submodule, built through ext/oboe-build for CMake
and as a module in Android.mk.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-10 12:13:58 +02:00
Henrik Rydgård 21c6594961 Fix a bunch of Android Studio lint warnings 2024-10-10 10:24:40 +02:00
Henrik Rydgård e01ca5b057 Logging API change (refactor) (#19324)
* Rename LogType to Log

* Explicitly use the Log:: enum when logging. Allows for autocomplete when editing.

* Mac/ARM64 buildfix

* Do the same with the hle result log macros

* Rename the log names to mixed case while at it.

* iOS buildfix

* Qt buildfix attempt, ARM32 buildfix
2024-07-14 14:42:59 +02:00
Henrik Rydgård 942958c7d8 Store the OpenSL error in a global to avoid "No context"
Followup to #14536
2021-06-16 07:28:45 +02:00
Henrik Rydgård 90cb284837 Remove asserts from OpenSL init. Expose error inside audio settings 2021-06-15 23:13:07 +02:00
Florin9doi 6531c7f4f8 [Android] Retrieve isMicStarted from AndroidAudio state 2020-10-24 20:16:22 +03:00
Florin9doi a42f5234c5 [Android] Start recording immediately after asking for permission 2020-10-24 19:51:31 +03:00
Florin9doi 9379fe1399 [Android] Audio record using OpenSL 2020-10-24 19:51:30 +03:00
Henrik Rydgård 5117ded378 Remove ELOG/ILOG/WLOG from the Android C++ code (mostly) 2020-08-15 19:08:39 +02:00
Henrik Rydgård aebbff55f1 Some renaming and cleanup in the Android audio code 2020-07-28 14:24:40 +02:00