1 // Copyright (c) Charles J. Cliffe 2 // SPDX-License-Identifier: GPL-2.0+ 3 4 #pragma once 5 6 #include "AudioSinkThread.h" 7 #include "AudioFile.h" 8 #include "Timer.h" 9 10 class AudioSinkFileThread : public AudioSinkThread { 11 12 public: 13 AudioSinkFileThread(); 14 ~AudioSinkFileThread() override; 15 16 enum SquelchOption { 17 SQUELCH_RECORD_SILENCE = 0, // default value, record as a user would hear it. 18 SQUELCH_SKIP_SILENCE = 1, // skip below-squelch level. 19 SQUELCH_RECORD_ALWAYS = 2, // record irrespective of the squelch level. 20 SQUELCH_RECORD_MAX 21 }; 22 23 void sink(AudioThreadInputPtr input) override; 24 void inputChanged(AudioThreadInput oldProps, AudioThreadInputPtr newProps) override; 25 26 void setAudioFileHandler(AudioFile *output); 27 28 void setAudioFileNameBase(const std::string& baseName); 29 30 //Squelch 31 void setSquelchOption(int squelchOptEnumValue); 32 33 // Time limit 34 void setFileTimeLimit(int nbSeconds); 35 36 protected: 37 38 std::string fileNameBase; 39 40 AudioFile *audioFileHandler = nullptr; 41 42 SquelchOption squelchOption = SQUELCH_RECORD_SILENCE; 43 int fileTimeLimit = 0; 44 45 int fileTimeDurationSeconds = -1; 46 47 Timer durationMeasurement; 48 49 }; 50 51