libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
framebridgemediaio.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
13#include <promeki/namespace.h>
16#include <promeki/framebridge.h>
17
18PROMEKI_NAMESPACE_BEGIN
19
53class FrameBridgeMediaIO : public SharedThreadMediaIO {
54 PROMEKI_OBJECT(FrameBridgeMediaIO, SharedThreadMediaIO)
55 public:
56 FrameBridgeMediaIO(ObjectBase *parent = nullptr);
57
59 ~FrameBridgeMediaIO() override;
60
61 void cancelBlockingWork() override;
62
63 protected:
64 Error executeCmd(MediaIOCommandOpen &cmd) override;
65 Error executeCmd(MediaIOCommandClose &cmd) override;
66 Error executeCmd(MediaIOCommandRead &cmd) override;
67 Error executeCmd(MediaIOCommandWrite &cmd) override;
68
69 private:
70 FrameBridge::UPtr _bridge;
71 bool _isOutput = false;
72};
73
78class FrameBridgeFactory : public MediaIOFactory {
79 public:
80 FrameBridgeFactory() = default;
81
82 String name() const override { return String("FrameBridge"); }
83 String displayName() const override { return String("Frame Bridge (IPC)"); }
84 String description() const override {
85 return String("Cross-process frame transport via shared memory + UNIX-domain handshake");
86 }
87 StringList schemes() const override { return {String("pmfb")}; }
88 bool canBeSource() const override { return true; }
89 bool canBeSink() const override { return true; }
90
91 Config::SpecMap configSpecs() const override;
92 Error urlToConfig(const Url &url, Config *outConfig) const override;
93 MediaIO *create(const Config &config, ObjectBase *parent = nullptr) const override;
94};
95
96PROMEKI_NAMESPACE_END
97
98#endif // PROMEKI_ENABLE_NETWORK