Deprecate visualizer_sync_interval
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
* Deprecate `visualizer_fifo_path` in favor of `visualizer_data_source`.
|
* Deprecate `visualizer_fifo_path` in favor of `visualizer_data_source`.
|
||||||
* Don't run volume changing actions if there is no mixer.
|
* Don't run volume changing actions if there is no mixer.
|
||||||
* Do not loop after sending a database update command to Mopidy.
|
* Do not loop after sending a database update command to Mopidy.
|
||||||
|
* Deprecate `visualizer_sync_interval` configuration option.
|
||||||
|
|
||||||
# ncmpcpp-0.8.2 (2018-04-11)
|
# ncmpcpp-0.8.2 (2018-04-11)
|
||||||
* Help screen: fixed display of EoF keycode
|
* Help screen: fixed display of EoF keycode
|
||||||
|
|||||||
@@ -52,6 +52,10 @@
|
|||||||
## format "44100:16:2"
|
## format "44100:16:2"
|
||||||
## }
|
## }
|
||||||
##
|
##
|
||||||
|
## If the visualization on occasion diverges from the audio output, please set
|
||||||
|
## 'buffer_time' parameter of your audio output in mpd.conf to '100000' (100ms)
|
||||||
|
## or less to prevent that from happening.
|
||||||
|
##
|
||||||
## Note: If you're using Mopidy, an address of a udpsink gstreamer's output is
|
## Note: If you're using Mopidy, an address of a udpsink gstreamer's output is
|
||||||
## also accepted. For example, the following section in mopidy.conf:
|
## also accepted. For example, the following section in mopidy.conf:
|
||||||
##
|
##
|
||||||
@@ -68,8 +72,8 @@
|
|||||||
#
|
#
|
||||||
##
|
##
|
||||||
## Note: Below parameter is needed for ncmpcpp to determine which output
|
## Note: Below parameter is needed for ncmpcpp to determine which output
|
||||||
## provides data for visualizer and thus allow syncing between visualization and
|
## provides data for visualizer and reset it at the beginning of visualization
|
||||||
## sound as currently there are some problems with it.
|
## to synchronize with audio.
|
||||||
##
|
##
|
||||||
#
|
#
|
||||||
#visualizer_output_name = Visualizer feed
|
#visualizer_output_name = Visualizer feed
|
||||||
|
|||||||
@@ -88,10 +88,6 @@ Name of output that provides data for visualizer. Needed to keep sound and visua
|
|||||||
.B visualizer_in_stereo = yes/no
|
.B visualizer_in_stereo = yes/no
|
||||||
Should be set to 'yes', if fifo output's format was set to 44100:16:2.
|
Should be set to 'yes', if fifo output's format was set to 44100:16:2.
|
||||||
.TP
|
.TP
|
||||||
.B visualizer_sync_interval = SECONDS
|
|
||||||
Try synchronizing visualization with audio every N seconds by flushing the FIFO
|
|
||||||
output. A value of 0 disables it, use only when necessary.
|
|
||||||
.TP
|
|
||||||
.B visualizer_type = spectrum/wave/wave_filled/ellipse
|
.B visualizer_type = spectrum/wave/wave_filled/ellipse
|
||||||
Defines default visualizer type (spectrum is available only if ncmpcpp was compiled with fftw support).
|
Defines default visualizer type (spectrum is available only if ncmpcpp was compiled with fftw support).
|
||||||
.TP
|
.TP
|
||||||
|
|||||||
@@ -103,8 +103,14 @@ void Visualizer::switchTo()
|
|||||||
SwitchTo::execute(this);
|
SwitchTo::execute(this);
|
||||||
Clear();
|
Clear();
|
||||||
OpenDataSource();
|
OpenDataSource();
|
||||||
// negative infinity to toggle output in update() at least once
|
// Disable and enable FIFO to get rid of the difference between audio and
|
||||||
m_timer = boost::posix_time::neg_infin;
|
// visualization.
|
||||||
|
if (m_output_id != -1)
|
||||||
|
{
|
||||||
|
Mpd.DisableOutput(m_output_id);
|
||||||
|
usleep(50000);
|
||||||
|
Mpd.EnableOutput(m_output_id);
|
||||||
|
}
|
||||||
drawHeader();
|
drawHeader();
|
||||||
# ifdef HAVE_FFTW3_H
|
# ifdef HAVE_FFTW3_H
|
||||||
GenLogspace();
|
GenLogspace();
|
||||||
@@ -136,14 +142,6 @@ void Visualizer::update()
|
|||||||
if (m_source_fd < 0)
|
if (m_source_fd < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (m_output_id != -1 && Global::Timer - m_timer > Config.visualizer_sync_interval)
|
|
||||||
{
|
|
||||||
Mpd.DisableOutput(m_output_id);
|
|
||||||
usleep(50000);
|
|
||||||
Mpd.EnableOutput(m_output_id);
|
|
||||||
m_timer = Global::Timer;
|
|
||||||
}
|
|
||||||
|
|
||||||
// PCM in format 44100:16:1 (for mono visualization) and
|
// PCM in format 44100:16:1 (for mono visualization) and
|
||||||
// 44100:16:2 (for stereo visualization) is supported.
|
// 44100:16:2 (for stereo visualization) is supported.
|
||||||
ssize_t bytes_read = read(m_source_fd, m_incoming_samples.data(),
|
ssize_t bytes_read = read(m_source_fd, m_incoming_samples.data(),
|
||||||
|
|||||||
@@ -87,7 +87,6 @@ private:
|
|||||||
void (Visualizer::*drawStereo)(const int16_t *, const int16_t *, ssize_t, size_t);
|
void (Visualizer::*drawStereo)(const int16_t *, const int16_t *, ssize_t, size_t);
|
||||||
|
|
||||||
int m_output_id;
|
int m_output_id;
|
||||||
boost::posix_time::ptime m_timer;
|
|
||||||
|
|
||||||
int m_source_fd;
|
int m_source_fd;
|
||||||
std::string m_source_location;
|
std::string m_source_location;
|
||||||
|
|||||||
@@ -272,6 +272,16 @@ bool Configuration::read(const std::vector<std::string> &config_paths, bool igno
|
|||||||
}
|
}
|
||||||
return adjust_path(v);
|
return adjust_path(v);
|
||||||
});
|
});
|
||||||
|
p.add<void>("visualizer_sync_interval", nullptr, "", [](std::string v) {
|
||||||
|
if (!v.empty())
|
||||||
|
{
|
||||||
|
deprecated("visualizer_sync_interval",
|
||||||
|
"0.10",
|
||||||
|
"set 'buffer_time' parameter of your MPD audio output to '100000' "
|
||||||
|
"(100ms) or lower if you experience synchronization issues "
|
||||||
|
"between audio and visualization");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// keep the same order of variables as in configuration file
|
// keep the same order of variables as in configuration file
|
||||||
p.add("ncmpcpp_directory", &ncmpcpp_directory, "~/.ncmpcpp/", adjust_directory);
|
p.add("ncmpcpp_directory", &ncmpcpp_directory, "~/.ncmpcpp/", adjust_directory);
|
||||||
@@ -290,14 +300,6 @@ bool Configuration::read(const std::vector<std::string> &config_paths, bool igno
|
|||||||
p.add("visualizer_data_source", &visualizer_data_source, "/tmp/mpd.fifo", adjust_path);
|
p.add("visualizer_data_source", &visualizer_data_source, "/tmp/mpd.fifo", adjust_path);
|
||||||
p.add("visualizer_output_name", &visualizer_output_name, "Visualizer feed");
|
p.add("visualizer_output_name", &visualizer_output_name, "Visualizer feed");
|
||||||
p.add("visualizer_in_stereo", &visualizer_in_stereo, "yes", yes_no);
|
p.add("visualizer_in_stereo", &visualizer_in_stereo, "yes", yes_no);
|
||||||
p.add("visualizer_sync_interval", &visualizer_sync_interval, "0",
|
|
||||||
[](std::string v) {
|
|
||||||
unsigned sync_interval = verbose_lexical_cast<unsigned>(v);
|
|
||||||
if (sync_interval == 0)
|
|
||||||
sync_interval = std::numeric_limits<unsigned>::max();
|
|
||||||
lowerBoundCheck<unsigned>(sync_interval, 10);
|
|
||||||
return boost::posix_time::seconds(sync_interval);
|
|
||||||
});
|
|
||||||
p.add("visualizer_type", &visualizer_type,
|
p.add("visualizer_type", &visualizer_type,
|
||||||
#ifdef HAVE_FFTW3_H
|
#ifdef HAVE_FFTW3_H
|
||||||
"spectrum"
|
"spectrum"
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ struct Column
|
|||||||
struct Configuration
|
struct Configuration
|
||||||
{
|
{
|
||||||
Configuration()
|
Configuration()
|
||||||
: playlist_disable_highlight_delay(0), visualizer_sync_interval(0)
|
: playlist_disable_highlight_delay(0)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
bool read(const std::vector<std::string> &config_paths, bool ignore_errors);
|
bool read(const std::vector<std::string> &config_paths, bool ignore_errors);
|
||||||
@@ -198,7 +198,6 @@ struct Configuration
|
|||||||
boost::regex::flag_type regex_type;
|
boost::regex::flag_type regex_type;
|
||||||
|
|
||||||
boost::posix_time::seconds playlist_disable_highlight_delay;
|
boost::posix_time::seconds playlist_disable_highlight_delay;
|
||||||
boost::posix_time::seconds visualizer_sync_interval;
|
|
||||||
|
|
||||||
double locked_screen_width_part;
|
double locked_screen_width_part;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user