11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
23PROMEKI_NAMESPACE_BEGIN
26class MediaIOPortGroup;
61class MediaIOSource :
public MediaIOPort {
62 PROMEKI_OBJECT(MediaIOSource, MediaIOPort)
64 friend class MediaIOPortGroup;
76 MediaIOSource(MediaIOPortGroup *group,
int index,
const String &name = String());
79 ~MediaIOSource()
override;
82 Role role()
const override {
return MediaIOPort::Source; }
94 bool frameAvailable()
const;
97 int readyReads()
const;
108 int pendingReads()
const;
117 int prefetchDepth()
const {
return _readCache.depth(); }
127 void setPrefetchDepth(
int n);
141 Error proposeOutput(
const MediaDesc &requested, MediaDesc *achievable,
142 MediaConfig *configDelta =
nullptr)
const;
188 MediaIORequest readFrame();
200 size_t cancelPending();
208 void setRate(
double r);
211 FrameNumber currentFrame()
const;
214 MediaIORequest seekToFrame(
const FrameNumber &frameNumber,
215 MediaIOSeekMode mode = MediaIO_SeekDefault);
242 PROMEKI_SIGNAL(frameReady);
245 MediaIOReadCache _readCache{
this};
250 bool _prefetchDepthExplicit =
false;