[vlc-commits] sout: sdi: refactor image loading
Francois Cartegnie
git at videolan.org
Mon May 6 20:31:51 CEST 2019
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Mon May 6 18:55:56 2019 +0200| [18abaab9799a54c60d4da020db821654722a8201] | committer: Francois Cartegnie
sout: sdi: refactor image loading
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=18abaab9799a54c60d4da020db821654722a8201
---
modules/stream_out/Makefile.am | 2 +
modules/stream_out/sdi/DBMSDIOutput.cpp | 36 +-----------------
modules/stream_out/sdi/DBMSDIOutput.hpp | 1 -
modules/stream_out/sdi/SDIGenerator.cpp | 65 +++++++++++++++++++++++++++++++++
modules/stream_out/sdi/SDIGenerator.hpp | 34 +++++++++++++++++
5 files changed, 103 insertions(+), 35 deletions(-)
diff --git a/modules/stream_out/Makefile.am b/modules/stream_out/Makefile.am
index 599735c01c..900dbfeabc 100644
--- a/modules/stream_out/Makefile.am
+++ b/modules/stream_out/Makefile.am
@@ -65,6 +65,8 @@ libstream_out_sdi_plugin_la_SOURCES = stream_out/sdi/sdiout.cpp \
stream_out/sdi/DBMSDIOutput.hpp \
stream_out/sdi/SDIAudioMultiplex.cpp \
stream_out/sdi/SDIAudioMultiplex.hpp \
+ stream_out/sdi/SDIGenerator.cpp \
+ stream_out/sdi/SDIGenerator.hpp \
stream_out/sdi/SDIOutput.cpp \
stream_out/sdi/SDIOutput.hpp \
stream_out/sdi/SDIStream.cpp \
diff --git a/modules/stream_out/sdi/DBMSDIOutput.cpp b/modules/stream_out/sdi/DBMSDIOutput.cpp
index a0fd487810..482fe8e24e 100644
--- a/modules/stream_out/sdi/DBMSDIOutput.cpp
+++ b/modules/stream_out/sdi/DBMSDIOutput.cpp
@@ -26,13 +26,13 @@
#include <vlc_es.h>
#include <vlc_picture.h>
#include <vlc_interrupt.h>
-#include <vlc_image.h>
#include <vlc_decklink.h>
#include "DBMHelper.hpp"
#include "DBMSDIOutput.hpp"
#include "SDIStream.hpp"
#include "SDIAudioMultiplex.hpp"
+#include "SDIGenerator.hpp"
#include "Ancillary.hpp"
#include "V210.hpp"
@@ -377,7 +377,7 @@ int DBMSDIOutput::ConfigureVideo(const video_format_t *vfmt)
char *psz_file = var_InheritString(p_stream, CFG_PREFIX "nosignal-image");
if(psz_file)
{
- video.pic_nosignal = CreateNoSignalPicture(psz_file, fmt);
+ video.pic_nosignal = sdi::Generator::Picture(VLC_OBJECT(p_stream), psz_file, fmt);
if (!video.pic_nosignal)
msg_Err(p_stream, "Could not create no signal picture");
free(psz_file);
@@ -646,35 +646,3 @@ void DBMSDIOutput::checkClockDrift()
}
}
}
-
-picture_t * DBMSDIOutput::CreateNoSignalPicture(const char *psz_file, const video_format_t *fmt)
-{
- picture_t *p_pic = NULL;
- image_handler_t *img = image_HandlerCreate(p_stream);
- if (img)
- {
- video_format_t in;
- video_format_Init(&in, 0);
- video_format_Setup(&in, 0,
- fmt->i_width, fmt->i_height,
- fmt->i_width, fmt->i_height, 1, 1);
-
- picture_t *png = image_ReadUrl(img, psz_file, &in);
- if (png)
- {
- video_format_t dummy;
- video_format_Copy(&dummy, fmt);
- p_pic = image_Convert(img, png, &in, &dummy);
- if(!video_format_IsSimilar(&dummy, fmt))
- {
- picture_Release(p_pic);
- p_pic = NULL;
- }
- picture_Release(png);
- video_format_Clean(&dummy);
- }
- image_HandlerDelete(img);
- video_format_Clean(&in);
- }
- return p_pic;
-}
diff --git a/modules/stream_out/sdi/DBMSDIOutput.hpp b/modules/stream_out/sdi/DBMSDIOutput.hpp
index 91550d3e2a..09a614186b 100644
--- a/modules/stream_out/sdi/DBMSDIOutput.hpp
+++ b/modules/stream_out/sdi/DBMSDIOutput.hpp
@@ -61,7 +61,6 @@ namespace sdi_sout
bool b_running;
int Start(vlc_tick_t);
int doProcessVideo(picture_t *, block_t *);
- picture_t * CreateNoSignalPicture(const char*, const video_format_t *);
void checkClockDrift();
};
}
diff --git a/modules/stream_out/sdi/SDIGenerator.cpp b/modules/stream_out/sdi/SDIGenerator.cpp
new file mode 100644
index 0000000000..726587431b
--- /dev/null
+++ b/modules/stream_out/sdi/SDIGenerator.cpp
@@ -0,0 +1,65 @@
+/*****************************************************************************
+ * SDIGenerator.cpp: SDI Image and sound generators
+ *****************************************************************************
+ * Copyright © 2014-2016 VideoLAN and VideoLAN Authors
+ * 2018-2019 VideoLabs
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_common.h>
+#include <vlc_es.h>
+#include <vlc_picture.h>
+#include <vlc_image.h>
+
+#include "SDIGenerator.hpp"
+
+using namespace sdi;
+
+picture_t * Generator::Picture(vlc_object_t *obj, const char *psz_file,
+ const video_format_t *fmt)
+{
+ picture_t *p_pic = NULL;
+ image_handler_t *img = image_HandlerCreate(obj);
+ if (img)
+ {
+ video_format_t in;
+ video_format_Init(&in, 0);
+ video_format_Setup(&in, 0,
+ fmt->i_width, fmt->i_height,
+ fmt->i_width, fmt->i_height, 1, 1);
+
+ picture_t *png = image_ReadUrl(img, psz_file, &in);
+ if (png)
+ {
+ video_format_t dummy;
+ video_format_Copy(&dummy, fmt);
+ p_pic = image_Convert(img, png, &in, &dummy);
+ if(!video_format_IsSimilar(&dummy, fmt))
+ {
+ picture_Release(p_pic);
+ p_pic = NULL;
+ }
+ picture_Release(png);
+ video_format_Clean(&dummy);
+ }
+ image_HandlerDelete(img);
+ video_format_Clean(&in);
+ }
+ return p_pic;
+}
diff --git a/modules/stream_out/sdi/SDIGenerator.hpp b/modules/stream_out/sdi/SDIGenerator.hpp
new file mode 100644
index 0000000000..2310ba45df
--- /dev/null
+++ b/modules/stream_out/sdi/SDIGenerator.hpp
@@ -0,0 +1,34 @@
+/*****************************************************************************
+ * SDIGenerator.hpp: SDI Image and sound generators
+ *****************************************************************************
+ * Copyright © 2014-2016 VideoLAN and VideoLAN Authors
+ * 2018-2019 VideoLabs
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+#ifndef SDIGENERATOR_HPP
+#define SDIGENERATOR_HPP
+
+namespace sdi
+{
+ class Generator
+ {
+ public:
+ static picture_t * Picture(vlc_object_t *, const char*,
+ const video_format_t *);
+ };
+}
+
+#endif
More information about the vlc-commits
mailing list