Save & load GenericStrreamSource

This commit is contained in:
Bruno Herbelin
2021-12-31 13:30:51 +01:00
parent fda62314f9
commit d5092b1765
6 changed files with 34 additions and 2 deletions

View File

@@ -32,6 +32,7 @@
#include "DeviceSource.h" #include "DeviceSource.h"
#include "NetworkSource.h" #include "NetworkSource.h"
#include "MultiFileSource.h" #include "MultiFileSource.h"
#include "StreamSource.h"
#include "Session.h" #include "Session.h"
#include "ImageShader.h" #include "ImageShader.h"
#include "ImageProcessingShader.h" #include "ImageProcessingShader.h"
@@ -346,6 +347,9 @@ void SessionLoader::load(XMLElement *sessionNode)
else if ( std::string(pType) == "MultiFileSource") { else if ( std::string(pType) == "MultiFileSource") {
load_source = new MultiFileSource(id_xml_); load_source = new MultiFileSource(id_xml_);
} }
else if ( std::string(pType) == "GenericStreamSource") {
load_source = new GenericStreamSource(id_xml_);
}
// skip failed (including clones) // skip failed (including clones)
if (!load_source) if (!load_source)
@@ -471,6 +475,9 @@ Source *SessionLoader::createSource(tinyxml2::XMLElement *sourceNode, Mode mode)
else if ( std::string(pType) == "MultiFileSource") { else if ( std::string(pType) == "MultiFileSource") {
load_source = new MultiFileSource(id__); load_source = new MultiFileSource(id__);
} }
else if ( std::string(pType) == "GenericStreamSource") {
load_source = new GenericStreamSource(id__);
}
else if ( std::string(pType) == "CloneSource") { else if ( std::string(pType) == "CloneSource") {
// clone from given origin // clone from given origin
XMLElement* originNode = xmlCurrent_->FirstChildElement("origin"); XMLElement* originNode = xmlCurrent_->FirstChildElement("origin");
@@ -1063,4 +1070,14 @@ void SessionLoader::visit (MultiFileSource& s)
} }
void SessionLoader::visit (GenericStreamSource& s)
{
XMLElement* desc = xmlCurrent_->FirstChildElement("Description");
if (desc) {
const char * text = desc->GetText();
if (text)
s.setDescription(text);
}
}

View File

@@ -59,6 +59,7 @@ public:
void visit (DeviceSource& s) override; void visit (DeviceSource& s) override;
void visit (NetworkSource& s) override; void visit (NetworkSource& s) override;
void visit (MultiFileSource& s) override; void visit (MultiFileSource& s) override;
void visit (GenericStreamSource& s) override;
static void XMLToNode(const tinyxml2::XMLElement *xml, Node &n); static void XMLToNode(const tinyxml2::XMLElement *xml, Node &n);
static void XMLToSourcecore(tinyxml2::XMLElement *xml, SourceCore &s); static void XMLToSourcecore(tinyxml2::XMLElement *xml, SourceCore &s);

View File

@@ -703,6 +703,19 @@ void SessionVisitor::visit (MultiFileSource& s)
xmlCurrent_->InsertEndChild(sequence); xmlCurrent_->InsertEndChild(sequence);
} }
void SessionVisitor::visit (GenericStreamSource& s)
{
xmlCurrent_->SetAttribute("type", "GenericStreamSource");
XMLElement *desc = xmlDoc_->NewElement("Description");
XMLText *text = xmlDoc_->NewText( s.description().c_str() );
desc->InsertEndChild( text );
xmlCurrent_->InsertEndChild(desc);
}
std::string SessionVisitor::getClipboard(const SourceList &list) std::string SessionVisitor::getClipboard(const SourceList &list)
{ {
std::string x = ""; std::string x = "";

View File

@@ -66,6 +66,7 @@ public:
void visit (NetworkSource& s) override; void visit (NetworkSource& s) override;
void visit (MixingGroup& s) override; void visit (MixingGroup& s) override;
void visit (MultiFileSource& s) override; void visit (MultiFileSource& s) override;
void visit (GenericStreamSource& s) override;
static tinyxml2::XMLElement *NodeToXML(const Node &n, tinyxml2::XMLDocument *doc); static tinyxml2::XMLElement *NodeToXML(const Node &n, tinyxml2::XMLDocument *doc);
static tinyxml2::XMLElement *ImageToXML(const FrameBufferImage *img, tinyxml2::XMLDocument *doc); static tinyxml2::XMLElement *ImageToXML(const FrameBufferImage *img, tinyxml2::XMLDocument *doc);

View File

@@ -33,7 +33,7 @@
#include "StreamSource.h" #include "StreamSource.h"
GenericStreamSource::GenericStreamSource() : StreamSource() GenericStreamSource::GenericStreamSource(uint64_t id) : StreamSource(id)
{ {
// create stream // create stream
stream_ = new Stream; stream_ = new Stream;

View File

@@ -63,7 +63,7 @@ class GenericStreamSource : public StreamSource
std::list<std::string> gst_elements_; std::list<std::string> gst_elements_;
public: public:
GenericStreamSource(); GenericStreamSource(uint64_t id = 0);
// Source interface // Source interface
void accept (Visitor& v) override; void accept (Visitor& v) override;