File tree Expand file tree Collapse file tree 6 files changed +128
-0
lines changed
Expand file tree Collapse file tree 6 files changed +128
-0
lines changed Original file line number Diff line number Diff line change @@ -19,6 +19,9 @@ target_sources(scratchcpp-audio
1919 iaudiooutput.h
2020 audiooutput.cpp
2121 audiooutput.h
22+ iaudioinput.h
23+ audioinput.h
24+ audioinput.cpp
2225 iaudioloudness.h
2326)
2427
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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
Original file line number Diff line number Diff line change 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
Original file line number Diff line number Diff line change @@ -15,3 +15,21 @@ gtest_discover_tests(audiooutput_test)
1515if (LIBSCRATCHCPP_AUDIO_SUPPORT)
1616 target_compile_definitions (audiooutput_test PRIVATE LIBSCRATCHCPP_AUDIO_SUPPORT)
1717endif ()
18+
19+ # audioinput_test
20+ add_executable (
21+ audioinput_test
22+ audioinput_test.cpp
23+ )
24+
25+ target_link_libraries (
26+ audioinput_test
27+ GTest::gtest_main
28+ scratchcpp
29+ )
30+
31+ gtest_discover_tests(audioinput_test)
32+
33+ if (LIBSCRATCHCPP_AUDIO_SUPPORT)
34+ target_compile_definitions (audioinput_test PRIVATE LIBSCRATCHCPP_AUDIO_SUPPORT)
35+ endif ()
Original file line number Diff line number Diff line change 1+ #include < audio/audioinput.h>
2+
3+ #ifdef LIBSCRATCHCPP_AUDIO_SUPPORT
4+ #include < audio/internal/audioloudness.h>
5+ #else
6+ #include < audio/internal/audioloudnessstub.h>
7+ #endif
8+
9+ #include " ../common.h"
10+
11+ using namespace libscratchcpp ;
12+
13+ TEST (AudioInputTest, Create)
14+ {
15+ auto factory = AudioInput::instance ();
16+ std::shared_ptr<IAudioLoudness> audioLoudness = factory->audioLoudness ();
17+ ASSERT_TRUE (audioLoudness);
18+
19+ #ifdef LIBSCRATCHCPP_AUDIO_SUPPORT
20+ ASSERT_TRUE (std::dynamic_pointer_cast<AudioLoudness>(audioLoudness));
21+ #else
22+ ASSERT_TRUE (std::dynamic_pointer_cast<AudioLoudnessStub>(audioLoudness));
23+ #endif
24+ }
You can’t perform that action at this time.
0 commit comments