Git Product home page Git Product logo

libvisual's Introduction

libvisual's People

Contributors

1480c1 avatar dependabot[bot] avatar dsmit avatar felixonmars avatar hartwork avatar kaixiong avatar rigid avatar starlon avatar ylatuya avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libvisual's Issues

LV: most actors don't render correctly when resolution is smaller than 32x32

While this is a understandable consequence of actor implementation/optimization it sucks for small resolution work-cases (like audio visualization icon madness or LED hacking ;)

It would be awesome if LV dictated a mimimum resolution for actors (like 32x32) and did a simple scale (e.g. nearest neighbour) that doesn't introduce lots of blurring for smaller resolutions.

LV: deterministic behaviour of actors

There is RandomContext.set_seed() to initialize the internal RNG system in LV. Feeding it the same seed should always produce the same result.
But some actors (like gforce) seem to bring their own RNG so behaviour is not repeatable by feeding the same seed to LV. All actors should use the mechanism provided by the core.

LV: Replacement for LV::Bin: LV::Sequence

Proposed API:

class Sequence {
public:

  // Constructor
  VisSequence ();

  // Destructor
  ~VisSequence ();

  // Run
  void run ();

  // Set input driver
  bool set_input (std::string const& input_name);

  // Set actor (immediate change, no transitions)
  bool set_actor (std::string const& actor_name);

  // Set actor (transition with a morph plugin in the given time)
  bool set_actor (std::string const& actor_name, Time const& time, std::string const& morph_name);
};

LV: refactor lv_plugin_* API

  • improve version check to better judge compatibility (like, "plugin matches API", "plugin older but working", "plugin too old to load" outputting deprecation warnings etc.)
  • simplify code
  • ...

morph_checkers: broken in cxx

This morph plugin seems not to work with libvisual/cxx. Did something change regarding blitting with VisRectangle constraint functions?

add "url" field to VisPluginInfo

An url field could link to a plugin info page with further info. URLs nowadays are nicely integrated and provide a good way to centralize information management for plugin authors.

LV: Visualization lags when using PulseAudio

The (incorrect) threading code in input_pulseaudio was recently removed in attempt to fix the weird issue where rendered frames appear to flip back and forth.

This reduced the implementation to a single blocking read with a single pa_simple_read() of 1024 samples (at 44,100Hz) followed by a frame render per main loop iteration and worked well on my test machine using PulseAudio 1.1 (Ubuntu 12.04 x64) but stutters horribly on PulseAudio 2.1 (tested on Ubuntu 12.10 x64).

Although I haven't measured, I believed pa_simple_read() is taking longer to return than it needs to be, and is incredibly inconsistent timing wise despite reading the same amount of samples every frame. More investigation is needed.

We will likely have to either restore threading code or use the complex API. Both approaches kind of suck.

EDIT: apparently this isn't limited to pulseaudio input.

LV: leaking memory

==27455== Memcheck, a memory error detector
==27455== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==27455== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
==27455== Command: lv-tool -a plazma
==27455==
lv-tool v0.1
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_cpu.c:408:print_cpu_info: CPU: Number of CPUs: 2
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_cpu.c:409:print_cpu_info: CPU: type 3
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_cpu.c:412:print_cpu_info: CPU: X86 type 6
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_cpu.c:413:print_cpu_info: CPU: cacheline 64
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_cpu.c:414:print_cpu_info: CPU: MMX 0
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_cpu.c:415:print_cpu_info: CPU: MMX2 0
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_cpu.c:416:print_cpu_info: CPU: SSE 0
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_cpu.c:417:print_cpu_info: CPU: SSE2 0
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_cpu.c:418:print_cpu_info: CPU: 3DNow 0
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_cpu.c:419:print_cpu_info: CPU: 3DNowExt 0
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_plugin_registry.cpp:80:LV::PluginRegistry::PluginRegistry(): Initializing plugin registry
INFO /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_plugin_registry.cpp:110:void LV::PluginRegistry::add_path(const std::string&): Adding to plugin search path: /usr/local/lib/libvisual-0.5/actor
INFO /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_plugin_registry.cpp:110:void LV::PluginRegistry::add_path(const std::string&): Adding to plugin search path: /usr/local/lib/libvisual-0.5/input
INFO /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_plugin_registry.cpp:110:void LV::PluginRegistry::add_path(const std::string&): Adding to plugin search path: /usr/local/lib/libvisual-0.5/morph
INFO /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_plugin_registry.cpp:110:void LV::PluginRegistry::add_path(const std::string&): Adding to plugin search path: /usr/local/lib/libvisual-0.5/transform
INFO /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_plugin_registry.cpp:110:void LV::PluginRegistry::add_path(const std::string&): Adding to plugin search path: /home/daniel/.libvisual/actor
INFO /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_plugin_registry.cpp:110:void LV::PluginRegistry::add_path(const std::string&): Adding to plugin search path: /home/daniel/.libvisual/input
INFO /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_plugin_registry.cpp:110:void LV::PluginRegistry::add_path(const std::string&): Adding to plugin search path: /home/daniel/.libvisual/morph
INFO /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_plugin_registry.cpp:110:void LV::PluginRegistry::add_path(const std::string&): Adding to plugin search path: /home/daniel/.libvisual/transform
Loading actor 'plazma'...
Loading input 'debug'...
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_bin.c:418:visual_bin_set_depth: old: 0 new: 1
WARNING /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_video.c:336:visual_video_set_pitch: Assertion `pitch > 0' failed
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_bin.c:418:visual_bin_set_depth: old: 1 new: 1
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_plugin.cpp:455:int visual_plugin_realize(VisPluginData_): Activating plugin 'plazma'
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_plugin.cpp:455:int visual_plugin_realize(VisPluginData_): Activating plugin 'debug'
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_bin.c:293:visual_bin_sync: starting sync
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_bin.c:326:visual_bin_sync: setting new video from actvideo 1 1
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_bin.c:335:visual_bin_sync: one last video pitch check 320 depth old 1 forcedmain 1 noevent 0
INFO /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_actor.cpp:356:int visual_actor_video_negotiate(VisActor_, int, int, int): negotiating plugin Plazma plugin
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_bin.c:349:visual_bin_sync: pitch after main actor negotiate 320
DEBUG /storage/code/libvisual/libvisual.git/libvisual/libvisual/lv_bin.c:377:visual_bin_sync: end sync function
==27455==
==27455== HEAP SUMMARY:
==27455== in use at exit: 1,180,582 bytes in 1,320 blocks
==27455== total heap usage: 63,010 allocs, 61,690 frees, 54,953,302 bytes allocated
==27455==
==27455== 1 bytes in 1 blocks are definitely lost in loss record 1 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x452F62E: _XlcDefaultMapModifiers (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x452F6AE: XSetLocaleModifiers (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x40EDAA9: XSetLocaleModifiers (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40F540A: create_aux_windows (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40F60A4: X11_VideoInit (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40E5FB6: SDL_VideoInit (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40C7AA0: SDL_InitSubSystem (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40C7B6F: SDL_Init (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x80564A2: (anonymous namespace)::SDLDriver::create(VisVideoDepth, VisVideoAttributeOptions const, unsigned int, unsigned int, bool) (sdl_driver.cpp:87)
==27455== by 0x8052F11: SADisplay::create(VisVideoDepth, VisVideoAttributeOptions const, unsigned int, unsigned int, bool) (display.cpp:76)
==27455== by 0x80522D3: main (lv-tool.cpp:346)
==27455==
==27455== 16 bytes in 2 blocks are definitely lost in loss record 28 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x42D0E6C: strdup (in /lib/libc-2.13.so)
==27455== by 0x453D95C: ??? (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x453CF5E: _XimEncodeLocalICAttr (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x453E041: _XimSetICValueData (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x45399B2: _XimLocalCreateIC (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x452256D: XCreateIC (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x40F54E9: create_aux_windows (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40F60A4: X11_VideoInit (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40E5FB6: SDL_VideoInit (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40C7AA0: SDL_InitSubSystem (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40C7B6F: SDL_Init (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455==
==27455== 23 bytes in 1 blocks are definitely lost in loss record 40 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x4DEA4BE: ???
==27455== by 0x400E3A8: _dl_init (in /lib/ld-2.13.so)
==27455== by 0x4012270: dl_open_worker (in /lib/ld-2.13.so)
==27455== by 0x400E14F: _dl_catch_error (in /lib/ld-2.13.so)
==27455== by 0x4011B4B: _dl_open (in /lib/ld-2.13.so)
==27455== by 0x4128D3D: dlopen_doit (in /lib/libdl-2.13.so)
==27455== by 0x400E14F: _dl_catch_error (in /lib/ld-2.13.so)
==27455== by 0x41293CB: _dlerror_run (in /lib/libdl-2.13.so)
==27455== by 0x4128DE1: dlopen@@GLIBC_2.1 (in /lib/libdl-2.13.so)
==27455== by 0x4098365: visual_plugin_get_reference (lv_plugin.cpp:480)
==27455== by 0x409B64C: LV::PluginRegistry::Impl::get_plugins_from_dir(std::vector<VisPluginRef, std::allocator<VisPluginRef> >&, std::string const&) (lv_plugin_registry.cpp:212)
==27455==
==27455== 23 bytes in 1 blocks are definitely lost in loss record 41 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x4D924BE: ???
==27455== by 0x400E3A8: _dl_init (in /lib/ld-2.13.so)
==27455== by 0x4012270: dl_open_worker (in /lib/ld-2.13.so)
==27455== by 0x400E14F: _dl_catch_error (in /lib/ld-2.13.so)
==27455== by 0x4011B4B: _dl_open (in /lib/ld-2.13.so)
==27455== by 0x4128D3D: dlopen_doit (in /lib/libdl-2.13.so)
==27455== by 0x400E14F: _dl_catch_error (in /lib/ld-2.13.so)
==27455== by 0x41293CB: _dlerror_run (in /lib/libdl-2.13.so)
==27455== by 0x4128DE1: dlopen@@GLIBC_2.1 (in /lib/libdl-2.13.so)
==27455== by 0x4098365: visual_plugin_get_reference (lv_plugin.cpp:480)
==27455== by 0x409B64C: LV::PluginRegistry::Impl::get_plugins_from_dir(std::vector<VisPluginRef, std::allocator<VisPluginRef> >&, std::string const&) (lv_plugin_registry.cpp:212)
==27455==
==27455== 23 bytes in 1 blocks are definitely lost in loss record 42 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x560C4BE: ???
==27455== by 0x400E3A8: _dl_init (in /lib/ld-2.13.so)
==27455== by 0x4012270: dl_open_worker (in /lib/ld-2.13.so)
==27455== by 0x400E14F: _dl_catch_error (in /lib/ld-2.13.so)
==27455== by 0x4011B4B: _dl_open (in /lib/ld-2.13.so)
==27455== by 0x4128D3D: dlopen_doit (in /lib/libdl-2.13.so)
==27455== by 0x400E14F: _dl_catch_error (in /lib/ld-2.13.so)
==27455== by 0x41293CB: _dlerror_run (in /lib/libdl-2.13.so)
==27455== by 0x4128DE1: dlopen@@GLIBC_2.1 (in /lib/libdl-2.13.so)
==27455== by 0x4098365: visual_plugin_get_reference (lv_plugin.cpp:480)
==27455== by 0x409B64C: LV::PluginRegistry::Impl::get_plugins_from_dir(std::vector<VisPluginRef, std::allocator<VisPluginRef> >&, std::string const&) (lv_plugin_registry.cpp:212)
==27455==
==27455== 92 bytes in 4 blocks are definitely lost in loss record 164 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x4D6C4BE: ???
==27455== by 0x400E3A8: _dl_init (in /lib/ld-2.13.so)
==27455== by 0x4012270: dl_open_worker (in /lib/ld-2.13.so)
==27455== by 0x400E14F: _dl_catch_error (in /lib/ld-2.13.so)
==27455== by 0x4011B4B: _dl_open (in /lib/ld-2.13.so)
==27455== by 0x4128D3D: dlopen_doit (in /lib/libdl-2.13.so)
==27455== by 0x400E14F: _dl_catch_error (in /lib/ld-2.13.so)
==27455== by 0x41293CB: _dlerror_run (in /lib/libdl-2.13.so)
==27455== by 0x4128DE1: dlopen@@GLIBC_2.1 (in /lib/libdl-2.13.so)
==27455== by 0x4098365: visual_plugin_get_reference (lv_plugin.cpp:480)
==27455== by 0x409B64C: LV::PluginRegistry::Impl::get_plugins_from_dir(std::vector<VisPluginRef, std::allocator<VisPluginRef> >&, std::string const&) (lv_plugin_registry.cpp:212)
==27455==
==27455== 112 (8 direct, 104 indirect) bytes in 1 blocks are definitely lost in loss record 171 of 260
==27455== at 0x4024E7A: realloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x4526F84: ??? (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x4527868: ??? (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x45288ED: ??? (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x4528F45: _XlcCreateLC (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x45427A2: _XlcDefaultLoader (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x452F209: _XOpenLC (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x452F2E8: _XlcCurrentLC (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x452F680: XSetLocaleModifiers (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x40EDAA9: XSetLocaleModifiers (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40F53B5: create_aux_windows (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40F60A4: X11_VideoInit (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455==
==27455== 120 bytes in 1 blocks are definitely lost in loss record 172 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x407C593: visual_mem_malloc (lv_mem.c:123)
==27455== by 0x407C64B: visual_mem_malloc0 (lv_mem.c:140)
==27455== by 0x4074432: visual_event_queue_new (lv_event.c:100)
==27455== by 0x80523B3: main (lv-tool.cpp:361)
==27455==
==27455== 124 bytes in 1 blocks are definitely lost in loss record 174 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x45F0668: ??? (in /usr/lib/libxcb.so.1.1.0)
==27455== by 0x45F0721: ??? (in /usr/lib/libxcb.so.1.1.0)
==27455== by 0x45F0344: xcb_connect_to_display_with_auth_info (in /usr/lib/libxcb.so.1.1.0)
==27455== by 0x45F03FE: xcb_connect (in /usr/lib/libxcb.so.1.1.0)
==27455== by 0x4516E2E: _XConnectXCB (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x450A280: XOpenDisplay (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x40ED121: XOpenDisplay (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40F45ED: X11_Available (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40E5E29: SDL_VideoInit (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40C7AA0: SDL_InitSubSystem (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40C7B6F: SDL_Init (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455==
==27455== 124 bytes in 1 blocks are definitely lost in loss record 175 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x45F0668: ??? (in /usr/lib/libxcb.so.1.1.0)
==27455== by 0x45F0721: ??? (in /usr/lib/libxcb.so.1.1.0)
==27455== by 0x45F0344: xcb_connect_to_display_with_auth_info (in /usr/lib/libxcb.so.1.1.0)
==27455== by 0x45F03FE: xcb_connect (in /usr/lib/libxcb.so.1.1.0)
==27455== by 0x4516E2E: _XConnectXCB (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x450A280: XOpenDisplay (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x40ED121: XOpenDisplay (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40F5E3E: X11_VideoInit (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40E5FB6: SDL_VideoInit (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40C7AA0: SDL_InitSubSystem (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40C7B6F: SDL_Init (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455==
==27455== 124 bytes in 1 blocks are definitely lost in loss record 176 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x45F0668: ??? (in /usr/lib/libxcb.so.1.1.0)
==27455== by 0x45F0721: ??? (in /usr/lib/libxcb.so.1.1.0)
==27455== by 0x45F0344: xcb_connect_to_display_with_auth_info (in /usr/lib/libxcb.so.1.1.0)
==27455== by 0x45F03FE: xcb_connect (in /usr/lib/libxcb.so.1.1.0)
==27455== by 0x4516E2E: _XConnectXCB (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x450A280: XOpenDisplay (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x40ED121: XOpenDisplay (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40F5E5F: X11_VideoInit (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40E5FB6: SDL_VideoInit (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40C7AA0: SDL_InitSubSystem (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40C7B6F: SDL_Init (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455==
==27455== 202 (12 direct, 190 indirect) bytes in 1 blocks are definitely lost in loss record 186 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x407C593: visual_mem_malloc (lv_mem.c:123)
==27455== by 0x407C64B: visual_mem_malloc0 (lv_mem.c:140)
==27455== by 0x408345D: visual_list_add (lv_list.c:284)
==27455== by 0x408758B: visual_param_container_add (lv_param.c:146)
==27455== by 0x40960E1: LV::(anonymous namespace)::init_params(VisParamContainer) (lv_libvisual.cpp:80)
==27455== by 0x409626D: LV::System::System(int&, char**&) (lv_libvisual.cpp:149)
==27455== by 0x40A1564: LV::System::init(int&, char**&) (lv_libvisual.h:61)
==27455== by 0x40A14CC: visual_init (lv_libvisual_c.cpp:24)
==27455== by 0x8051F7C: main (lv-tool.cpp:290)
==27455==
==27455== 980 (68 direct, 912 indirect) bytes in 1 blocks are definitely lost in loss record 222 of 260
==27455== at 0x4024E7A: realloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x4526F84: ??? (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x4527868: ??? (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x45288ED: ??? (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x4528F45: _XlcCreateLC (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x4545A7E: _XlcUtf8Loader (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x452F209: _XOpenLC (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x452F2E8: _XlcCurrentLC (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x452F680: XSetLocaleModifiers (in /usr/lib/libX11.so.6.3.0)
==27455== by 0x40EDAA9: XSetLocaleModifiers (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40F540A: create_aux_windows (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455== by 0x40F60A4: X11_VideoInit (in /usr/lib/libSDL-1.2.so.0.11.4)
==27455==
==27455== 1,036 (12 direct, 1,024 indirect) bytes in 1 blocks are definitely lost in loss record 231 of 260
==27455== at 0x40249C7: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x40A1A95: visual_palette_clone (lv_palette_c.cpp:42)
==27455== by 0x4078590: visual_video_set_palette (lv_video.c:285)
==27455== by 0x4091739: visual_actor_run (lv_actor.cpp:556)
==27455== by 0x40779C2: visual_bin_run (lv_bin.c:861)
==27455== by 0x80526B2: main (lv-tool.cpp:505)
==27455==
==27455== 1,176 (112 direct, 1,064 indirect) bytes in 4 blocks are definitely lost in loss record 234 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x407C593: visual_mem_malloc (lv_mem.c:123)
==27455== by 0x407C64B: visual_mem_malloc0 (lv_mem.c:140)
==27455== by 0x4097D3D: visual_plugin_ref_new (lv_plugin.cpp:284)
==27455== by 0x40984F9: visual_plugin_get_reference (lv_plugin.cpp:546)
==27455== by 0x409B64C: LV::PluginRegistry::Impl::get_plugins_from_dir(std::vector<VisPluginRef, std::allocator<VisPluginRef> >&, std::string const&) (lv_plugin_registry.cpp:212)
==27455== by 0x409B197: LV::PluginRegistry::add_path(std::string const&) (lv_plugin_registry.cpp:115)
==27455== by 0x409ADCB: LV::PluginRegistry::PluginRegistry() (lv_plugin_registry.cpp:84)
==27455== by 0x4096381: LV::PluginRegistry::init() (lv_plugin_registry.h:26)
==27455== by 0x4096244: LV::System::System(int&, char**&) (lv_libvisual.cpp:146)
==27455== by 0x40A1564: LV::System::init(int&, char**&) (lv_libvisual.h:61)
==27455== by 0x40A14CC: visual_init (lv_libvisual_c.cpp:24)
==27455==
==27455== 2,382 (196 direct, 2,186 indirect) bytes in 7 blocks are definitely lost in loss record 245 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x407C593: visual_mem_malloc (lv_mem.c:123)
==27455== by 0x407C64B: visual_mem_malloc0 (lv_mem.c:140)
==27455== by 0x4097D3D: visual_plugin_ref_new (lv_plugin.cpp:284)
==27455== by 0x40984F9: visual_plugin_get_reference (lv_plugin.cpp:546)
==27455== by 0x409B64C: LV::PluginRegistry::Impl::get_plugins_from_dir(std::vector<VisPluginRef, std::allocator<VisPluginRef> >&, std::string const&) (lv_plugin_registry.cpp:212)
==27455== by 0x409B197: LV::PluginRegistry::add_path(std::string const&) (lv_plugin_registry.cpp:115)
==27455== by 0x409AE1A: LV::PluginRegistry::PluginRegistry() (lv_plugin_registry.cpp:85)
==27455== by 0x4096381: LV::PluginRegistry::init() (lv_plugin_registry.h:26)
==27455== by 0x4096244: LV::System::System(int&, char**&) (lv_libvisual.cpp:146)
==27455== by 0x40A1564: LV::System::init(int&, char**&) (lv_libvisual.h:61)
==27455== by 0x40A14CC: visual_init (lv_libvisual_c.cpp:24)
==27455==
==27455== 4,096 bytes in 1 blocks are possibly lost in loss record 247 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x407C593: visual_mem_malloc (lv_mem.c:123)
==27455== by 0x407C64B: visual_mem_malloc0 (lv_mem.c:140)
==27455== by 0x408CE99: visual_buffer_allocate_data (lv_buffer.c:172)
==27455== by 0x408CA84: visual_buffer_new_allocate (lv_buffer.c:91)
==27455== by 0x4081299: input_interleaved_stereo (lv_audio.c:1336)
==27455== by 0x407EC2E: visual_audio_samplepool_input (lv_audio.c:708)
==27455== by 0x4030B97: inp_debug_upload (input_debug.c:166)
==27455== by 0x4095F64: visual_input_run (lv_input.cpp:183)
==27455== by 0x407771C: visual_bin_run (lv_bin.c:807)
==27455== by 0x80526B2: main (lv-tool.cpp:505)
==27455==
==27455== 5,180 (1,036 direct, 4,144 indirect) bytes in 1 blocks are definitely lost in loss record 248 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x5515227: ???
==27455== by 0x551424A: ???
==27455== by 0x5508690: ???
==27455== by 0x54DE7FA: ???
==27455== by 0x553F51F: ???
==27455== by 0x54DD95C: ???
==27455== by 0x400E2A5: call_init (in /lib/ld-2.13.so)
==27455== by 0x400E3A8: _dl_init (in /lib/ld-2.13.so)
==27455== by 0x4012270: dl_open_worker (in /lib/ld-2.13.so)
==27455== by 0x400E14F: _dl_catch_error (in /lib/ld-2.13.so)
==27455== by 0x4011B4B: _dl_open (in /lib/ld-2.13.so)
==27455==
==27455== 6,383 (504 direct, 5,879 indirect) bytes in 18 blocks are definitely lost in loss record 250 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x407C593: visual_mem_malloc (lv_mem.c:123)
==27455== by 0x407C64B: visual_mem_malloc0 (lv_mem.c:140)
==27455== by 0x4097D3D: visual_plugin_ref_new (lv_plugin.cpp:284)
==27455== by 0x40984F9: visual_plugin_get_reference (lv_plugin.cpp:546)
==27455== by 0x409B64C: LV::PluginRegistry::Impl::get_plugins_from_dir(std::vector<VisPluginRef, std::allocator<VisPluginRef> >&, std::string const&) (lv_plugin_registry.cpp:212)
==27455== by 0x409B197: LV::PluginRegistry::add_path(std::string const&) (lv_plugin_registry.cpp:115)
==27455== by 0x409AD7C: LV::PluginRegistry::PluginRegistry() (lv_plugin_registry.cpp:83)
==27455== by 0x4096381: LV::PluginRegistry::init() (lv_plugin_registry.h:26)
==27455== by 0x4096244: LV::System::System(int&, char**&) (lv_libvisual.cpp:146)
==27455== by 0x40A1564: LV::System::init(int&, char**&) (lv_libvisual.h:61)
==27455== by 0x40A14CC: visual_init (lv_libvisual_c.cpp:24)
==27455==
==27455== 8,192 bytes in 2 blocks are possibly lost in loss record 253 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x407C593: visual_mem_malloc (lv_mem.c:123)
==27455== by 0x407C64B: visual_mem_malloc0 (lv_mem.c:140)
==27455== by 0x408CE99: visual_buffer_allocate_data (lv_buffer.c:172)
==27455== by 0x408CA84: visual_buffer_new_allocate (lv_buffer.c:91)
==27455== by 0x4081274: input_interleaved_stereo (lv_audio.c:1336)
==27455== by 0x407EC2E: visual_audio_samplepool_input (lv_audio.c:708)
==27455== by 0x4030B97: inp_debug_upload (input_debug.c:166)
==27455== by 0x4095F64: visual_input_run (lv_input.cpp:183)
==27455== by 0x407771C: visual_bin_run (lv_bin.c:807)
==27455== by 0x80526B2: main (lv-tool.cpp:505)
==27455==
==27455== 40,960 bytes in 5 blocks are possibly lost in loss record 254 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x407C593: visual_mem_malloc (lv_mem.c:123)
==27455== by 0x407C64B: visual_mem_malloc0 (lv_mem.c:140)
==27455== by 0x408CE99: visual_buffer_allocate_data (lv_buffer.c:172)
==27455== by 0x408CA84: visual_buffer_new_allocate (lv_buffer.c:91)
==27455== by 0x408099D: sample_data_func (lv_audio.c:1261)
==27455== by 0x408C1EA: fixate_with_partial_data_request (lv_ringbuffer.c:323)
==27455== by 0x408BEBF: visual_ringbuffer_get_data_offset (lv_ringbuffer.c:211)
==27455== by 0x408C3AE: visual_ringbuffer_get_data_from_end (lv_ringbuffer.c:370)
==27455== by 0x407D93D: visual_audio_get_sample (lv_audio.c:342)
==27455== by 0x407DCE4: visual_audio_get_sample_mixed (lv_audio.c:426)
==27455== by 0x402B19A: act_plazma_render (actor_plazma.c:235)
==27455==
==27455== 256,000 bytes in 1 blocks are possibly lost in loss record 257 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x407C593: visual_mem_malloc (lv_mem.c:123)
==27455== by 0x407C64B: visual_mem_malloc0 (lv_mem.c:140)
==27455== by 0x402B680: _plazma_init (plazma.c:89)
==27455== by 0x402AEF8: act_plazma_dimension (actor_plazma.c:166)
==27455== by 0x402AF5A: act_plazma_events (actor_plazma.c:180)
==27455== by 0x4097AAD: visual_plugin_events_pump (lv_plugin.cpp:232)
==27455== by 0x4091264: negotiate_video (lv_actor.cpp:438)
==27455== by 0x4090E90: visual_actor_video_negotiate (lv_actor.cpp:365)
==27455== by 0x4075C57: visual_bin_sync (lv_bin.c:346)
==27455== by 0x80523A3: main (lv-tool.cpp:356)
==27455==
==27455== 256,000 bytes in 1 blocks are possibly lost in loss record 258 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x407C593: visual_mem_malloc (lv_mem.c:123)
==27455== by 0x407C64B: visual_mem_malloc0 (lv_mem.c:140)
==27455== by 0x402B6A8: _plazma_init (plazma.c:90)
==27455== by 0x402AEF8: act_plazma_dimension (actor_plazma.c:166)
==27455== by 0x402AF5A: act_plazma_events (actor_plazma.c:180)
==27455== by 0x4097AAD: visual_plugin_events_pump (lv_plugin.cpp:232)
==27455== by 0x4091264: negotiate_video (lv_actor.cpp:438)
==27455== by 0x4090E90: visual_actor_video_negotiate (lv_actor.cpp:365)
==27455== by 0x4075C57: visual_bin_sync (lv_bin.c:346)
==27455== by 0x80523A3: main (lv-tool.cpp:356)
==27455==
==27455== 561,713 (124 direct, 561,589 indirect) bytes in 1 blocks are definitely lost in loss record 260 of 260
==27455== at 0x4024DA5: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==27455== by 0x407C593: visual_mem_malloc (lv_mem.c:123)
==27455== by 0x407C64B: visual_mem_malloc0 (lv_mem.c:140)
==27455== by 0x4075078: visual_bin_new (lv_bin.c:101)
==27455== by 0x805200E: main (lv-tool.cpp:298)
==27455==
==27455== LEAK SUMMARY:
==27455== definitely lost: 2,742 bytes in 49 blocks
==27455== indirectly lost: 577,092 bytes in 779 blocks
==27455== possibly lost: 565,248 bytes in 10 blocks
==27455== still reachable: 35,500 bytes in 482 blocks
==27455== suppressed: 0 bytes in 0 blocks
==27455== Reachable blocks (those to which a pointer was found) are not shown.
==27455== To see them, rerun with: --leak-check=full --show-reachable=yes
==27455==
==27455== For counts of detected and suppressed errors, rerun with: -v
==27455== ERROR SUMMARY: 24 errors from 24 contexts (suppressed: 2634 from 14)

include current commit hash in build system

it would be nice if CMakeLists.txt could generate a "PACKAGE_BUILD" variable that holds the hash of the current commit, the build date or any other information to differ between different builds

VisParam for input_pulseaudio media.name

Currently the media.name of the pulseaudio source is hardcoded to "record" in input_pulseaudio.c:126
For some use cases it needs to be adjustable by the user.

358a7aec not compiling on android

Compile++ thumb : visual <= lv_plugin_registry.cpp
jni/libvisual/libvisual/libvisual//lv_plugin_registry.cpp: In function 'LV::PluginRef* LV::load_plugin_ref(const std::string&)':
jni/libvisual/libvisual/libvisual//lv_plugin_registry.cpp:104: error: 'dlerror' was not declared in this scope
make[1]: *** [obj/local/armeabi/objs/visual//lv_plugin_registry.o] Error 1
make[1]: Leaving directory `/storage/code/embedded/android/mine/LibVisual

actor_plazma: crash

While working with input_debug, it crashes with input_mplayer (not sure about other inputs)
Reproduce with:

$(mplayer -af export song.mp3) & $(lv-tool -a plazma -i mplayer)

actor_jakdaw, actor_lv_scope: waveform glitch

Somehow the waveform is distorted (maybe due to a buffering issue). With input_debug it shows as small "spikes" that break the waveform that should be a perfect sine (attached screenshot showing enlarged portion of waveform rendered by lv_scope & jakdaw):

lv_scope

jakdaw

lots of issues when resolution is 20x20

Every actor currently crashes randomly/constantly on resolutions < 32x32. I think this is because of bugs in LV aswell as in plugins. Those bugs should be fixed + there should be a test for new plugins to systematically check fitness in different situations.

lv-tool uses stdout by default

lv-tool shouldn't use start if compiled without SDL and no -d argument given. stdout gibberish will confuse new users. A message like "please choose output driver with -d " should be displayed instead.

LV: Proper alignment of buffers for use with SIMD routines

VisVideo, VisDFT and VisAudio buffers need to be properly aligned in order for SIMD routines to work at maximum efficiency. MMX requires at least 8-byte alignments; SSE/SSE2 and Neon need 16; and finally AVX needs 32.

Neither malloc() nor C++'s new operator will automatically provide such a large alignment. We will have to create a visual_new_aligned() based on _allgned_malloc() on WIndows and memalign() on POSIX. According to some sources, OS X does not have memalign(), but we can count on its malloc() always producing addresses at 16 byte boundaries.

Objects allocated in C++ using new will need a custom allocator and the use of placement new.

Additionally, for buffers holding 2-dimensional data such as VisVIdeo, and where block operations such as blitting are performed row by row, every data row requires a similar alignment. Padding will need to be added to achieve this (while keeping contiguity).

Update INSTALL (and README)

Apparently the project switched from autotools to CMake, but the instructions in INSTALL and README are still for autotools.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.