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);
143 virtual Error executeCmd(MediaIOCommandParams &cmd);
154 virtual Error executeCmd(MediaIOCommandStats &cmd);
171 virtual Error executeCmd(MediaIOCommandSetClock &cmd);
182 virtual void configChanged(
const MediaConfig &delta);
204 MediaIOPortGroup *addPortGroup(
const String &name,
const Clock::Ptr &clock);
217 MediaIOPortGroup *addPortGroup(
const String &name = String());
227 MediaIOSource *addSource(MediaIOPortGroup *group,
const MediaDesc &desc,
228 const String &name = String());
238 MediaIOSink *addSink(MediaIOPortGroup *group,
const MediaDesc &desc,
239 const String &name = String());
248 void noteFrameDropped(MediaIOPortGroup *group);
251 void noteFrameRepeated(MediaIOPortGroup *group);
254 void noteFrameLate(MediaIOPortGroup *group);