summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/VLCInput.cpp41
1 files changed, 32 insertions, 9 deletions
diff --git a/src/VLCInput.cpp b/src/VLCInput.cpp
index dde9a7b..d6c996a 100644
--- a/src/VLCInput.cpp
+++ b/src/VLCInput.cpp
@@ -151,18 +151,41 @@ int VLCInput::prepare()
prepareRender_address,
(long long int)(intptr_t)this);
- char verb_options[512];
- snprintf(verb_options, sizeof(verb_options),
- "--verbose=%d --network-caching %s --compressor-makeup-gain=%s ",
- m_verbosity,(char *)m_cache.c_str(),(char *)m_gain.c_str());
- const char * const vlc_args[] = {
- verb_options,
- "--sout", smem_options // Stream to memory
- };
+ const char* vlc_args[6];
+ size_t arg_ix = 0;
+ std::stringstream arg_verbose;
+ arg_verbose << "--verbose=" << m_verbosity;
+ vlc_args[arg_ix++] = arg_verbose.str().c_str();
+
+ std::string arg_network_caching;
+ if (not m_cache.empty()) {
+ stringstream ss;
+ ss << "--network-caching=" << m_cache;
+ arg_network_caching = ss.str();
+ vlc_args[arg_ix++] = arg_network_caching.c_str();
+ }
+
+ std::string arg_gain;
+ if (not m_gain.empty()) {
+ stringstream ss;
+ ss << "--compressor-makeup=" << m_gain;
+ arg_gain = ss.str();
+ vlc_args[arg_ix++] = arg_gain.c_str();
+ }
+
+ vlc_args[arg_ix++] = "--sout";
+ vlc_args[arg_ix++] = smem_options; // Stream to memory
+
+ fprintf(stderr, "VLC opt:\n");
+ for (size_t i = 0; i < arg_ix; i++) {
+ fprintf(stderr, " %s\n", vlc_args[i]);
+ }
+
+ fprintf(stderr, "End of VLC opt\n");
// Launch VLC
- m_vlc = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);
+ m_vlc = libvlc_new(arg_ix, vlc_args);
libvlc_set_exit_handler(m_vlc, handleVLCExit, this);