diff --git a/androidaudioplugin-manager/src/main/cpp/AAPMidiEventTranslator.cpp b/androidaudioplugin-manager/src/main/cpp/AAPMidiEventTranslator.cpp index 8abe1518..db2bf9d5 100644 --- a/androidaudioplugin-manager/src/main/cpp/AAPMidiEventTranslator.cpp +++ b/androidaudioplugin-manager/src/main/cpp/AAPMidiEventTranslator.cpp @@ -1,11 +1,11 @@ #include "aap/core/aap_midi2_helper.h" #include "AAPMidiEventTranslator.h" -aap::AAPMidiEventTranslator::AAPMidiEventTranslator(RemotePluginInstance* instance, int32_t midiBufferSize, int32_t initialMidiProtocol) : +aap::AAPMidiEventTranslator::AAPMidiEventTranslator(RemotePluginInstance* instance, int32_t midiBufferSize, int32_t initialMidiTransportProtocol) : instance(instance), midi_buffer_size(midiBufferSize), conversion_helper_buffer_size(AAP_MAX_EXTENSION_URI_SIZE + AAP_MAX_EXTENSION_DATA_SIZE + 16), - receiver_midi_protocol(initialMidiProtocol) { + receiver_midi_transport_protocol(initialMidiTransportProtocol) { translation_buffer = (uint8_t*) calloc(1, midi_buffer_size); conversion_helper_buffer = (uint8_t*) calloc(1, conversion_helper_buffer_size); } @@ -131,14 +131,14 @@ size_t aap::AAPMidiEventTranslator::translateMidiBufferIfNeeded(uint8_t* bytes, // https://issuetracker.google.com/issues/227690391 auto protocol = detectEndpointConfigurationMessage(bytes, offset, length); if (protocol != 0) { - receiver_midi_protocol = protocol; + receiver_midi_transport_protocol = protocol; // Do not process the rest, it should contain only the Stream Configuration message // (Not an official standard requirement, but the legacy Set New Protocol message was // defined that there must be some rational wait time until the next messages.) return 0; } - if (receiver_midi_protocol != CMIDI2_PROTOCOL_TYPE_MIDI2) { + if (receiver_midi_transport_protocol != CMIDI2_PROTOCOL_TYPE_MIDI2) { // It receives MIDI1 bytestream. We translate to MIDI2 UMPs. cmidi2_midi_conversion_context context; cmidi2_midi_conversion_context_initialize(&context); diff --git a/androidaudioplugin-manager/src/main/cpp/AAPMidiEventTranslator.h b/androidaudioplugin-manager/src/main/cpp/AAPMidiEventTranslator.h index da49ed89..1268d052 100644 --- a/androidaudioplugin-manager/src/main/cpp/AAPMidiEventTranslator.h +++ b/androidaudioplugin-manager/src/main/cpp/AAPMidiEventTranslator.h @@ -20,13 +20,13 @@ namespace aap { int32_t conversion_helper_buffer_size; // MIDI protocol type of the messages it receives via JNI - int32_t receiver_midi_protocol; + int32_t receiver_midi_transport_protocol; int32_t current_mapping_policy{AAP_PARAMETERS_MAPPING_POLICY_NONE}; int32_t detectEndpointConfigurationMessage(uint8_t* bytes, size_t offset, size_t length); public: - explicit AAPMidiEventTranslator(RemotePluginInstance* instance, int32_t midiBufferSize = AAP_MANAGER_MIDI_BUFFER_SIZE, int32_t initialMidiProtocol = CMIDI2_PROTOCOL_TYPE_MIDI2); + explicit AAPMidiEventTranslator(RemotePluginInstance* instance, int32_t midiBufferSize = AAP_MANAGER_MIDI_BUFFER_SIZE, int32_t initialMidiTransportProtocol = CMIDI2_PROTOCOL_TYPE_MIDI2); ~AAPMidiEventTranslator(); void setPlugin(RemotePluginInstance* pluginInstance); diff --git a/androidaudioplugin-manager/src/main/cpp/AudioDeviceManager.h b/androidaudioplugin-manager/src/main/cpp/AudioDeviceManager.h index ee71b92b..a34ee0fe 100644 --- a/androidaudioplugin-manager/src/main/cpp/AudioDeviceManager.h +++ b/androidaudioplugin-manager/src/main/cpp/AudioDeviceManager.h @@ -12,8 +12,8 @@ namespace aap { // This needs to be implemented for each platform static AudioDeviceManager* getInstance(); - virtual AudioDeviceIn* openDefaultInput(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) = 0; - virtual AudioDeviceOut* openDefaultOutput(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) = 0; + virtual AudioDeviceIn* ensureDefaultInputOpened(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) = 0; + virtual AudioDeviceOut* ensureDefaultOutputOpened(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) = 0; }; } diff --git a/androidaudioplugin-manager/src/main/cpp/AudioGraph.cpp b/androidaudioplugin-manager/src/main/cpp/AudioGraph.cpp index 2b1aee50..ed77051e 100644 --- a/androidaudioplugin-manager/src/main/cpp/AudioGraph.cpp +++ b/androidaudioplugin-manager/src/main/cpp/AudioGraph.cpp @@ -68,8 +68,12 @@ void aap::SimpleLinearAudioGraph::pauseProcessing() { aap::SimpleLinearAudioGraph::SimpleLinearAudioGraph(int32_t sampleRate, uint32_t framesPerCallback, int32_t channelsInAudioBus) : AudioGraph(sampleRate, framesPerCallback, channelsInAudioBus), - input(this, AudioDeviceManager::getInstance()->openDefaultInput(sampleRate, framesPerCallback, channelsInAudioBus)), - output(this, AudioDeviceManager::getInstance()->openDefaultOutput(sampleRate, framesPerCallback, channelsInAudioBus)), + input(this, AudioDeviceManager::getInstance()->ensureDefaultInputOpened(sampleRate, + framesPerCallback, + channelsInAudioBus)), + output(this, AudioDeviceManager::getInstance()->ensureDefaultOutputOpened(sampleRate, + framesPerCallback, + channelsInAudioBus)), plugin(this, nullptr), audio_data(this), midi_input(this, nullptr, sampleRate, framesPerCallback, CMIDI2_PROTOCOL_TYPE_MIDI2, AAP_PLUGIN_PLAYER_DEFAULT_MIDI_RING_BUFFER_SIZE), diff --git a/androidaudioplugin-manager/src/main/cpp/OboeAudioDeviceManager.cpp b/androidaudioplugin-manager/src/main/cpp/OboeAudioDeviceManager.cpp index 4f6d6174..5ab671f7 100644 --- a/androidaudioplugin-manager/src/main/cpp/OboeAudioDeviceManager.cpp +++ b/androidaudioplugin-manager/src/main/cpp/OboeAudioDeviceManager.cpp @@ -87,18 +87,16 @@ namespace aap { //-------- aap::AudioDeviceIn * -aap::OboeAudioDeviceManager::openDefaultInput(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) { - // FIXME: this should not be created twice - //assert(input == nullptr); - input = std::make_shared<OboeAudioDeviceIn>(sampleRate, framesPerCallback, numChannels); +aap::OboeAudioDeviceManager::ensureDefaultInputOpened(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) { + if (input == nullptr) + input = std::make_shared<OboeAudioDeviceIn>(sampleRate, framesPerCallback, numChannels); return input.get(); } aap::AudioDeviceOut * -aap::OboeAudioDeviceManager::openDefaultOutput(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) { - // FIXME: this should not be created twice - //assert(output == nullptr); - output = std::make_shared<OboeAudioDeviceOut>(sampleRate, framesPerCallback, numChannels); +aap::OboeAudioDeviceManager::ensureDefaultOutputOpened(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) { + if (output == nullptr) + output = std::make_shared<OboeAudioDeviceOut>(sampleRate, framesPerCallback, numChannels); return output.get(); } diff --git a/androidaudioplugin-manager/src/main/cpp/OboeAudioDeviceManager.h b/androidaudioplugin-manager/src/main/cpp/OboeAudioDeviceManager.h index d0f36704..740548dc 100644 --- a/androidaudioplugin-manager/src/main/cpp/OboeAudioDeviceManager.h +++ b/androidaudioplugin-manager/src/main/cpp/OboeAudioDeviceManager.h @@ -10,15 +10,15 @@ namespace aap { class OboeAudioDeviceOut; class OboeAudioDeviceManager : public AudioDeviceManager { - uint32_t frames_per_callback; + uint32_t frames_per_callback{}; std::shared_ptr<OboeAudioDeviceIn> input{nullptr}; std::shared_ptr<OboeAudioDeviceOut> output{nullptr}; public: - OboeAudioDeviceManager() {} - AudioDeviceIn * openDefaultInput(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) override; + OboeAudioDeviceManager() = default; + AudioDeviceIn * ensureDefaultInputOpened(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) override; - AudioDeviceOut * openDefaultOutput(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) override; + AudioDeviceOut * ensureDefaultOutputOpened(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) override; }; } diff --git a/androidaudioplugin-manager/src/main/cpp/VirtualAudioDeviceManager.h b/androidaudioplugin-manager/src/main/cpp/VirtualAudioDeviceManager.h index e0a07e90..f4430496 100644 --- a/androidaudioplugin-manager/src/main/cpp/VirtualAudioDeviceManager.h +++ b/androidaudioplugin-manager/src/main/cpp/VirtualAudioDeviceManager.h @@ -50,8 +50,8 @@ namespace aap { output(std::make_shared<VirtualAudioDeviceOut>()) { } - AudioDeviceIn * openDefaultInput(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) override { return input.get(); } - AudioDeviceOut * openDefaultOutput(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) override { return output.get(); } + AudioDeviceIn * ensureDefaultInputOpened(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) override { return input.get(); } + AudioDeviceOut * ensureDefaultOutputOpened(int32_t sampleRate, int32_t framesPerCallback, int32_t numChannels) override { return output.get(); } }; }