3#include "pixelbullet/audio/audio_backend.h"
4#include "pixelbullet/audio/audio_playback_handle.h"
5#include "pixelbullet/audio/audio_playback_settings.h"
6#include "pixelbullet/audio/audio_spatial_settings.h"
7#include "pixelbullet/audio/command_queue.h"
8#include "pixelbullet/filesystem/virtual_path.h"
24namespace audio_internal
29 std::string resolved_path;
35 std::thread audio_thread;
37 std::unique_ptr<AudioBackend> backend;
38 std::atomic<AudioPlaybackHandle::ValueType> next_handle_value{ 1 };
39 bool initialized =
false;
42using BackendFactory = std::function<std::unique_ptr<AudioBackend>()>;
44enum class WorkerStepResult
51inline constexpr auto k_worker_poll_timeout = std::chrono::milliseconds(50);
55 glm::vec3 position = glm::vec3(0.0f);
56 glm::vec3 forward = glm::vec3(0.0f, 0.0f, -1.0f);
57 glm::vec3 up = glm::vec3(0.0f, 1.0f, 0.0f);
60[[nodiscard]] std::unique_ptr<AudioBackend> create_backend();
61[[nodiscard]]
bool initialize_backend(
AudioState& state);
62[[nodiscard]]
bool initialize_backend(
AudioState& state, BackendFactory backend_factory);
69[[nodiscard]]
float sanitize_volume(
float volume)
noexcept;
71[[nodiscard]]
bool is_valid_playback_position(glm::vec3 position)
noexcept;
72[[nodiscard]] std::optional<AudioPlaybackSettings> sanitize_playback_settings(
AudioPlaybackSettings settings)
noexcept;
73[[nodiscard]] std::optional<AudioListenerTransform> sanitize_listener_transform(glm::vec3 position, glm::vec3 forward,
74 glm::vec3 up)
noexcept;
75[[nodiscard]]
bool submit_command_if_initialized(
AudioState& state, std::function<
void()> command);
76[[nodiscard]] std::optional<AudioPlaySoundRequest> build_play_sound_request(
Filesystem& filesystem,
AudioState& state,
79[[nodiscard]] WorkerStepResult process_worker_step(
AudioState& state, std::chrono::milliseconds timeout = k_worker_poll_timeout);
Definition filesystem.h:19
Definition virtual_path.h:10
A simple thread-safe command queue.
Definition command_queue.h:14
Definition audio_playback_handle.h:8
Definition audio_playback_settings.h:11
Definition audio_spatial_settings.h:6
Definition audio_internal.h:27
Definition audio_internal.h:34