Giter Club home page Giter Club logo

mumble-pahelper's Introduction

Mumble Positional Audio Helper

Commit ba34fec657e1e9f13c7e8f3acabdf7e2301ddee8 in Mumble introduced a built-in replacement for this tool, which can still be used. However, please note that:

  1. The project is archived and not officially supported anymore.
  2. It only supports the legacy plugins API, which will eventually be deprecated.
  3. Both the plugin and the tool should be built with the same compiler, in order to avoid crashes related to ABI incompatibility.
Previous content

Logo

Mumble Positional Audio Helper is a small tool for testing the functionality of positional audio plugins outside of Mumble.

To test your plugin place it next to MumblePAHelper's executable and launch it.

Default paths

Windows

System directory: C:\Program Files\Mumble\Plugins or C:\Program Files (x86)\Mumble\Plugins

User directory: %AppData%\Roaming\Mumble\Plugins

Linux

System directory: /usr/lib/mumble

User directory: ~/.local/share/Mumble/Mumble/Plugins


Mumble installs the plugins in the system directory and downloads the updated ones in the user directory.

On Windows you need to set the system directory manually if you are using a development snapshot or you have installed Mumble in a custom location.

Screenshots

Screenshot on Windows Screenshot on Linux

mumble-pahelper's People

Contributors

davidebeatrici avatar hacst avatar kissaki avatar mkrautz avatar vimpostor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

mumble-pahelper's Issues

Segmentation fault

I built Mumble PAHelper with qmake MumblePAHelper.pro && make -j8, but it crashes very quickly.
It just prints:

Plugin: libcelt0.so.0.7.0
Plugin: liblink.so
Plugin: libmanual.so
zsh: segmentation fault  ./debug/MumblePAHelper

Here is a bt full with gdb:

#0  0x00007fffe9a1a184 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
No symbol table info available.
#1  0x00007ffff7de864a in call_init (l=<optimized out>, argc=argc@entry=1, argv=argv@entry=0x7fffffffdf78, 
    env=env@entry=0x7fffffffdf88) at dl-init.c:72
        j = <optimized out>
        jm = <optimized out>
        addrs = <optimized out>
        init_array = <optimized out>
#2  0x00007ffff7de875b in call_init (env=0x7fffffffdf88, argv=0x7fffffffdf78, argc=1, l=<optimized out>) at dl-init.c:30
No locals.
#3  _dl_init (main_map=main_map@entry=0x5555558d43f0, argc=1, argv=0x7fffffffdf78, env=0x7fffffffdf88) at dl-init.c:120
        preinit_array = <optimized out>
        preinit_array_size = <optimized out>
        i = 1
#4  0x00007ffff7deccd8 in dl_open_worker (a=a@entry=0x7fffffffd350) at dl-open.c:575
        args = 0x7fffffffd350
        file = <optimized out>
        mode = <optimized out>
        call_map = <optimized out>
        dst = <optimized out>
        new = <optimized out>
        __PRETTY_FUNCTION__ = "dl_open_worker"
        r = <optimized out>
        reloc_mode = <optimized out>
        nmaps = <optimized out>
        l = <optimized out>
        maps = <optimized out>
        any_tls = <optimized out>
        first_static_tls = <optimized out>
#5  0x00007ffff7de84f4 in _dl_catch_error (objname=objname@entry=0x7fffffffd340, errstring=errstring@entry=0x7fffffffd348, 
    mallocedp=mallocedp@entry=0x7fffffffd33f, operate=operate@entry=0x7ffff7dec8f0 <dl_open_worker>, 
    args=args@entry=0x7fffffffd350) at dl-error.c:187
        errcode = 32767
        c = {objname = 0x7fffffffd340, errstring = 0x7fffffffd348, malloced = 0x7fffffffd33f, errcode = 0x7fffffffd21c, env = {{
              __jmpbuf = {140737488344160, 274354359243338079, 2147483649, 93824995768424, 140737337264910, 140737354125376, 
                274354359176229215, 274336486103806303}, __mask_was_saved = 0, __saved_mask = {__val = {140737335286256, 
                  140737353804592, 140737353806360, 140737488344736, 140737353793536, 140737353795360, 140737488345584, 
                  93824994591984, 93824994593184, 93824994594384, 93824994595584, 4, 93824994597984, 93824994599184, 
                  93824994600384, 140737488344336}}}}}
        catchp = 0x7ffff7fa8b80
        old = <optimized out>
#6  0x00007ffff7dec489 in _dl_open (file=0x5555558b3868 "/usr/lib/mumble/libmanual.so", mode=-2147483647, 
    caller_dlopen=0x7ffff6fe8b0e, nsid=-2, argc=<optimized out>, argv=<optimized out>, env=0x7fffffffdf88) at dl-open.c:660
        args = {file = 0x5555558b3868 "/usr/lib/mumble/libmanual.so", mode = -2147483647, caller_dlopen = 0x7ffff6fe8b0e, 
          caller_dl_open = 0x7ffff4722ee9 <dlopen_doit+89>, map = 0x5555558d43f0, nsid = 0, argc = 1, argv = 0x7fffffffdf78, 
          env = 0x7fffffffdf88}
        objname = 0x5555557992f0 ""
        errstring = 0x555555799820 ""
        malloced = false
        errcode = <optimized out>
        __PRETTY_FUNCTION__ = "_dl_open"
#7  0x00007ffff4722ee9 in dlopen_doit (a=a@entry=0x7fffffffd580) at dlopen.c:66
        args = 0x7fffffffd580
#8  0x00007ffff7de84f4 in _dl_catch_error (objname=0x555555793240, errstring=0x555555793248, mallocedp=0x555555793238, 
    operate=0x7ffff4722e90 <dlopen_doit>, args=0x7fffffffd580) at dl-error.c:187
        errcode = 32767
        c = {objname = 0x555555793240, errstring = 0x555555793248, malloced = 0x555555793238, errcode = 0x7fffffffd45c, env = {{
              __jmpbuf = {0, 274337831848472927, 140737488344448, 140737488344592, 93824995767752, 93824995708536, 
                274354359067177311, 274336486103806303}, __mask_was_saved = 82, __saved_mask = {__val = {28, 140737488344736, 
                  140737488344736, 63, 140737335397354, 140737488344736, 140737335396528, 64, 4294967295, 0, 140737337656827, 82, 
                  140737488344736, 93824995768632, 28, 140737488344592}}}}}
        catchp = 0x7ffff7fa8b80
        old = <optimized out>
#9  0x00007ffff4723521 in _dlerror_run (operate=operate@entry=0x7ffff4722e90 <dlopen_doit>, args=args@entry=0x7fffffffd580)
    at dlerror.c:163
        result = 0x555555793230
#10 0x00007ffff4722f82 in __dlopen (file=<optimized out>, mode=<optimized out>) at dlopen.c:87
        args = {file = 0x5555558b3868 "/usr/lib/mumble/libmanual.so", mode = 1, new = 0x0, caller = 0x7ffff6fe8b0e}
#11 0x00007ffff6fe8b0e in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
No symbol table info available.
#12 0x00007ffff6fe21db in QLibrary::load() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
No symbol table info available.
#13 0x00005555555678d2 in Plugins::rescanPlugins (this=0x5555557df8e0) at Plugins.cpp:132
        pi = 0x5555558a0070
        fname = {static null = {<No data fields>}, d = 0x5555558b39d0}
        libname = {static null = {<No data fields>}, d = 0x55555587fc30}
        libinfo = @0x5555558a50c0: {d_ptr = {d = 0x5555558cc170}}
        _container_ = {c = {<QListSpecialMethods<QFileInfo>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {
                      _q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, <No data fields>}}}, 
                  alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x5555558a5050}, d = 0x5555558a5050}}, i = {
            i = 0x5555558a50c0}, e = {i = 0x5555558a50e8}, control = 1}
        lock = {q_val = 93824994900209}
        qcd = {d_ptr = {d = 0x55555585cd00}}
        qd = {d_ptr = {d = 0x5555558bf8e0}}
        qud = {d_ptr = {d = 0x5555558b42a0}}
        libs = {<QListSpecialMethods<QFileInfo>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {
                    _q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, <No data fields>}}}, alloc = 0, 
                begin = 0, end = 0, array = {0x0}}, d = 0x5555558a5050}, d = 0x5555558a5050}}
        loaded = {q_hash = {{d = 0x7ffff70b6f80 <QHashData::shared_null>, e = 0x7ffff70b6f80 <QHashData::shared_null>}}}
        __PRETTY_FUNCTION__ = "void Plugins::rescanPlugins()"
#14 0x000055555555b952 in MumblePAHelper::MumblePAHelper (this=0x7fffffffdbd0, parent=0x0) at mumblepahelper.cpp:40
No locals.
#15 0x000055555555b5d7 in main (argc=1, argv=0x7fffffffdf78) at main.cpp:38
        a = <incomplete type>
        w = {<QMainWindow> = {<No data fields>}, <Ui::MumblePAHelper> = {<Ui_MumblePAHelper> = {action_Quit = 0x5555557e1980, 
              action_Unlink = 0x555555809b10, action_Rescan = 0x55555580a3f0, action_SetUserPluginsLocation = 0x55555579b530, 
              action_SetSystemPluginsLocation = 0x5555557f6090, centralWidget = 0x5555557f61e0, gridLayout = 0x5555557de0b0, 
              qgbAvatarPos = 0x5555557f86b0, formLayout_4 = 0x5555558092b0, qdsbAPX_label = 0x555555810e00, 
              qdsbAPX = 0x5555558049a0, qdsbAPY_label = 0x555555863740, qdsbAPY = 0x555555867390, qdsbAPZ_label = 0x55555587bf80, 
              qdsbAPZ = 0x55555585f4c0, qgbCameraPos = 0x5555558633f0, formLayout_8 = 0x555555809b30, 
              qdsbCPX_label = 0x555555835650, qdsbCPX = 0x555555817ee0, qdsbCPY_label = 0x55555583ce80, qdsbCPY = 0x55555585dfc0, 
              qdsbCPZ_label = 0x55555586e1a0, qdsbCPZ = 0x555555861fb0, qgbMeta = 0x555555867860, gridLayout_2 = 0x55555586ad40, 
              qpteContext_label = 0x5555558eb960, qpteContext = 0x5555558ef5b0, qpteIdentity_label = 0x5555558e78e0, 
              qpteIdentity = 0x5555558efbb0, groupBox = 0x5555558e7600, gridLayout_3 = 0x555555843990, 
              qlwPlugins = 0x5555558f3760, qlPluginInfo = 0x5555558f1cb0, qcbUserPlugins = 0x5555558f1b00, 
              qcbCurrentDirectoryPlugins = 0x5555558e29d0, qcbSystemPlugins = 0x55555589ebe0, qpbAbout = 0x5555558e3e70, 
              qpbConfig = 0x55555586a1f0, qpbRescan = 0x5555558843d0, qgbAvatarFront = 0x5555558f2580, 
              formLayout_2 = 0x5555558600d0, qdsbAFX_label = 0x5555558f2100, qdsbAFX = 0x5555558f2310, 
              qdsbAFY_label = 0x55555587ff10, qdsbAFY = 0x5555558e1660, qdsbAFZ_label = 0x5555558e2450, qdsbAFZ = 0x555555884c70, 
              qgbCameraFront = 0x5555558d4ab0, formLayout_9 = 0x5555558f22e0, qdsbCFX_label = 0x5555558d4b80, 
              qdsbCFX = 0x5555558e0cc0, qdsbCFY_label = 0x5555558ad6d0, qdsbCFY = 0x5555558aede0, qdsbCFZ_label = 0x555555879c60, 
              qdsbCFZ = 0x5555558ae460, qgbAvatarTop = 0x5555558e3ae0, formLayout_3 = 0x5555558e4fd0, 
              qdsbATX_label = 0x5555558e3680, qdsbATX = 0x555555880b30, qdsbATY_label = 0x55555589f1a0, qdsbATY = 0x5555558e5680, 
              qdsbATZ_label = 0x55555587a5d0, qdsbATZ = 0x555555882220, qgbCameraTop = 0x555555878e30, 
              formLayout_10 = 0x5555558e3810, qdsbCTX_label = 0x555555885a80, qdsbCTX = 0x555555885e70, 
              qdsbCTY_label = 0x555555883950, qdsbCTY = 0x55555587bb90, qdsbCTZ_label = 0x55555587e690, qdsbCTZ = 0x55555587cda0, 
              menuBar = 0x55555587d820, menuFile = 0x55555587b640, menu_Edit = 0x5555558859b0, 
              statusBar = 0x5555558817e0}, <No data fields>}, static staticMetaObject = {d = {
              superdata = 0x7ffff7db3a60 <QMainWindow::staticMetaObject>, 
              stringdata = 0x55555556ed00 <qt_meta_stringdata_MumblePAHelper>, 
              data = 0x55555556f140 <qt_meta_data_MumblePAHelper>, 
              static_metacall = 0x55555556c4ba <MumblePAHelper::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
              relatedMetaObjects = 0x0, extradata = 0x0}}, plugins = 0x5555557df8e0}

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.