/* * Copyright (c) 2021 Arm Limited. All rights reserved. * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef NOISE_REDUCTION_EVT_HANDLER_HPP #define NOISE_REDUCTION_EVT_HANDLER_HPP #include "AppContext.hpp" #include "Model.hpp" namespace arm { namespace app { /** * @brief Handles the inference event for noise reduction. * @param[in] ctx pointer to the application context * @param[in] runAll flag to request classification of all the available audio clips * @return True or false based on execution success **/ bool NoiseReductionHandler(ApplicationContext& ctx, bool runAll); /** * @brief Dumps the output tensors to a memory address. * This functionality is required for RNNoise use case as we want to * save the inference output to a file. Dumping out tensors to a * memory location will allow the Arm FVP or MPS3 to extract the * contents of this memory location to a file. This file could then * be used by an offline post-processing script. * * @param[in] model reference to a model * @param[in] memAddress memory address at which the dump will start * @param[in] memSize maximum size (in bytes) of the dump. * * @return number of bytes written to memory. */ size_t DumpOutputTensorsToMemory(Model& model, uint8_t* memAddress, size_t memSize); /** * @brief Dumps the audio file header. * This functionality is required for RNNoise use case as we want to * save the inference output to a file. Dumping out the header to a * memory location will allow the Arm FVP or MPS3 to extract the * contents of this memory location to a file. * The header contains the following information * int32_t filenameLength: filename length * uint8_t[] filename: the string containing the file name (without trailing \0) * int32_t dumpSizeByte: audiofile buffer size in bytes * * @param[in] filename the file name * @param[in] dumpSize the size of the audio file (int elements) * @param[in] memAddress memory address at which the dump will start * @param[in] memSize maximum size (in bytes) of the dump. * * @return number of bytes written to memory. */ size_t DumpDenoisedAudioHeader(const char* filename, size_t dumpSize, uint8_t* memAddress, size_t memSize); /** * @brief Write a EOF marker at the end of the dump memory. * * @param[in] memAddress memory address at which the dump will start * @param[in] memSize maximum size (in bytes) of the dump. * * @return number of bytes written to memory. */ size_t DumpDenoisedAudioFooter(uint8_t *memAddress, size_t memSize); /** * @brief Dump the audio data to the memory * * @param[in] audioFrame The vector containg the audio data * @param[in] memAddress memory address at which the dump will start * @param[in] memSize maximum size (in bytes) of the dump. * * @return number of bytes written to memory. */ size_t DumpOutputDenoisedAudioFrame(const std::vector &audioFrame, uint8_t *memAddress, size_t memSize); } /* namespace app */ } /* namespace arm */ #endif /* NOISE_REDUCTION_EVT_HANDLER_HPP */