MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_audio_player.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_AUDIO_PLAYER_H_1610736803
12#define INCGUARD_MGL_AUDIO_PLAYER_H_1610736803
13
14#include <mutex>
15
24
25namespace MGL
26{
27class InitializerDelegate;
28}
29
30namespace MGL::Audio
31{
33class Player final : public SharedSingleton<Player>
34{
35public:
36 static STL::unique_ptr<Player> &GetInstanceRef() noexcept;
37
38 bool Initialize(STL::unique_ptr<Renderer> &renderer, InitializeMode initMode) noexcept;
39
40 bool Load(const SharedVoice& voice) noexcept;
41 bool Unload(VoiceKey key) noexcept;
42
43 SharedSourceInstance MakeSourceInstance(VoiceKey key, bool isAutoRemove) noexcept;
44
45 /* ------------------------------------------------------------------------- */
50 /* ------------------------------------------------------------------------- */
51 [[nodiscard]] const DataFormat &GetOutputFormat() const noexcept
52 {
53 return _renderer->GetOutputFormat();
54 }
55
56 /* ------------------------------------------------------------------------- */
61 /* ------------------------------------------------------------------------- */
62 void SetMasterVolume(float volume) noexcept
63 {
64 _masterVolume = volume;
65 }
66
67 /* ------------------------------------------------------------------------- */
72 /* ------------------------------------------------------------------------- */
73 [[nodiscard]] float GetMasterVolume() const noexcept
74 {
75 return _masterVolume;
76 }
77
78 void SetVoiceVolume(VoiceKey voiceKey, float volume) noexcept;
79 [[nodiscard]] float GetVoiceVolume(VoiceKey voiceKey) noexcept;
80
81private:
82 static void Rendering(void **outData, size_t outDataCount, const DataFormat &dataFormat, size_t frameCount) noexcept;
83
84 bool _isInitialized{false};
85 VoiceStorage _voiceStorage;
87 std::mutex _mutex;
88
89 std::atomic<float> _masterVolume{1.0f};
90
91 SampleTypeConvert::WriteDataFunction _writeData{nullptr};
92
93 STL::unique_ptr<Renderer> _renderer;
94};
95} // namespace MGL::Audio
96
97#endif // INCGUARD_MGL_AUDIO_PLAYER_H_1610736803
98
99// vim: et ts=4 sw=4 sts=4
オーディオプレイヤークラス
Definition mgl_audio_player.h:34
float GetVoiceVolume(VoiceKey voiceKey) noexcept
ボイスのボリュームを設定
Definition mgl_audio_player.cc:203
void SetVoiceVolume(VoiceKey voiceKey, float volume) noexcept
ボイスのボリュームを設定
Definition mgl_audio_player.cc:187
SharedSourceInstance MakeSourceInstance(VoiceKey key, bool isAutoRemove) noexcept
ソースインスタンスを生成
Definition mgl_audio_player.cc:148
float GetMasterVolume() const noexcept
マスター音量の取得
Definition mgl_audio_player.h:73
void SetMasterVolume(float volume) noexcept
マスター音量の設定
Definition mgl_audio_player.h:62
const DataFormat & GetOutputFormat() const noexcept
出力フォーマットの取得
Definition mgl_audio_player.h:51
bool Load(const SharedVoice &voice) noexcept
ボイスの読み込み
Definition mgl_audio_player.cc:87
bool Unload(VoiceKey key) noexcept
ボイスを解放
Definition mgl_audio_player.cc:128
bool Initialize(STL::unique_ptr< Renderer > &renderer, InitializeMode initMode) noexcept
初期化処理
Definition mgl_audio_player.cc:38
static STL::unique_ptr< Player > & GetInstanceRef() noexcept
インスタンスの取得
Definition mgl_audio_player.cc:23
シングルトンテンプレート(共有ライブラリ用)
Definition mgl_singleton.h:44
MGL オーディオ関連定義
VoiceKey
ボイスキー
Definition mgl_audio_defs.h:22
InitializeMode
初期化モード
Definition mgl_audio_defs.h:42
MGL オーディオレンダラ
MGL オーディオサンプルの変換用関数
MGL オーディオソースインスタンス
std::shared_ptr< SourceInstance > SharedSourceInstance
共有ソースインスタンス
Definition mgl_audio_source_instance.h:187
std::shared_ptr< Voice > SharedVoice
共有ボイスの型
Definition mgl_audio_voice.h:251
MGL オーディオボイスストレージ
MGL シングルトンクラス
MGL STLコンテナの代替
std::list< T, Allocator< T > > list
std::listの代替
Definition mgl_stl_containers.h:47
MGL STLのメモリ関連の代替
std::unique_ptr< T, Deleter > unique_ptr
MGLのアロケータを利用するユニークポインタ
Definition mgl_stl_memory.h:247
データフォーマット
Definition mgl_audio_defs.h:61