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 "NetworkSource.h"
#include "MultiFileSource.h"
#include "StreamSource.h"
#include "Session.h"
#include "ImageShader.h"
#include "ImageProcessingShader.h"
@@ -346,6 +347,9 @@ void SessionLoader::load(XMLElement *sessionNode)
else if ( std::string(pType) == "MultiFileSource") {
load_source = new MultiFileSource(id_xml_);
}
else if ( std::string(pType) == "GenericStreamSource") {
load_source = new GenericStreamSource(id_xml_);
}
// skip failed (including clones)
if (!load_source)
@@ -471,6 +475,9 @@ Source *SessionLoader::createSource(tinyxml2::XMLElement *sourceNode, Mode mode)
else if ( std::string(pType) == "MultiFileSource") {
load_source = new MultiFileSource(id__);
}
else if ( std::string(pType) == "GenericStreamSource") {
load_source = new GenericStreamSource(id__);
}
else if ( std::string(pType) == "CloneSource") {
// clone from given 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 (NetworkSource& s) override;
void visit (MultiFileSource& s) override;
void visit (GenericStreamSource& s) override;
static void XMLToNode(const tinyxml2::XMLElement *xml, Node &n);
static void XMLToSourcecore(tinyxml2::XMLElement *xml, SourceCore &s);

View File

@@ -703,6 +703,19 @@ void SessionVisitor::visit (MultiFileSource& s)
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 x = "";

View File

@@ -66,6 +66,7 @@ public:
void visit (NetworkSource& s) override;
void visit (MixingGroup& 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 *ImageToXML(const FrameBufferImage *img, tinyxml2::XMLDocument *doc);

View File

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

View File

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