New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lv2 support2 #1240

Merged
merged 3,751 commits into from May 19, 2018

Conversation

Projects
None yet
@daschuer
Member

daschuer commented Apr 18, 2017

This PR adds basic LV2 support to Mixxx. It integrates seamlessly with our current Effects Framework. Just install an LV2 plugin and it will show up when you cycle through the effects.

Currently it is only supporting plugins which handle stereo input/output audio samples and do not require any additional features.

This is the successor of
#316

IMHO this is in a mergeable state, because if a user has no LV2 plug-in installed, he will not noticed this branch at all. There are some pending shortcomings when we look at the visual integration and customize the interface of some plug-Ins but that are no stopper for me.

Lets merge it for now to stop rotting of this already useful branch. If it tuns out that it introduces issue for some regular users, we can opt it out from our release builds.

What do you think?

@rryan: What is required to add lilv to our buildservers?

@daschuer daschuer referenced this pull request Apr 18, 2017

Closed

LV2 Support #359

@christophski

This comment has been minimized.

Show comment
Hide comment
@christophski

christophski Apr 18, 2017

This is very exciting, can't wait to use my CALF reverb plugin live.

christophski commented Apr 18, 2017

This is very exciting, can't wait to use my CALF reverb plugin live.

@rryan

This comment has been minimized.

Show comment
Hide comment
@rryan

rryan Apr 18, 2017

Member

Nice! Looks like a pretty small set of changes on the whole.

lilv support is waiting for a contributor to pick it up -- there's nothing blocked on me now that buildserver development is automated by pull request:
mixxxdj/buildserver#15

Maybe @sblaisot would be interested in the windows side of that?

Member

rryan commented Apr 18, 2017

Nice! Looks like a pretty small set of changes on the whole.

lilv support is waiting for a contributor to pick it up -- there's nothing blocked on me now that buildserver development is automated by pull request:
mixxxdj/buildserver#15

Maybe @sblaisot would be interested in the windows side of that?

@Be-ing

This comment has been minimized.

Show comment
Hide comment
@Be-ing

Be-ing Apr 18, 2017

Contributor

This does not build with #1092 merged:

src/effects/lv2/lv2manifest.cpp: In constructor ‘LV2Manifest::LV2Manifest(const LilvPlugin*, QHash<QString, LilvNodeImpl*>&)’:
src/effects/lv2/lv2manifest.cpp:68:36: error: ‘SEMANTIC_UNKNOWN’ is not a member of ‘EffectManifestParameter’
             param->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN);
                                    ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:69:33: error: ‘UNITS_UNKNOWN’ is not a member of ‘EffectManifestParameter’
             param->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN);
                                 ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:76:39: error: ‘CONTROL_TOGGLE_STEPPING’ is not a member of ‘EffectManifestParameter’
                 param->setControlHint(EffectManifestParameter::CONTROL_TOGGLE_STEPPING);
                                       ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:79:39: error: ‘CONTROL_TOGGLE_STEPPING’ is not a member of ‘EffectManifestParameter’
                 param->setControlHint(EffectManifestParameter::CONTROL_TOGGLE_STEPPING);
                                       ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:81:39: error: ‘CONTROL_KNOB_STEPPING’ is not a member of ‘EffectManifestParameter’
                 param->setControlHint(EffectManifestParameter::CONTROL_KNOB_STEPPING);
                                       ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:83:40: error: ‘CONTROL_KNOB_LINEAR’ is not a member of ‘EffectManifestParameter’
                  param->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR);
                                        ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:108:36: error: ‘SEMANTIC_UNKNOWN’ is not a member of ‘EffectManifestParameter’
             param->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN);
                                    ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:109:33: error: ‘UNITS_UNKNOWN’ is not a member of ‘EffectManifestParameter’
             param->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN);
                                 ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:110:35: error: ‘CONTROL_TOGGLE_STEPPING’ is not a member of ‘EffectManifestParameter’
             param->setControlHint(EffectManifestParameter::CONTROL_TOGGLE_STEPPING);
                                   ^~~~~~~~~~~~~~~~~~~~~~~
scons: *** [lin64_build/effects/lv2/lv2manifest.o] Error 1
scons: building terminated because of errors.
Contributor

Be-ing commented Apr 18, 2017

This does not build with #1092 merged:

src/effects/lv2/lv2manifest.cpp: In constructor ‘LV2Manifest::LV2Manifest(const LilvPlugin*, QHash<QString, LilvNodeImpl*>&)’:
src/effects/lv2/lv2manifest.cpp:68:36: error: ‘SEMANTIC_UNKNOWN’ is not a member of ‘EffectManifestParameter’
             param->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN);
                                    ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:69:33: error: ‘UNITS_UNKNOWN’ is not a member of ‘EffectManifestParameter’
             param->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN);
                                 ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:76:39: error: ‘CONTROL_TOGGLE_STEPPING’ is not a member of ‘EffectManifestParameter’
                 param->setControlHint(EffectManifestParameter::CONTROL_TOGGLE_STEPPING);
                                       ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:79:39: error: ‘CONTROL_TOGGLE_STEPPING’ is not a member of ‘EffectManifestParameter’
                 param->setControlHint(EffectManifestParameter::CONTROL_TOGGLE_STEPPING);
                                       ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:81:39: error: ‘CONTROL_KNOB_STEPPING’ is not a member of ‘EffectManifestParameter’
                 param->setControlHint(EffectManifestParameter::CONTROL_KNOB_STEPPING);
                                       ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:83:40: error: ‘CONTROL_KNOB_LINEAR’ is not a member of ‘EffectManifestParameter’
                  param->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR);
                                        ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:108:36: error: ‘SEMANTIC_UNKNOWN’ is not a member of ‘EffectManifestParameter’
             param->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN);
                                    ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:109:33: error: ‘UNITS_UNKNOWN’ is not a member of ‘EffectManifestParameter’
             param->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN);
                                 ^~~~~~~~~~~~~~~~~~~~~~~
src/effects/lv2/lv2manifest.cpp:110:35: error: ‘CONTROL_TOGGLE_STEPPING’ is not a member of ‘EffectManifestParameter’
             param->setControlHint(EffectManifestParameter::CONTROL_TOGGLE_STEPPING);
                                   ^~~~~~~~~~~~~~~~~~~~~~~
scons: *** [lin64_build/effects/lv2/lv2manifest.o] Error 1
scons: building terminated because of errors.
@Be-ing

This comment has been minimized.

Show comment
Hide comment
@Be-ing

Be-ing Apr 18, 2017

Contributor

Thank you for working on this, but I am doubtful it should be rushed for 2.1. Maybe we can hide it behind a compile option that is disabled by default like the OpenGL ES waveform renderer. There's still quite a lot of polishing to do:

  • Blacklisting parameters in the preferences does not update loaded effects. Another effect must be loaded then the old one reloaded.
  • There are no parameter tooltips. Parameter names are often long, so they would need to be elided. Tooltips are important even if they only show the full name of the parameter.
  • The big list of buttons for each effect in the preferences is too tall. It should be a list. It should probably also be a part of the main effects preferences instead of its own pane.
  • Effects should be able to be blacklisted, not just parameters.
  • For a good user experience, we should have default parameter blacklists, parameter short names, effect short names, and metaknob linkings for popular LV2 plugins. There is no way to create those presently. Once those are possible, creating them will be quite a bit of work.
  • Skins need to be able to differentiate between binary switches and buttons with more than 2 states. For example, the Calf Reverb plugin has a "Room Size" parameter which has multiple discrete settings possible, but skins only show ON/OFF. This is confusing.
  • At least with #940, for effects with lots of parameters, some knobs do not show until their value is changed.
Contributor

Be-ing commented Apr 18, 2017

Thank you for working on this, but I am doubtful it should be rushed for 2.1. Maybe we can hide it behind a compile option that is disabled by default like the OpenGL ES waveform renderer. There's still quite a lot of polishing to do:

  • Blacklisting parameters in the preferences does not update loaded effects. Another effect must be loaded then the old one reloaded.
  • There are no parameter tooltips. Parameter names are often long, so they would need to be elided. Tooltips are important even if they only show the full name of the parameter.
  • The big list of buttons for each effect in the preferences is too tall. It should be a list. It should probably also be a part of the main effects preferences instead of its own pane.
  • Effects should be able to be blacklisted, not just parameters.
  • For a good user experience, we should have default parameter blacklists, parameter short names, effect short names, and metaknob linkings for popular LV2 plugins. There is no way to create those presently. Once those are possible, creating them will be quite a bit of work.
  • Skins need to be able to differentiate between binary switches and buttons with more than 2 states. For example, the Calf Reverb plugin has a "Room Size" parameter which has multiple discrete settings possible, but skins only show ON/OFF. This is confusing.
  • At least with #940, for effects with lots of parameters, some knobs do not show until their value is changed.
@sblaisot

This comment has been minimized.

Show comment
Hide comment
@sblaisot

sblaisot Apr 26, 2017

Member

I will try working on lilv on the windows build server in the next weeks.
btw, how to assign the issue to myself ?

Member

sblaisot commented Apr 26, 2017

I will try working on lilv on the windows build server in the next weeks.
btw, how to assign the issue to myself ?

@daschuer

This comment has been minimized.

Show comment
Hide comment
@daschuer

daschuer Apr 27, 2017

Member

Now the parameter slot assignment is refreshed for loaded effects as well.
This allows assign rarely uses parameters, tweak them and unassigned them. A kind of a "prepare mode". However, these settings are not persistent as it is most likely expected.

@be: What could be a solution?

We need a way, to store the values of all parameters in the effect.xml file. In addition we need to store the blacklistings. It is also a question what should happen with the hidden parameters. Do we need to store a default, or is the value per effect slot in effect.xml sufficient?

All this is probably to much to be part of 2.1, but I just want to be sure the effect.xml format is settled.

Member

daschuer commented Apr 27, 2017

Now the parameter slot assignment is refreshed for loaded effects as well.
This allows assign rarely uses parameters, tweak them and unassigned them. A kind of a "prepare mode". However, these settings are not persistent as it is most likely expected.

@be: What could be a solution?

We need a way, to store the values of all parameters in the effect.xml file. In addition we need to store the blacklistings. It is also a question what should happen with the hidden parameters. Do we need to store a default, or is the value per effect slot in effect.xml sufficient?

All this is probably to much to be part of 2.1, but I just want to be sure the effect.xml format is settled.

@Be-ing

This comment has been minimized.

Show comment
Hide comment
@Be-ing

Be-ing Apr 28, 2017

Contributor

Hmm, interesting question. I'm not sure. The way I was thinking blacklisting parameters would be used would be to hide parameters whenever that effect is loaded into any effect slot. In that case, effects.xml would not be an appropriate place to store the blacklist. On the other hand, it may be desirable to have some parameters blacklisted when exporting/importing chains.

Contributor

Be-ing commented Apr 28, 2017

Hmm, interesting question. I'm not sure. The way I was thinking blacklisting parameters would be used would be to hide parameters whenever that effect is loaded into any effect slot. In that case, effects.xml would not be an appropriate place to store the blacklist. On the other hand, it may be desirable to have some parameters blacklisted when exporting/importing chains.

@Be-ing Be-ing referenced this pull request Nov 21, 2017

Merged

move effects post-fader #1254

2 of 2 tasks complete

@Be-ing Be-ing added the effects label Dec 27, 2017

esbrandt and others added some commits Mar 30, 2018

Update translation template. Found 2348 source text(s) (7 new and 234…
…1 already existing). Removed 1 obsolete entries
Pull latest translations from https://www.transifex.com/mixxx-dj-soft…
…ware/mixxxdj/github-release-210/. Compile QM files out of TS files that are used by the localized app
Merge pull request #1559 from Be-ing/hercules_p32_mapping_for_2.1
Hercules P32: add option to toggle effect units with decks
ronso0
Reloop TerminalMix 2/4: remove duplicates, clean up useless controls,…
… add <decription> tags for mixer, FX, looping sections etc.
Merge pull request #1490 from ronso0/Reloop-TerminalMix-2/4-update
Reloop TerminalMix 2/4 :: mapping update
@rryan

This comment has been minimized.

Show comment
Hide comment
@rryan
Member

rryan commented on 18cbce8 Apr 22, 2018

daschuer and others added some commits Apr 22, 2018

Merge pull request #1629 from nopeppermint/patch-6
Tango: change name of skin menu "Extras" to "Misc"
Merge pull request #1634 from nopeppermint/patch-6
Latenight fix: group FX Buttons in deck
Merge remote-tracking branch 'upstream/master' into lv2_support2
Conflicts:
	.travis.yml
	src/effects/effect.cpp
	src/effects/effect.h
	src/effects/effectchainmanager.h
	src/effects/effectinstantiator.h
	src/effects/effectmanifest.h
	src/effects/effectrack.cpp
	src/effects/native/autopaneffect.cpp
	src/effects/native/balanceeffect.cpp
	src/effects/native/biquadfullkilleqeffect.h
	src/effects/native/bitcrushereffect.cpp
	src/effects/native/echoeffect.cpp
	src/effects/native/echoeffect.h
	src/effects/native/filtereffect.cpp
	src/effects/native/flangereffect.cpp
	src/effects/native/loudnesscontoureffect.cpp
	src/effects/native/phasereffect.cpp
	src/effects/native/reverbeffect.cpp
	src/effects/native/threebandbiquadeqeffect.h
	src/engine/effects/engineeffect.cpp
	src/engine/effects/engineeffect.h
	src/mixxx.cpp
	src/preferences/dialog/dlgpreferences.cpp
	src/preferences/dialog/dlgpreferences.h
	src/test/metaknob_link_test.cpp
	src/test/nativeeffects_test.cpp

@daschuer daschuer removed this from the stalled milestone May 1, 2018

@daschuer

This comment has been minimized.

Show comment
Hide comment
@daschuer

daschuer May 1, 2018

Member

This one is head up with master again. It was a lot of work to put it back to this state. It is odd to let it rod in a PR again. It works well, but has issues in presenting the LV2 effects in the GUI.
We may consider to merge this to master and disable it via command line option.

Member

daschuer commented May 1, 2018

This one is head up with master again. It was a lot of work to put it back to this state. It is odd to let it rod in a PR again. It works well, but has issues in presenting the LV2 effects in the GUI.
We may consider to merge this to master and disable it via command line option.

@Be-ing

Be-ing requested changes May 2, 2018 edited

Thanks for resolving the numerous merge conflicts. I have looked briefly at the code but not done a very thorough review yet. There are still many UX quirks that make this not ready to expose to users yet:

  • There needs to be a way to hide effects. Without this, the list of effects to select can easily grow overwhelmingly big. Also, some detected LV2 effects may be useless. For example, I loaded Gx-DelayStereo and it just made a horrible buzzing noise.
  • There is no way to see plugins' GUIs. Metering and other analysis plugins are useless without being able to see the plugin's GUI. For some plugins, it is not clear how to use their parameters without seeing the plugin's GUI.
  • Our skins currently only support binary effect button parameters but LV2 parameters can have more than 2 states. I am not sure these should be button parameters. It may work better to create a new parameter type that is shown with a new QComboBox subclass.
  • Blacklisted parameters are coupled for every instance of an effect. This would be awkward with saving & loading chain presets. Instead, hidden parameters and parameter order should be independent for every instance of an effect. The default parameters shown for an effect and their order should be stored as part of the user's stored default snapshot for the effect along with parameter values and metaknob linkings. This does not need to be done for the initial merge of this branch. @kshitij98 could refactor how parameter hiding is implemented as part of his GSOC project.
  • The LV2 and Effects preference pages are redundant.

I think we could merge this for 2.2 if you implement at least blacklisting effects.

Show outdated Hide outdated src/effects/effectprocessor.h
Show outdated Hide outdated src/test/nativeeffects_test.cpp
}
if (!pState) {
SampleUtil::copyWithGain(pOutput, pInput, 1.0, bufferParameters.samplesPerBuffer());

This comment has been minimized.

@Be-ing

Be-ing May 2, 2018

Contributor

Isn't this redundant with the above VERIFY_OR_DEBUG_ASSERT?

@Be-ing

Be-ing May 2, 2018

Contributor

Isn't this redundant with the above VERIFY_OR_DEBUG_ASSERT?

This comment has been minimized.

@daschuer

daschuer May 2, 2018

Member

No, pState ist written inside the block above.

@daschuer

daschuer May 2, 2018

Member

No, pState ist written inside the block above.

@Be-ing

This comment has been minimized.

Show comment
Hide comment
@Be-ing

Be-ing May 12, 2018

Contributor

@rryan are the build servers set up with lilv?

Contributor

Be-ing commented May 12, 2018

@rryan are the build servers set up with lilv?

Show outdated Hide outdated src/mixxx.cpp
Show outdated Hide outdated src/mixxx.cpp
@rryan

This comment has been minimized.

Show comment
Hide comment
@rryan

rryan May 12, 2018

Member
Member

rryan commented May 12, 2018

Show outdated Hide outdated build/features.py
@Be-ing

This comment has been minimized.

Show comment
Hide comment
@Be-ing

Be-ing May 19, 2018

Contributor

liblilv-dev needs to be added to the Build-Depends package list in build/debian/control.

Contributor

Be-ing commented May 19, 2018

liblilv-dev needs to be added to the Build-Depends package list in build/debian/control.

@Be-ing

This comment has been minimized.

Show comment
Hide comment
@Be-ing

Be-ing May 19, 2018

Contributor

Compilation warning:

g++ -o lin64_build/engine/enginebuffer.o -c -std=c++11 -pipe -Wall -Wextra -g -fPIC -O3 -ffast-math -funroll-loops -fomit-frame-pointer -mtune=generic -pthread -Dx86_64 -DMIXXX_BUILD_DEBUG -D__LINUX__ -D__UNIX__ -DSETTINGS_PATH=\".mixxx/\" -DSETTINGS_FILE=\"mixxx.cfg\" -DUNIX_SHARE_PATH=\"/home/be/local/share/mixxx\" -DUNIX_LIB_PATH=\"/home/be/local/lib/mixxx\" -D__PORTAUDIO__ -DQT_TABLET_SUPPORT -DQT_SHARED -DQT_DISABLE_DEPRECATED_BEFORE -DQT_CORE_LIB -DQT_GUI_LIB -DQT_OPENGL_LIB -DQT_XML_LIB -DQT_SVG_LIB -DQT_SQL_LIB -DQT_SCRIPT_LIB -DQT_NETWORK_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB -DQT_XML_LIB -DQT_SVG_LIB -DQT_SQL_LIB -DQT_SCRIPT_LIB -DQT_NETWORK_LIB -DQT_TESTLIB_LIB -DQT_SCRIPTTOOLS_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CONCURRENT_LIB -DQT_DBUS_LIB -DQT_CORE_LIB -D__SNDFILE__ -DSFC_SUPPORTS_SET_COMPRESSION_LEVEL -D__MAD__ -D__HID__ -D__BULK__ -D__VINYLCONTROL__ -D__BROADCAST__ -D__VAMP__ -Dkiss_fft_scalar=double -D__SQLITE3__ -D__BATTERY__ -Ilin64_build -Isrc -Ilib/soundtouch-2.0.0 -Ilib/replaygain -Ilib/libebur128/ebur128 -I/usr/include/alsa -I/usr/include/qt5/Qt5DBus -I/usr/include/qt5/QtCore -I/usr/include/qt5 -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtOpenGL -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtXml -I/usr/include/qt5/QtSvg -I/usr/include/qt5/QtSql -I/usr/include/qt5/QtScript -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtTest -I/usr/include/qt5/QtScriptTools -I/usr/include/qt5/QtConcurrent -I/usr/include/qt5/QtDBus -Ilib/gtest-1.7.0/include -Ilib/fidlib -I/usr/include/taglib -Ilib/qtscript-bytearray -Ilib/reverb -Ilib/portaudio -I/usr/include/libusb-1.0 -Ilib/hidapi-0.8.0-rc1/hidapi -Ilib/xwax -Ilib/scratchlib -Ilib/vamp -I/usr/include/libupower-glib -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include src/engine/enginebuffer.cpp
In file included from /usr/include/qt5/QtCore/qmetatype.h:47,
                 from /usr/include/qt5/QtCore/qobject.h:54,
                 from /usr/include/qt5/QtCore/qiodevice.h:45,
                 from /usr/include/qt5/QtCore/qtextstream.h:43,
                 from /usr/include/qt5/QtCore/qdebug.h:49,
                 from /usr/include/qt5/QtCore/QtDebug:1,
                 from src/util/assert.h:3,
                 from src/util/math.h:23,
                 from src/util/types.h:7,
                 from src/engine/effects/engineeffectchain.h:9,
                 from src/engine/effects/engineeffectchain.cpp:1:
/usr/include/qt5/QtCore/qvarlengtharray.h: In instantiation of ‘void QVarLengthArray<T, Prealloc>::realloc(int, int) [with T = ChannelHandleMap<EngineEffectChain::ChannelStatus>; int Prealloc = 256]’:
/usr/include/qt5/QtCore/qvarlengtharray.h:276:3:   required from ‘void QVarLengthArray<T, Prealloc>::resize(int) [with T = ChannelHandleMap<EngineEffectChain::ChannelStatus>; int Prealloc = 256]’
src/engine/channelhandle.h:209:13:   required from ‘void ChannelHandleMap<T>::maybeExpand(int) [with T = ChannelHandleMap<EngineEffectChain::ChannelStatus>]’
src/engine/channelhandle.h:173:9:   required from ‘void ChannelHandleMap<T>::insert(const ChannelHandle&, const T&) [with T = ChannelHandleMap<EngineEffectChain::ChannelStatus>]’
src/engine/effects/engineeffectchain.cpp:24:85:   required from here
/usr/include/qt5/QtCore/qvarlengtharray.h:392:19: warning: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘class ChannelHandleMap<EngineEffectChain::ChannelStatus>’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
             memcpy(ptr, oldPtr, copySize * sizeof(T));
             ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from src/engine/effects/engineeffectchain.h:12,
                 from src/engine/effects/engineeffectchain.cpp:1:
src/engine/channelhandle.h:153:7: note: ‘class ChannelHandleMap<EngineEffectChain::ChannelStatus>’ declared here
 class ChannelHandleMap {
       ^~~~~~~~~~~~~~~~
Contributor

Be-ing commented May 19, 2018

Compilation warning:

g++ -o lin64_build/engine/enginebuffer.o -c -std=c++11 -pipe -Wall -Wextra -g -fPIC -O3 -ffast-math -funroll-loops -fomit-frame-pointer -mtune=generic -pthread -Dx86_64 -DMIXXX_BUILD_DEBUG -D__LINUX__ -D__UNIX__ -DSETTINGS_PATH=\".mixxx/\" -DSETTINGS_FILE=\"mixxx.cfg\" -DUNIX_SHARE_PATH=\"/home/be/local/share/mixxx\" -DUNIX_LIB_PATH=\"/home/be/local/lib/mixxx\" -D__PORTAUDIO__ -DQT_TABLET_SUPPORT -DQT_SHARED -DQT_DISABLE_DEPRECATED_BEFORE -DQT_CORE_LIB -DQT_GUI_LIB -DQT_OPENGL_LIB -DQT_XML_LIB -DQT_SVG_LIB -DQT_SQL_LIB -DQT_SCRIPT_LIB -DQT_NETWORK_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB -DQT_XML_LIB -DQT_SVG_LIB -DQT_SQL_LIB -DQT_SCRIPT_LIB -DQT_NETWORK_LIB -DQT_TESTLIB_LIB -DQT_SCRIPTTOOLS_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CONCURRENT_LIB -DQT_DBUS_LIB -DQT_CORE_LIB -D__SNDFILE__ -DSFC_SUPPORTS_SET_COMPRESSION_LEVEL -D__MAD__ -D__HID__ -D__BULK__ -D__VINYLCONTROL__ -D__BROADCAST__ -D__VAMP__ -Dkiss_fft_scalar=double -D__SQLITE3__ -D__BATTERY__ -Ilin64_build -Isrc -Ilib/soundtouch-2.0.0 -Ilib/replaygain -Ilib/libebur128/ebur128 -I/usr/include/alsa -I/usr/include/qt5/Qt5DBus -I/usr/include/qt5/QtCore -I/usr/include/qt5 -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtOpenGL -I/usr/include/qt5/QtWidgets -I/usr/include/qt5/QtXml -I/usr/include/qt5/QtSvg -I/usr/include/qt5/QtSql -I/usr/include/qt5/QtScript -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtTest -I/usr/include/qt5/QtScriptTools -I/usr/include/qt5/QtConcurrent -I/usr/include/qt5/QtDBus -Ilib/gtest-1.7.0/include -Ilib/fidlib -I/usr/include/taglib -Ilib/qtscript-bytearray -Ilib/reverb -Ilib/portaudio -I/usr/include/libusb-1.0 -Ilib/hidapi-0.8.0-rc1/hidapi -Ilib/xwax -Ilib/scratchlib -Ilib/vamp -I/usr/include/libupower-glib -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include src/engine/enginebuffer.cpp
In file included from /usr/include/qt5/QtCore/qmetatype.h:47,
                 from /usr/include/qt5/QtCore/qobject.h:54,
                 from /usr/include/qt5/QtCore/qiodevice.h:45,
                 from /usr/include/qt5/QtCore/qtextstream.h:43,
                 from /usr/include/qt5/QtCore/qdebug.h:49,
                 from /usr/include/qt5/QtCore/QtDebug:1,
                 from src/util/assert.h:3,
                 from src/util/math.h:23,
                 from src/util/types.h:7,
                 from src/engine/effects/engineeffectchain.h:9,
                 from src/engine/effects/engineeffectchain.cpp:1:
/usr/include/qt5/QtCore/qvarlengtharray.h: In instantiation of ‘void QVarLengthArray<T, Prealloc>::realloc(int, int) [with T = ChannelHandleMap<EngineEffectChain::ChannelStatus>; int Prealloc = 256]’:
/usr/include/qt5/QtCore/qvarlengtharray.h:276:3:   required from ‘void QVarLengthArray<T, Prealloc>::resize(int) [with T = ChannelHandleMap<EngineEffectChain::ChannelStatus>; int Prealloc = 256]’
src/engine/channelhandle.h:209:13:   required from ‘void ChannelHandleMap<T>::maybeExpand(int) [with T = ChannelHandleMap<EngineEffectChain::ChannelStatus>]’
src/engine/channelhandle.h:173:9:   required from ‘void ChannelHandleMap<T>::insert(const ChannelHandle&, const T&) [with T = ChannelHandleMap<EngineEffectChain::ChannelStatus>]’
src/engine/effects/engineeffectchain.cpp:24:85:   required from here
/usr/include/qt5/QtCore/qvarlengtharray.h:392:19: warning: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘class ChannelHandleMap<EngineEffectChain::ChannelStatus>’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
             memcpy(ptr, oldPtr, copySize * sizeof(T));
             ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from src/engine/effects/engineeffectchain.h:12,
                 from src/engine/effects/engineeffectchain.cpp:1:
src/engine/channelhandle.h:153:7: note: ‘class ChannelHandleMap<EngineEffectChain::ChannelStatus>’ declared here
 class ChannelHandleMap {
       ^~~~~~~~~~~~~~~~

@Be-ing Be-ing changed the base branch from master to lv2_support2 May 19, 2018

@Be-ing

This comment has been minimized.

Show comment
Hide comment
@Be-ing

Be-ing May 19, 2018

Contributor

I am merging this to the upstream lv2_support2 branch and will be following up with another PR targeted at that branch.

Contributor

Be-ing commented May 19, 2018

I am merging this to the upstream lv2_support2 branch and will be following up with another PR targeted at that branch.

@Be-ing Be-ing merged commit 1defdeb into mixxxdj:lv2_support2 May 19, 2018

0 of 2 checks passed

continuous-integration/travis-ci/pr The Travis CI build could not complete due to an error
Details
continuous-integration/appveyor/pr AppVeyor build failed
Details

ronso0 added a commit to ronso0/mixxx that referenced this pull request Jul 19, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment