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