BugFix Accept empty string to create Text source

This commit is contained in:
Bruno Herbelin
2024-01-16 18:47:54 +01:00
parent e42afcb434
commit 0eae04ab83
2 changed files with 22 additions and 20 deletions

View File

@@ -444,10 +444,14 @@ Source *Mixer::createSourceText(const std::string &contents, glm::ivec2 res)
s->setContents(contents, res); s->setContents(contents, res);
// propose a new name based on contents // propose a new name based on contents
std::string basestring = BaseToolkit::transliterate(contents); std::string basestring = "Text";
basestring = BaseToolkit::splitted(basestring, '\n').front(); if (contents.size() > 1) {
if (SystemToolkit::file_exists(basestring)) basestring = BaseToolkit::transliterate(contents);
basestring = SystemToolkit::base_filename(basestring); if (SystemToolkit::file_exists(basestring))
basestring = SystemToolkit::base_filename(basestring);
else
basestring = BaseToolkit::splitted(basestring, '\n').front();
}
s->setName( basestring ); s->setName( basestring );
return s; return s;

View File

@@ -220,24 +220,22 @@ void TextContents::open(const std::string &text, glm::ivec2 res)
{ {
std::string gstreamer_pattern std::string gstreamer_pattern
= "videotestsrc pattern=black background-color=0x00000000 ! " = "videotestsrc pattern=black background-color=0x00000000 ! "
"textoverlay text=\"! no text !\" halignment=center valignment=center "; "textoverlay text=\"\" halignment=center valignment=center ";
if (!text.empty() && text_.compare(text) != 0) { // set text
// set text text_ = text;
text_ = text; // test if text is the filename of a subtitle
// test if text is the filename of a subtitle if (TextContents::SubtitleDiscoverer(text_)) {
if (TextContents::SubtitleDiscoverer(text_)) { // setup a pipeline that reads the file and parses subtitle
// setup a pipeline that reads the file and parses subtitle // Log::Info("Using %s as subtitle file", text.c_str());
// Log::Info("Using %s as subtitle file", text.c_str()); gstreamer_pattern = "filesrc name=src ! subparse ! queue ! txt. ";
gstreamer_pattern = "filesrc name=src ! subparse ! queue ! txt. "; } else {
} else { // else, setup a pipeline with custom appsrc
// else, setup a pipeline with custom appsrc // Log::Info("Using '%s' as raw text content", text.c_str());
// Log::Info("Using '%s' as raw text content", text.c_str()); gstreamer_pattern = "";
gstreamer_pattern = "";
}
gstreamer_pattern += "videotestsrc name=bg pattern=black background-color=0x00000000 ! "
"textoverlay name=txt ";
} }
gstreamer_pattern += "videotestsrc name=bg pattern=black background-color=0x00000000 ! "
"textoverlay name=txt ";
// (private) open stream // (private) open stream
Stream::open(gstreamer_pattern, res.x, res.y); Stream::open(gstreamer_pattern, res.x, res.y);