mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-14 23:10:33 +02:00
sceUsbMic input comes from the input side of the RemoteIO unit that already does the output. The input callback only copies samples into a lock-free ring buffer, sized so it never allocates, and the CPU thread drains it into Microphone::addAudioData when sceUsbMic polls, the way the SDL backend works. Reconfiguring the unit happens on the main thread. Whether the game is recording is kept apart from whether the unit's input is on, so recording resumes after an interruption or a trip to the background, which shut the unit down. The unit also runs, silently, when sound is off but the game is recording. While recording, the session is PlayAndRecord, with Bluetooth through A2DP so headphones keep full quality and the built-in mic is the input. Permission is asked for on iOS 17+ through AVAudioApplication. Also moves the microphone recorder homebrew used to test this from Tools/psp-microphone to pspautotests, as demos/microphone, and updates the submodule. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
33 lines
1.4 KiB
C
33 lines
1.4 KiB
C
// Copyright (c) 2012- PPSSPP Project.
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, version 2.0 or later versions.
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License 2.0 for more details.
|
|
|
|
// A copy of the GPL 2.0 should have been included with the program.
|
|
// If not, see http://www.gnu.org/licenses/
|
|
|
|
// Official git repository and contact information can be found at
|
|
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
|
|
|
|
// This code implements the emulated audio using CoreAudio for iOS
|
|
// Originally written by jtraynham
|
|
|
|
// Main thread. Init does nothing if neither sound nor the microphone is on.
|
|
void iOSCoreAudioInit();
|
|
void iOSCoreAudioShutdown();
|
|
|
|
// Applies the audio settings (mix with others, respect silent mode) to the session.
|
|
void iOSCoreAudioUpdateSession();
|
|
|
|
// Microphone input, for sceUsbMic. These are called on the CPU thread. Input is buffered, and
|
|
// iOSCoreAudioPollRecording hands it over to Microphone::addAudioData.
|
|
void iOSCoreAudioStartRecording(int sampleRate);
|
|
void iOSCoreAudioStopRecording();
|
|
void iOSCoreAudioPollRecording();
|