Logo
ApraPipes 1.0
Loading...
Searching...
No Matches
AudioCaptureSrc.h
1#pragma once
2
3#include "Module.h"
4#include "declarative/PropertyMacros.h"
5
7{
8public:
9 // Default constructor for declarative pipeline
13
15 int _sampleRate,
16 int _channels,
17 int _audioInputDeviceIndex,
18 int _processingIntervalMS) : sampleRate(_sampleRate),
19 channels(_channels),
20 audioInputDeviceIndex(_audioInputDeviceIndex),
21 processingIntervalMS(_processingIntervalMS)
22 {
23 }
26 int audioInputDeviceIndex; // starts from 0 to no. of available devices on users system.
28
29 // ============================================================
30 // Property Binding for Declarative Pipeline
31 // ============================================================
32 template<typename PropsT>
33 static void applyProperties(
34 PropsT& props,
35 const std::map<std::string, apra::ScalarPropertyValue>& values,
36 std::vector<std::string>& missingRequired
37 ) {
38 apra::applyProp(props.sampleRate, "sampleRate", values, false, missingRequired);
39 apra::applyProp(props.channels, "channels", values, false, missingRequired);
40 apra::applyProp(props.audioInputDeviceIndex, "audioInputDeviceIndex", values, false, missingRequired);
41 apra::applyProp(props.processingIntervalMS, "processingIntervalMS", values, false, missingRequired);
42 }
43
44 apra::ScalarPropertyValue getProperty(const std::string& propName) const {
45 if (propName == "sampleRate") return static_cast<int64_t>(sampleRate);
46 if (propName == "channels") return static_cast<int64_t>(channels);
47 if (propName == "audioInputDeviceIndex") return static_cast<int64_t>(audioInputDeviceIndex);
48 if (propName == "processingIntervalMS") return static_cast<int64_t>(processingIntervalMS);
49 throw std::runtime_error("Unknown property: " + propName);
50 }
51
52 bool setProperty(const std::string& propName, const apra::ScalarPropertyValue& value) {
53 return false; // All properties are static
54 }
55
56 static std::vector<std::string> dynamicPropertyNames() {
57 return {};
58 }
59};
60
61class AudioCaptureSrc : public Module
62{
63public:
65 virtual ~AudioCaptureSrc() {}
66 virtual bool init();
67 virtual bool term();
68 void setProps(AudioCaptureSrcProps &props);
70
71protected:
72 bool validateOutputPins();
73 bool produce();
74 bool handlePropsChange(frame_sp &frame);
75
76private:
77 class Detail;
78 boost::shared_ptr<Detail> mDetail;
79 std::string mOutputPinId;
80};
Definition AudioCaptureSrc.h:7
static std::vector< std::string > dynamicPropertyNames()
Definition AudioCaptureSrc.h:56
int processingIntervalMS
Definition AudioCaptureSrc.h:27
AudioCaptureSrcProps(int _sampleRate, int _channels, int _audioInputDeviceIndex, int _processingIntervalMS)
Definition AudioCaptureSrc.h:14
bool setProperty(const std::string &propName, const apra::ScalarPropertyValue &value)
Definition AudioCaptureSrc.h:52
int audioInputDeviceIndex
Definition AudioCaptureSrc.h:26
int sampleRate
Definition AudioCaptureSrc.h:24
apra::ScalarPropertyValue getProperty(const std::string &propName) const
Definition AudioCaptureSrc.h:44
static void applyProperties(PropsT &props, const std::map< std::string, apra::ScalarPropertyValue > &values, std::vector< std::string > &missingRequired)
Definition AudioCaptureSrc.h:33
int channels
Definition AudioCaptureSrc.h:25
AudioCaptureSrcProps()
Definition AudioCaptureSrc.h:10
Definition AudioCaptureSrc.h:62
bool handlePropsChange(frame_sp &frame)
Definition AudioCaptureSrc.cpp:125
std::string mOutputPinId
Definition AudioCaptureSrc.h:79
boost::shared_ptr< Detail > mDetail
Definition AudioCaptureSrc.h:78
void setProps(AudioCaptureSrcProps &props)
Definition AudioCaptureSrc.cpp:120
virtual bool term()
Definition AudioCaptureSrc.cpp:142
AudioCaptureSrcProps getProps()
Definition AudioCaptureSrc.cpp:114
virtual ~AudioCaptureSrc()
Definition AudioCaptureSrc.h:65
bool produce()
Definition AudioCaptureSrc.cpp:132
AudioCaptureSrc(AudioCaptureSrcProps _props)
Definition AudioCaptureSrc.cpp:83
bool validateOutputPins()
Definition AudioCaptureSrc.cpp:97
virtual bool init()
Definition AudioCaptureSrc.cpp:137
Definition FacialLandmarksCV.cpp:17
Definition Module.h:33
Definition Module.h:151
void applyProp(T &member, const char *propName, const std::map< std::string, ScalarPropertyValue > &values, bool isRequired, std::vector< std::string > &missingRequired)
Definition PropertyMacros.h:36
std::variant< int64_t, double, bool, std::string > ScalarPropertyValue
Definition ModuleRegistry.h:30