CachingReader: Invalid sample position from engine

Bug #1666050 reported by Uwe Klotz on 2017-02-19
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
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.

Uwe Klotz (uklotzde) wrote :
Uwe Klotz (uklotzde) on 2017-02-19
summary: - Read request with invalid sample position
+ CachingReader: Invalid sample position from engine
Uwe Klotz (uklotzde) 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!

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
Uwe Klotz (uklotzde) wrote :

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

Uwe Klotz (uklotzde) 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.

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.

Uwe Klotz (uklotzde) 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
Be (be.ing) wrote :
Changed in mixxx:
status: In Progress → Fix Committed
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers