LCOV - code coverage report
Current view: top level - src/audio/backend - audio_backend_factory.cpp (source / functions) Coverage Total Hit
Test: merged.info Lines: 53.8 % 13 7
Test Date: 2026-06-07 15:51:50 Functions: 50.0 % 2 1

            Line data    Source code
       1              : #include "audio/backend/audio_backend.h"
       2              : #include "audio/backend/audio_backend_registry.h"
       3              : #ifdef __APPLE__
       4              : #include <TargetConditionals.h>
       5              : #endif
       6              : 
       7              : #if defined(AMPLITRON_ANDROID_OBOE)
       8              : #include "audio/backend/oboe_backend.h"
       9              : static Amplitron::BackendRegistrar<Amplitron::OboeBackend> g_oboe_registrar("oboe");
      10              : #elif defined(__EMSCRIPTEN__) || (defined(__APPLE__) && TARGET_OS_IPHONE)
      11              : #include "audio/backend/sdl_backend.h"
      12              : static Amplitron::BackendRegistrar<Amplitron::SdlBackend> g_sdl_registrar("sdl");
      13              : #else
      14              : #include "audio/backend/portaudio_backend.h"
      15              : #include "audio/backend/sdl_backend.h"
      16            2 : static Amplitron::BackendRegistrar<Amplitron::PortAudioBackend> g_portaudio_registrar("portaudio");
      17            2 : static Amplitron::BackendRegistrar<Amplitron::SdlBackend> g_sdl_registrar("sdl");
      18              : #ifdef WITH_JACK
      19              : #include "audio/backend/jack_backend.h"
      20              : static Amplitron::BackendRegistrar<Amplitron::JackBackend> g_jack_registrar("jack");
      21              : #endif
      22              : #endif
      23              : 
      24              : namespace Amplitron {
      25              : 
      26          814 : std::unique_ptr<IAudioBackend> AudioBackendFactory::create_backend(const std::string& type) {
      27          814 :     auto backend = AudioBackendRegistry::instance().create(type);
      28          814 :     if (backend) {
      29          814 :         return backend;
      30              :     }
      31              : 
      32              :     // Fallback: if not found, use first available
      33            0 :     auto list = get_available_backends();
      34            0 :     if (!list.empty()) {
      35            0 :         return AudioBackendRegistry::instance().create(list[0]);
      36              :     }
      37            0 :     return nullptr;
      38          814 : }
      39              : 
      40            0 : std::vector<std::string> AudioBackendFactory::get_available_backends() {
      41            0 :     return AudioBackendRegistry::instance().available();
      42              : }
      43              : 
      44              : }  // namespace Amplitron
        

Generated by: LCOV version 2.0-1