11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
18PROMEKI_NAMESPACE_BEGIN
53class FrameBridgeMediaIO :
public SharedThreadMediaIO {
54 PROMEKI_OBJECT(FrameBridgeMediaIO, SharedThreadMediaIO)
56 FrameBridgeMediaIO(ObjectBase *parent =
nullptr);
59 ~FrameBridgeMediaIO()
override;
61 void cancelBlockingWork()
override;
64 Error executeCmd(MediaIOCommandOpen &cmd)
override;
65 Error executeCmd(MediaIOCommandClose &cmd)
override;
66 Error executeCmd(MediaIOCommandRead &cmd)
override;
67 Error executeCmd(MediaIOCommandWrite &cmd)
override;
70 FrameBridge::UPtr _bridge;
71 bool _isOutput =
false;
78class FrameBridgeFactory :
public MediaIOFactory {
80 FrameBridgeFactory() =
default;
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");
87 StringList schemes()
const override {
return {String(
"pmfb")}; }
88 bool canBeSource()
const override {
return true; }
89 bool canBeSink()
const override {
return true; }
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;