11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
20PROMEKI_NAMESPACE_BEGIN
26enum class MediaIOParamOp {
55struct MediaIOParamAction {
57 StringRegistry<
"MediaIOParams">::Item id;
59 MediaIOParamOp op = MediaIOParamOp::Get;
63 Error error = Error::Ok;
110 using ID = StringRegistry<
"MediaIOParams">::Item;
112 using ActionList = List<MediaIOParamAction>;
115 MediaIOParams() =
default;
122 MediaIOParams &get(ID
id) {
123 _actions.pushToBack(MediaIOParamAction{id, MediaIOParamOp::Get, Variant(), Error::Ok});
133 MediaIOParams &set(ID
id,
const Variant &value) {
134 _actions.pushToBack(MediaIOParamAction{id, MediaIOParamOp::Set, value, Error::Ok});
139 void setAtomic(
bool on) { _atomic = on; }
142 bool isAtomic()
const {
return _atomic; }
145 int count()
const {
return static_cast<int>(_actions.size()); }
148 bool isEmpty()
const {
return _actions.isEmpty(); }
151 const MediaIOParamAction &action(
int i)
const {
return _actions.at(i); }
154 MediaIOParamAction &action(
int i) {
return _actions[i]; }
157 const ActionList &actions()
const {
return _actions; }
160 ActionList &actions() {
return _actions; }
172 Result<Variant> result(
int i)
const {
173 const MediaIOParamAction &a = _actions.at(i);
174 return Result<Variant>(a.value, a.error);
179 bool _atomic =
false;
189using MediaIOParamsID = MediaIOParams::ID;