86 lines
1.8 KiB
C++
86 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include <QString>
|
|
#include <QVector>
|
|
#include <cstdint>
|
|
#include <QtGlobal>
|
|
|
|
namespace Potato {
|
|
|
|
enum class NodeType {
|
|
Unknown,
|
|
Hardware,
|
|
Virtual,
|
|
Application,
|
|
Bus
|
|
};
|
|
|
|
enum class MediaClass {
|
|
Unknown,
|
|
AudioSink,
|
|
AudioSource,
|
|
AudioDuplex,
|
|
Stream
|
|
};
|
|
|
|
struct PortInfo {
|
|
uint32_t id;
|
|
uint32_t nodeId;
|
|
QString name;
|
|
uint32_t direction;
|
|
QString channelName;
|
|
|
|
PortInfo() : id(0), nodeId(0), direction(0) {}
|
|
PortInfo(uint32_t portId, uint32_t owningNodeId, const QString &portName, uint32_t portDir, const QString &channel = QString())
|
|
: id(portId), nodeId(owningNodeId), name(portName), direction(portDir), channelName(channel) {}
|
|
};
|
|
|
|
struct NodeInfo {
|
|
uint32_t id;
|
|
QString name;
|
|
QString description;
|
|
QString stableId;
|
|
NodeType type;
|
|
MediaClass mediaClass;
|
|
QVector<PortInfo> inputPorts;
|
|
QVector<PortInfo> outputPorts;
|
|
|
|
NodeInfo()
|
|
: id(0)
|
|
, type(NodeType::Unknown)
|
|
, mediaClass(MediaClass::Unknown)
|
|
{}
|
|
|
|
bool isValid() const { return id != 0; }
|
|
|
|
static NodeType typeFromProperties(const QString &mediaClass, const QString &appName);
|
|
static MediaClass mediaClassFromString(const QString &str);
|
|
};
|
|
|
|
struct LinkInfo {
|
|
uint32_t id;
|
|
uint32_t outputNodeId;
|
|
uint32_t outputPortId;
|
|
uint32_t inputNodeId;
|
|
uint32_t inputPortId;
|
|
|
|
LinkInfo()
|
|
: id(0)
|
|
, outputNodeId(0)
|
|
, outputPortId(0)
|
|
, inputNodeId(0)
|
|
, inputPortId(0)
|
|
{}
|
|
|
|
LinkInfo(uint32_t linkId, uint32_t outNode, uint32_t outPort, uint32_t inNode, uint32_t inPort)
|
|
: id(linkId)
|
|
, outputNodeId(outNode)
|
|
, outputPortId(outPort)
|
|
, inputNodeId(inNode)
|
|
, inputPortId(inPort)
|
|
{}
|
|
|
|
bool isValid() const { return id != 0; }
|
|
};
|
|
|
|
}
|