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