mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-12 02:40:00 +01:00
Save & load GenericStrreamSource
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 = "";
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
#include "StreamSource.h"
|
||||
|
||||
|
||||
GenericStreamSource::GenericStreamSource() : StreamSource()
|
||||
GenericStreamSource::GenericStreamSource(uint64_t id) : StreamSource(id)
|
||||
{
|
||||
// create stream
|
||||
stream_ = new Stream;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user