libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
mediaiosink.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
13#include <promeki/namespace.h>
14#include <promeki/error.h>
15#include <promeki/frame.h>
16#include <promeki/framecount.h>
17#include <promeki/mediadesc.h>
18#include <promeki/audiodesc.h>
19#include <promeki/metadata.h>
20#include <promeki/mediaioport.h>
21
22PROMEKI_NAMESPACE_BEGIN
23
24class MediaIO;
25class MediaIOPortGroup;
26class MediaIORequest;
27
61class MediaIOSink : public MediaIOPort {
62 PROMEKI_OBJECT(MediaIOSink, MediaIOPort)
63 public:
76 MediaIOSink(MediaIOPortGroup *group, int index, const String &name = String());
77
79 ~MediaIOSink() override;
80
82 Role role() const override { return MediaIOPort::Sink; }
83
84 // ---- Pre-open input expectations ----
85
94 Error setExpectedDesc(const MediaDesc &desc);
95
97 const MediaDesc &expectedDesc() const { return _expectedMediaDesc; }
98
105 Error setExpectedAudioDesc(const AudioDesc &desc);
106
108 const AudioDesc &expectedAudioDesc() const { return _expectedAudioDesc; }
109
111 Error setExpectedMetadata(const Metadata &meta);
112
114 const Metadata &expectedMetadata() const { return _expectedMetadata; }
115
132 Error proposeInput(const MediaDesc &offered, MediaDesc *preferred) const;
133
134 // ---- Write API ----
135
143 int writeDepth() const { return _writeDepth; }
144
146 void setWriteDepth(int n);
147
157 int pendingWrites() const;
158
167 int writesAccepted() const;
168
201 MediaIORequest writeFrame(const Frame &frame);
202
203 // ---- Signals ----
204
206 PROMEKI_SIGNAL(frameWanted);
207
222 PROMEKI_SIGNAL(writeError, Error);
223
224 private:
225 int _writeDepth = 4;
226 FrameCount _writeFrameCount;
227 MediaDesc _expectedMediaDesc;
228 AudioDesc _expectedAudioDesc;
229 Metadata _expectedMetadata;
230};
231
232PROMEKI_NAMESPACE_END
233
234#endif // PROMEKI_ENABLE_PROAV