libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
mediapipelineplanner.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/map.h>
16#include <promeki/mediaio.h>
18#include <promeki/string.h>
19#include <promeki/stringlist.h>
20
21PROMEKI_NAMESPACE_BEGIN
22
23class MediaDesc;
24
102class MediaPipelinePlanner {
103 public:
112 enum class Quality {
113 Highest,
114 Balanced,
115 Fastest,
116 ZeroCopyOnly
117 };
118
122 struct Policy {
124 Policy() {}
125
127 Quality quality = Quality::Highest;
128
135 int maxBridgeDepth = 4;
136
143 StringList excludedBridges;
144 };
145
160 using InjectedStages = ::promeki::Map<String, MediaIO *>;
161
186 static Error plan(const MediaPipelineConfig &in, MediaPipelineConfig *out,
187 const Policy &policy = Policy(), String *diagnostic = nullptr);
188
201 static Error plan(const MediaPipelineConfig &in, MediaPipelineConfig *out,
202 const InjectedStages &injected, const Policy &policy = Policy(),
203 String *diagnostic = nullptr);
204
221 static bool isResolved(const MediaPipelineConfig &config, String *diagnostic = nullptr);
222
231 static int adjustCostForQuality(int rawCost, Quality quality);
232};
233
234PROMEKI_NAMESPACE_END
235
236#endif // PROMEKI_ENABLE_PROAV