xref: /aosp_15_r20/external/armnn/samples/common/include/Audio/AudioCapture.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #pragma once
7*89c4ff92SAndroid Build Coastguard Worker 
8*89c4ff92SAndroid Build Coastguard Worker #include <string>
9*89c4ff92SAndroid Build Coastguard Worker #include <iostream>
10*89c4ff92SAndroid Build Coastguard Worker #include <cmath>
11*89c4ff92SAndroid Build Coastguard Worker #include <vector>
12*89c4ff92SAndroid Build Coastguard Worker #include <exception>
13*89c4ff92SAndroid Build Coastguard Worker 
14*89c4ff92SAndroid Build Coastguard Worker #include "SlidingWindow.hpp"
15*89c4ff92SAndroid Build Coastguard Worker 
16*89c4ff92SAndroid Build Coastguard Worker namespace audio
17*89c4ff92SAndroid Build Coastguard Worker {
18*89c4ff92SAndroid Build Coastguard Worker 
19*89c4ff92SAndroid Build Coastguard Worker /**
20*89c4ff92SAndroid Build Coastguard Worker * @brief Class used to capture the audio data loaded from file, and to provide a method of
21*89c4ff92SAndroid Build Coastguard Worker  * extracting correctly positioned and appropriately sized audio windows
22*89c4ff92SAndroid Build Coastguard Worker *
23*89c4ff92SAndroid Build Coastguard Worker */
24*89c4ff92SAndroid Build Coastguard Worker     class AudioCapture
25*89c4ff92SAndroid Build Coastguard Worker     {
26*89c4ff92SAndroid Build Coastguard Worker     public:
27*89c4ff92SAndroid Build Coastguard Worker 
28*89c4ff92SAndroid Build Coastguard Worker         SlidingWindow<const float> m_window;
29*89c4ff92SAndroid Build Coastguard Worker 
30*89c4ff92SAndroid Build Coastguard Worker         /**
31*89c4ff92SAndroid Build Coastguard Worker         * @brief Default constructor
32*89c4ff92SAndroid Build Coastguard Worker         */
33*89c4ff92SAndroid Build Coastguard Worker         AudioCapture() = default;
34*89c4ff92SAndroid Build Coastguard Worker 
35*89c4ff92SAndroid Build Coastguard Worker         /**
36*89c4ff92SAndroid Build Coastguard Worker         * @brief Function to load the audio data captured from the
37*89c4ff92SAndroid Build Coastguard Worker          * input file to memory.
38*89c4ff92SAndroid Build Coastguard Worker         */
39*89c4ff92SAndroid Build Coastguard Worker         static std::vector<float> LoadAudioFile(std::string filePath);
40*89c4ff92SAndroid Build Coastguard Worker 
41*89c4ff92SAndroid Build Coastguard Worker         /**
42*89c4ff92SAndroid Build Coastguard Worker         * @brief Function to initialize the sliding window. This will set its position in memory, its
43*89c4ff92SAndroid Build Coastguard Worker          * window size and its stride.
44*89c4ff92SAndroid Build Coastguard Worker         */
45*89c4ff92SAndroid Build Coastguard Worker         void InitSlidingWindow(float* data, size_t dataSize, int minSamples, size_t stride);
46*89c4ff92SAndroid Build Coastguard Worker 
47*89c4ff92SAndroid Build Coastguard Worker         /**
48*89c4ff92SAndroid Build Coastguard Worker         * Checks whether there is another block of audio in memory to read
49*89c4ff92SAndroid Build Coastguard Worker         */
50*89c4ff92SAndroid Build Coastguard Worker         bool HasNext();
51*89c4ff92SAndroid Build Coastguard Worker 
52*89c4ff92SAndroid Build Coastguard Worker         /**
53*89c4ff92SAndroid Build Coastguard Worker         * Retrieves the next block of audio if its available
54*89c4ff92SAndroid Build Coastguard Worker         */
55*89c4ff92SAndroid Build Coastguard Worker         std::vector<float> Next();
56*89c4ff92SAndroid Build Coastguard Worker     };
57*89c4ff92SAndroid Build Coastguard Worker } // namespace audio