Skip to content

Commit 27b1734

Browse files
authored
Merge pull request #510 from scratchcpp/audio_input_api
Add audio input API
2 parents 9fbd24f + 102c191 commit 27b1734

35 files changed

+457
-153
lines changed

src/audio/CMakeLists.txt

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
option(LIBSCRATCHCPP_AUDIO_SUPPORT "Audio support" ON)
22

33
add_library(scratchcpp-audio STATIC)
4-
set(MINIAUDIO_SRC thirdparty/miniaudio)
4+
set(MINIAUDIO_SRC internal/thirdparty/miniaudio)
55

66
if (LIBSCRATCHCPP_AUDIO_SUPPORT)
77
add_library(miniaudio STATIC
@@ -16,23 +16,31 @@ endif()
1616
target_sources(scratchcpp-audio
1717
PUBLIC
1818
iaudioplayer.h
19-
iaudioplayerfactory.h
20-
audioplayerfactory.cpp
21-
audioplayerfactory.h
19+
iaudiooutput.h
20+
audiooutput.cpp
21+
audiooutput.h
22+
iaudioinput.h
23+
audioinput.h
24+
audioinput.cpp
25+
iaudioloudness.h
2226
)
2327

2428
if (LIBSCRATCHCPP_AUDIO_SUPPORT)
2529
target_sources(scratchcpp-audio
2630
PUBLIC
27-
audioengine.cpp
28-
audioengine.h
29-
audioplayer.cpp
30-
audioplayer.h
31+
internal/audioengine.cpp
32+
internal/audioengine.h
33+
internal/audioplayer.cpp
34+
internal/audioplayer.h
35+
internal/audioloudness.cpp
36+
internal/audioloudness.h
3137
)
3238
else()
3339
target_sources(scratchcpp-audio
3440
PUBLIC
35-
audioplayerstub.cpp
36-
audioplayerstub.h
41+
internal/audioplayerstub.cpp
42+
internal/audioplayerstub.h
43+
internal/audioloudnessstub.cpp
44+
internal/audioloudnessstub.h
3745
)
3846
endif()

src/audio/audioinput.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
3+
#include "audioinput.h"
4+
5+
#ifdef LIBSCRATCHCPP_AUDIO_SUPPORT
6+
#include "internal/audioloudness.h"
7+
#else
8+
#include "internal/audioloudnessstub.h"
9+
#endif
10+
11+
using namespace libscratchcpp;
12+
13+
std::shared_ptr<IAudioInput> AudioInput::m_instance = std::make_shared<AudioInput>();
14+
15+
AudioInput::AudioInput()
16+
{
17+
}
18+
19+
std::shared_ptr<IAudioInput> AudioInput::instance()
20+
{
21+
return m_instance;
22+
}
23+
24+
std::shared_ptr<IAudioLoudness> AudioInput::audioLoudness() const
25+
{
26+
if (!m_audioLoudness) {
27+
#ifdef LIBSCRATCHCPP_AUDIO_SUPPORT
28+
m_audioLoudness = std::make_shared<AudioLoudness>();
29+
#else
30+
m_audioLoudness = std::make_shared<AudioLoudnessStub>();
31+
#endif
32+
}
33+
34+
return m_audioLoudness;
35+
}

src/audio/audioinput.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
3+
#pragma once
4+
5+
#include <memory>
6+
7+
#include "iaudioinput.h"
8+
9+
namespace libscratchcpp
10+
{
11+
12+
class AudioInput : public IAudioInput
13+
{
14+
public:
15+
AudioInput();
16+
17+
static std::shared_ptr<IAudioInput> instance();
18+
19+
std::shared_ptr<IAudioLoudness> audioLoudness() const override;
20+
21+
private:
22+
static std::shared_ptr<IAudioInput> m_instance;
23+
24+
mutable std::shared_ptr<IAudioLoudness> m_audioLoudness;
25+
};
26+
27+
} // namespace libscratchcpp

src/audio/audiooutput.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
3+
#include "audiooutput.h"
4+
5+
#ifdef LIBSCRATCHCPP_AUDIO_SUPPORT
6+
#include "internal/audioplayer.h"
7+
#else
8+
#include "internal/audioplayerstub.h"
9+
#endif
10+
11+
using namespace libscratchcpp;
12+
13+
std::shared_ptr<IAudioOutput> AudioOutput::m_instance = std::make_shared<AudioOutput>();
14+
15+
AudioOutput::AudioOutput()
16+
{
17+
}
18+
19+
std::shared_ptr<IAudioOutput> AudioOutput::instance()
20+
{
21+
return m_instance;
22+
}
23+
24+
std::shared_ptr<IAudioPlayer> AudioOutput::createAudioPlayer() const
25+
{
26+
#ifdef LIBSCRATCHCPP_AUDIO_SUPPORT
27+
return std::make_shared<AudioPlayer>();
28+
#else
29+
return std::make_shared<AudioPlayerStub>();
30+
#endif
31+
}

src/audio/audiooutput.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
3+
#pragma once
4+
5+
#include "iaudiooutput.h"
6+
7+
namespace libscratchcpp
8+
{
9+
10+
class AudioOutput : public IAudioOutput
11+
{
12+
public:
13+
AudioOutput();
14+
15+
static std::shared_ptr<IAudioOutput> instance();
16+
17+
std::shared_ptr<IAudioPlayer> createAudioPlayer() const override;
18+
19+
private:
20+
static std::shared_ptr<IAudioOutput> m_instance;
21+
};
22+
23+
} // namespace libscratchcpp

src/audio/audioplayerfactory.cpp

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/audio/audioplayerfactory.h

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/audio/iaudioinput.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
3+
#pragma once
4+
5+
#include <memory>
6+
7+
namespace libscratchcpp
8+
{
9+
10+
class IAudioLoudness;
11+
12+
class IAudioInput
13+
{
14+
15+
public:
16+
virtual ~IAudioInput() { }
17+
18+
virtual std::shared_ptr<IAudioLoudness> audioLoudness() const = 0;
19+
};
20+
21+
} // namespace libscratchcpp

src/audio/iaudioloudness.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
3+
#pragma once
4+
5+
namespace libscratchcpp
6+
{
7+
8+
class IAudioLoudness
9+
{
10+
public:
11+
virtual ~IAudioLoudness() { }
12+
13+
virtual int getLoudness() const = 0;
14+
};
15+
16+
} // namespace libscratchcpp
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ namespace libscratchcpp
99

1010
class IAudioPlayer;
1111

12-
class IAudioPlayerFactory
12+
class IAudioOutput
1313
{
1414
public:
15-
virtual ~IAudioPlayerFactory() { }
15+
virtual ~IAudioOutput() { }
1616

17-
virtual std::shared_ptr<IAudioPlayer> create() const = 0;
17+
virtual std::shared_ptr<IAudioPlayer> createAudioPlayer() const = 0;
1818
};
1919

2020
} // namespace libscratchcpp

0 commit comments

Comments
 (0)