libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
mediaioport.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/objectbase.h>
15#include <promeki/audiodesc.h>
16#include <promeki/mediadesc.h>
17#include <promeki/metadata.h>
18#include <promeki/string.h>
20
21PROMEKI_NAMESPACE_BEGIN
22
23class MediaIO;
24class MediaIOPortGroup;
25
75class MediaIOPort : public ObjectBase {
76 PROMEKI_OBJECT(MediaIOPort, ObjectBase)
77 public:
87 enum Role {
88 Source = 0,
89 Sink
90 };
91
116 MediaIOPort(MediaIOPortGroup *group, const String &name, int index);
117
119 ~MediaIOPort() override;
120
126 virtual Role role() const = 0;
127
129 MediaIO *mediaIO() const { return _mediaIO; }
130
145 MediaIOAllocator::Ptr allocator() const;
146
148 int index() const { return _index; }
149
151 const String &name() const { return _name; }
152
162 MediaIOPortGroup *group() const { return _group; }
163
172 const MediaDesc &mediaDesc() const { return _mediaDesc; }
173
175 void setMediaDesc(const MediaDesc &val) { _mediaDesc = val; }
176
184 AudioDesc audioDesc() const {
185 return _mediaDesc.audioList().isEmpty() ? AudioDesc() : _mediaDesc.audioList()[0];
186 }
187
193 const Metadata &metadata() const { return _mediaDesc.metadata(); }
194
195 private:
196 MediaIO *_mediaIO = nullptr;
197 MediaIOPortGroup *_group = nullptr;
198 String _name;
199 int _index = -1;
200 MediaDesc _mediaDesc;
201};
202
203PROMEKI_NAMESPACE_END
204
205#endif // PROMEKI_ENABLE_PROAV