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);
// propose a new name based on contents
std::string basestring = BaseToolkit::transliterate(contents);
basestring = BaseToolkit::splitted(basestring, '\n').front();
if (SystemToolkit::file_exists(basestring))
basestring = SystemToolkit::base_filename(basestring);
std::string basestring = "Text";
if (contents.size() > 1) {
basestring = BaseToolkit::transliterate(contents);
if (SystemToolkit::file_exists(basestring))
basestring = SystemToolkit::base_filename(basestring);
else
basestring = BaseToolkit::splitted(basestring, '\n').front();
}
s->setName( basestring );
return s;

View File

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