Thumbnail cache is invalid if time range is short
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 40/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- cpp
- Domain
- audio-video-rtc
Research direction
Start in modules/tracktion_engine/audio_files/tracktion_Thumbnail.cpp, focusing on TracktionThumbnail::CachedWindow::refillCache around line 463 where the cache-versus-on-the-fly decision is made. Reproduce the issue with the provided test application (test_tracktion_waveform_bug.zip) and compare cached versus on-the-fly level data for short time ranges. Done means the thumbnail no longer leads with zeros and responds correctly to small start-time adjustments. No test file is named; check the repository for a thumbnail test suite.
Written by the indexing model from the issue text.
Description
Hi all,
I've discovered an issue with the TracktionThumbnail::CachedWindow::refillCache function.
From my understanding, if the thumbnail time range is shorter than the CachedWindow has cached, then it begins reading audio level data "on the fly" from the source. This check between using the cache and going "on the fly" is performed here.
When the cache is refilled "on the fly" - the time range is too short for the cache to be used - then it returns invalid data. For some reason, the first several levels are 0. When small adjustments are made to the start of the time range, the thumbnail doesn't always change as expected - the beginning appears to stay in place and the whole thing stretches.
I made a test application to demonstrate this. Here's a screen recording of it:
You can download the source files for this test app here: test_tracktion_waveform_bug.zip
- Dominant language
- C++
- Stars
- 1.5k
- Forks
- 222
- Avg merge
- 15h 44m
- Merged PRs (30d)
- 33
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Tracktion/tracktion_engine
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Tracktion/tracktion_engine#475 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 25/100
Tracktion/tracktion_engine#476 · 5 comments ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 22/100
Tracktion/tracktion_engine#474 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 48/100
Tracktion/tracktion_engine#473 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 56/100
Tracktion/tracktion_engine#460 ·
Maintainers usually reply within 1 day
All issues in Tracktion/tracktion_engine
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
eclipse-score/inc_someip_gateway#356 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
HarperFast/rocksdb-js#945 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
Maintainers usually reply within 1 day