Merge lp://qastaging/~ywwg/mixxx/features_xwax2 into lp://qastaging/mixxx/1.10

Proposed by Owen Williams
Status: Merged
Merged at revision: 2863
Proposed branch: lp://qastaging/~ywwg/mixxx/features_xwax2
Merge into: lp://qastaging/mixxx/1.10
Diff against target: 3843 lines (+1680/-472) (has conflicts)
57 files modified
mixxx/build/depends.py (+3/-0)
mixxx/lib/xwax/timecoder.c (+1/-1)
mixxx/lib/xwax/timecoder_win32.cpp (+1/-1)
mixxx/src/cachingreader.cpp (+163/-145)
mixxx/src/cachingreader.h (+79/-74)
mixxx/src/dlgprefnovinyldlg.ui (+23/-0)
mixxx/src/dlgprefvinyl.cpp (+3/-0)
mixxx/src/dlgprefvinyldlg.ui (+7/-0)
mixxx/src/engine/enginebuffer.cpp (+5/-9)
mixxx/src/engine/enginebufferscalelinear.cpp (+0/-10)
mixxx/src/engine/enginebufferscalest.h (+5/-5)
mixxx/src/engine/enginedeck.cpp (+1/-2)
mixxx/src/engine/enginemaster.cpp (+11/-2)
mixxx/src/engine/enginemaster.h (+2/-0)
mixxx/src/engine/enginevinylsoundemu.cpp (+37/-25)
mixxx/src/engine/enginevinylsoundemu.h (+6/-1)
mixxx/src/engine/engineworkerscheduler.cpp (+25/-11)
mixxx/src/engine/engineworkerscheduler.h (+21/-6)
mixxx/src/engine/readaheadmanager.cpp (+12/-7)
mixxx/src/engine/readaheadmanager.h (+2/-1)
mixxx/src/engine/syncworker.cpp (+25/-0)
mixxx/src/engine/syncworker.h (+20/-0)
mixxx/src/engine/vinylcontrolcontrol.cpp (+6/-0)
mixxx/src/engine/vinylcontrolcontrol.h (+2/-0)
mixxx/src/library/basesqltablemodel.cpp (+85/-0)
mixxx/src/library/basetrackcache.cpp (+15/-2)
mixxx/src/library/dao/trackdao.cpp (+3/-1)
mixxx/src/library/itunes/itunesfeature.cpp (+45/-20)
mixxx/src/library/preparelibrarytablemodel.cpp (+5/-1)
mixxx/src/library/rhythmbox/rhythmboxfeature.cpp (+1/-1)
mixxx/src/library/traktor/traktorfeature.cpp (+1/-1)
mixxx/src/mixxx.cpp (+10/-35)
mixxx/src/skin/legacyskinparser.cpp (+4/-2)
mixxx/src/skin/legacyskinparser.h (+3/-1)
mixxx/src/skin/skinloader.cpp (+7/-1)
mixxx/src/skin/skinloader.h (+2/-1)
mixxx/src/soundmanager.cpp (+1/-9)
mixxx/src/soundmanager.h (+0/-2)
mixxx/src/track/beatfactory.cpp (+4/-5)
mixxx/src/trackinfoobject.cpp (+11/-1)
mixxx/src/trackinfoobject.h (+4/-0)
mixxx/src/util/fifo.h (+44/-0)
mixxx/src/util/pa_memorybarrier.h (+128/-0)
mixxx/src/util/pa_ringbuffer.c (+238/-0)
mixxx/src/util/pa_ringbuffer.h (+233/-0)
mixxx/src/vinylcontrol/vinylcontrol.cpp (+15/-2)
mixxx/src/vinylcontrol/vinylcontrol.h (+6/-1)
mixxx/src/vinylcontrol/vinylcontrolmanager.cpp (+17/-6)
mixxx/src/vinylcontrol/vinylcontrolmanager.h (+1/-0)
mixxx/src/vinylcontrol/vinylcontrolsignalwidget.cpp (+1/-1)
mixxx/src/vinylcontrol/vinylcontrolxwax.cpp (+118/-61)
mixxx/src/vinylcontrol/vinylcontrolxwax.h (+2/-1)
mixxx/src/waveform/waveformrenderer.cpp (+24/-1)
mixxx/src/waveform/waveformrenderer.h (+2/-1)
mixxx/src/widget/wspinny.cpp (+160/-10)
mixxx/src/widget/wspinny.h (+25/-1)
mixxx/src/widget/wtracktableview.cpp (+5/-4)
Text conflict in mixxx/src/library/basesqltablemodel.cpp
Text conflict in mixxx/src/library/basetrackcache.cpp
Text conflict in mixxx/src/library/itunes/itunesfeature.cpp
Text conflict in mixxx/src/library/preparelibrarytablemodel.cpp
Text conflict in mixxx/src/skin/skinloader.cpp
To merge this branch: bzr merge lp://qastaging/~ywwg/mixxx/features_xwax2
Reviewer Review Type Date Requested Status
RJ Skerry-Ryan Approve
Review via email: mp+69921@code.qastaging.launchpad.net

Description of the change

I've continued working in features_xwax2 to make some fixes and updates to the vinyl control code. It would be nice if some of these fixes could go into trunk, other new features can probably wait if it breaks freeze too badly.

New Features:
* Show signal quality inside WSpinny
* More pleasant waveform stretching

Fixes:
* fix vinylsoundemu and take equivalent code out of EBSL
* when loading a track, update track duration with correct value
* keep vinyl control enabled when changing vinyl control preferences
* Absolute mode fixes (better for scratching)

To post a comment you must log in.
2664. By Owen Williams

Merge from lp:mixxx

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

Looking good Owen -- I think this is fine to go in 1.10. I'm going on your say-so that it works since I can't test it myself, so this is just a review of the code assuming it all works :P

enginevinylsoundemu.cpp

* Just to make sure fabs(curRate) is not repeated over and over, could you assign it to a temporary variable once per loop?

* Using rand() in the callback isn't ok because technically it can block if the system has run out of entropy (at least if it's reading from /dev/random). Even if it doesn't block, random number generation aint cheap. Can you pre-generate a large buffer of random numbers in the constructor and just use that (with a class-level stored index into the buffer so you aren't adding the same section each time).

enginebuffer.cpp

* Duration is read from metadata and shouldn't be considered accurate. Also I don't think we should correct it if it's wrong from the engine. Do you rely on duration anywhere from within VC? Can we remove this line?

vinylcontrolsignalwidget.cpp

* There's a constant in vinylcontrol.h MIXXX_VINYL_SCOPE_SIZE that seems to be this number. Can you use that instead?

wspinny.cpp

* in updateVinylControlEnabled() there is some non-ndeck code -- I know VC itself is 2-deck centric, but could you instead add a VinylControlManager::getVinylControlProxyForChannel(QString) method that returns either the proxy or NULL? That way WSpinny doesn't need an update when we eventually n-deck vinyl control.

review: Needs Fixing
Revision history for this message
Owen Williams (ywwg) wrote :

Just a couple of comments as I work on this:

> enginebuffer.cpp
>
> * Duration is read from metadata and shouldn't be considered accurate. Also I
> don't think we should correct it if it's wrong from the engine. Do you rely on
> duration anywhere from within VC? Can we remove this line?

Vinyl control needs an exact duration (sample-accurate) to calculate position and drift, and the UI timers (time remaining / track duration) also need better precision (there's a bug in launchpad for this). What is the point of the duration member if it's several seconds off? Why not fix it? Otherwise I need to add a new object called "exact_duration" or "calculated_duration" or something.

>
> vinylcontrolsignalwidget.cpp
>
> * There's a constant in vinylcontrol.h MIXXX_VINYL_SCOPE_SIZE that seems to be
> this number. Can you use that instead?

the scope size is the size of the bitmap created by xwax. This bitmap can then be scaled to whatever size the scope widget actually is. I'll set it to default to the scope size, but they don't need to be the same.

2665. By Owen Williams

Calculate fabs value once, not three times

2666. By Owen Williams

Replace explicit number with #defined value

2667. By Owen Williams

Optimizing vinyl sound emu:
* precompute random values for dithering
* don't repeatedly calculate absolute value

2668. By Owen Williams

Also randomize position in noise buffer so right and left aren't aligned

2669. By Owen Williams

Always record pitch for steadypitch, not just when we have position

2670. By Owen Williams

Retweak pitch smoothing tweak. Make sure spurious values aren't in the ringbuffer

2671. By Owen Williams

Don't use static variables

2672. By Owen Williams

Merge from lp:mixxx

2673. By Owen Williams

include genre in search results

2674. By Owen Williams

merge from lp:mixxx

2675. By Owen Williams

Abstractify vinyl proxies more

2676. By Owen Williams

Don't change metadata-reported duration

Revision history for this message
Owen Williams (ywwg) wrote :

This branch is ready for reevaluation.

2677. By Owen Williams

merge from lp:mixxx

2678. By Owen Williams

Merge with lp:mixxx

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

Looks good to me. Merge away!

review: Approve
2679. By Owen Williams

merge from lp:mixxx

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
The diff is not available at this time. You can reload the page or download it.

Subscribers

People subscribed via source and target branches