11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
17PROMEKI_NAMESPACE_BEGIN
19class MediaIOPortGroup;
57class CommandMediaIO :
public MediaIO {
58 PROMEKI_OBJECT(CommandMediaIO, MediaIO)
61 CommandMediaIO(ObjectBase *parent =
nullptr);
64 ~CommandMediaIO()
override;
91 Error dispatch(MediaIOCommand::Ptr cmd);
100 virtual Error executeCmd(MediaIOCommandOpen &cmd);
110 virtual Error executeCmd(MediaIOCommandClose &cmd);
119 virtual Error executeCmd(MediaIOCommandRead &cmd);
127 virtual Error executeCmd(MediaIOCommandWrite &cmd);
135 virtual Error executeCmd(MediaIOCommandSeek &cmd);
165 virtual Error executeCmd(MediaIOCommandParams &cmd);
180 virtual Error getParam(MediaIOParamsID
id, Variant &out);
195 virtual Error setParam(MediaIOParamsID
id,
const Variant &value);
215 virtual Error validateParam(MediaIOParamsID
id,
const Variant &value);
226 virtual Error executeCmd(MediaIOCommandStats &cmd);
243 virtual Error executeCmd(MediaIOCommandSetClock &cmd);
254 virtual void configChanged(
const MediaConfig &delta);
276 MediaIOPortGroup *addPortGroup(
const String &name,
const Clock::Ptr &clock);
289 MediaIOPortGroup *addPortGroup(
const String &name = String());
299 MediaIOSource *addSource(MediaIOPortGroup *group,
const MediaDesc &desc,
300 const String &name = String());
310 MediaIOSink *addSink(MediaIOPortGroup *group,
const MediaDesc &desc,
311 const String &name = String());
320 void noteFrameDropped(MediaIOPortGroup *group);
323 void noteFrameRepeated(MediaIOPortGroup *group);
326 void noteFrameLate(MediaIOPortGroup *group);