CachingReader: Invalid sample position from engine

Bug #1666050 reported by Uwe Klotz
4
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Fix Released
Critical
Daniel Schürmann

Bug Description

Branch: master / 2.1

Deck 2 was playing and I was adjusting a cue point on deck 1. When hitting cue on deck 1 suddenly the music stopped. My first guess was a wrong midi mapping, but than I noticed that a debug assertion stopped Mixxx. Only a test run with controller debugging enabled ;)

Please see the attached stack trace.

Revision history for this message
Uwe Klotz (uklotzde-deactivatedaccount) wrote :
summary: - Read request with invalid sample position
+ CachingReader: Invalid sample position from engine
Revision history for this message
Uwe Klotz (uklotzde-deactivatedaccount) wrote :

This has now happened multiple times when setting a cue point. Only one deck is affected, it doesn't matter if another deck is playing or not. The engine code for calculating the sample offser when setting cue points is definitely broken!

Revision history for this message
Daniel Schürmann (daschuer) wrote :

This is probably caused be the late latest changes, allowing fractional sample cue points.
We need to allow fractional hints for the caching reader as well.

Changed in mixxx:
status: New → Confirmed
importance: Undecided → Critical
milestone: none → 2.1.0
Revision history for this message
Uwe Klotz (uklotzde-deactivatedaccount) wrote :

I disagree. The caching reader can only read from frame boundaries. Sub-frame calculations must be done in the engine.

Revision history for this message
Uwe Klotz (uklotzde-deactivatedaccount) wrote :

By switching to frame positions this would work as expected. It's just a missing adjustment of sample positions to even numbers during sub-frame calculations.

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Yes, the caching reader can only read full frames, and the engine can request fractional frames.
This bug is just an issue where we round to full frames. I have no strong opinion about the right place right now.

Revision history for this message
Uwe Klotz (uklotzde-deactivatedaccount) wrote :

The sub-frame calculations (and interpolation) must be done once, but not twice. If resampling between the sampling rate provided by decoding and the internal rate of the engine is needed, that could be the right place.

Changed in mixxx:
assignee: nobody → Daniel Schürmann (daschuer)
status: Confirmed → In Progress
Revision history for this message
Be (be.ing) wrote :
Changed in mixxx:
status: In Progress → Fix Committed
Changed in mixxx:
status: Fix Committed → Fix Released
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/8812

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.