11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
18PROMEKI_NAMESPACE_BEGIN
48class AudioBlock :
public ObjectBase {
49 PROMEKI_OBJECT(AudioBlock, ObjectBase);
63 size_t sourceChannels = 0;
68 size_t sinkChannels = 0;
76 AudioBlock(
const Config &config, ObjectBase *parent =
nullptr);
79 virtual ~AudioBlock() {}
84 bool isSource()
const {
return _blockConfig.sourceChannels > 0; }
91 bool isSourceValid(
size_t val)
const {
return val < _blockConfig.sourceChannels; }
96 size_t sourceChannels()
const {
return _blockConfig.sourceChannels; }
103 virtual AudioDesc sourceDesc(
size_t channel)
const;
111 virtual bool setSourceDesc(
size_t channel,
const AudioDesc &val);
118 virtual String sourceName(
size_t channel)
const;
126 virtual bool setSourceName(
size_t channel,
const String &val);
133 virtual ssize_t sourceSamplesAvailable(
size_t channel)
const;
139 PROMEKI_SIGNAL(sourceHasSamples, AudioBlock *,
size_t);
144 bool isSink()
const {
return _blockConfig.sinkChannels > 0; }
151 bool isSinkValid(
size_t val)
const {
return val < _blockConfig.sinkChannels; }
156 size_t sinkChannels()
const {
return _blockConfig.sinkChannels; }
163 virtual AudioDesc sinkDesc(
size_t channel)
const;
171 virtual bool setSinkDesc(
size_t channel,
const AudioDesc &val);
178 virtual String sinkName(
size_t channel)
const;
186 virtual bool setSinkName(
size_t channel,
const String &val);
193 virtual ssize_t sinkSamplesAllowed(
size_t channel)
const;
199 PROMEKI_SIGNAL(sinkReadyForSamples, AudioBlock *,
size_t);
203 StringList _sourceNameList;
204 StringList _sinkNameList;