Skip to content
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

Deck/Spinny Coverart is randomly not read #11131

Closed
JoergAtGithub opened this issue Dec 17, 2022 · 35 comments · Fixed by #12103
Closed

Deck/Spinny Coverart is randomly not read #11131

JoergAtGithub opened this issue Dec 17, 2022 · 35 comments · Fixed by #12103

Comments

@JoergAtGithub
Copy link
Member

JoergAtGithub commented Dec 17, 2022

Bug Description

If I load a track into a deck, the CoveArt is sometimes displayed, and sometimes not. This doesn't depend on the track, it can be reproduced for any track after some retries.
This doesn't happen with 2.3, only with Main.

In the --developer output I see in cases without loaded coverart:

info [Thread (pooled)] MetadataSourceTagLib - No track metadata or cover art found in file "C:/Users/Joerg.WORLDWARTWEB/Music/Der Dritte Raum - Hale Bopp (original mix).mp3" with type 3
debug [Thread (pooled)] SoundSourceProxy - SoundSourceProvider "MAD: MPEG Audio Decoder" created a SoundSource for file "file:///C:/Users/Joerg.WORLDWARTWEB/Music/Der Dritte Raum - Hale Bopp (original mix).mp3" of type "mp3"
debug [AnalyzerThread 0 #1] AnalyzerThread - Dequeued next track 140
debug [Thread (pooled)] SoundSourceProxy - SoundSourceProvider "MAD: MPEG Audio Decoder" created a SoundSource for file "file:///C:/Users/Joerg.WORLDWARTWEB/Music/Der Dritte Raum - Hale Bopp (original mix).mp3" of type "mp3"
warning [Thread (pooled)] TagLib - Cannot read audio properties from inaccessible/unreadable/invalid file:
debug [AnalyzerThread 0 #1] AnalyzerThread - Analyzing QFileInfo(C:\Users\Joerg.WORLDWARTWEB\Music\Der Dritte Raum - Hale Bopp (original mix).mp3)
info [Thread (pooled)] MetadataSourceTagLib - No track metadata or cover art found in file "C:/Users/Joerg.WORLDWARTWEB/Music/Der Dritte Raum - Hale Bopp (original mix).mp3" with type 3
warning [Thread (pooled)] TagLib - Cannot read audio properties from inaccessible/unreadable/invalid file:
info [Thread (pooled)] MetadataSourceTagLib - No track metadata or cover art found in file "C:/Users/Joerg.WORLDWARTWEB/Music/Der Dritte Raum - Hale Bopp (original mix).mp3" with type 3

Version

2.4

OS

Windows7 & Windows11

@JoergAtGithub JoergAtGithub added this to the 2.4.0 milestone May 15, 2023
@JoergAtGithub
Copy link
Member Author

I noticed, that after switching the Skin or the Color scheme the cover art is always drawn correct for all decks.

@JoergAtGithub JoergAtGithub changed the title Coverart is randomly not read Deck/Spinny Coverart is randomly not read May 27, 2023
@JoergAtGithub
Copy link
Member Author

Note, that the Library Coverart is always shown - this bug affects only the Deck/Spinny Coverart

@ronso0
Copy link
Member

ronso0 commented May 27, 2023

Can you play the track if there's no cover?

@JoergAtGithub
Copy link
Member Author

Yes, everything works, just the Coverart image in the Deck/Spinny is randomly ~50% missing

@JoergAtGithub
Copy link
Member Author

This still occurs with any 2.4 build for me, while 2.3.5 work flawless. Occurs on two laptops with Win7 and Win11.

@ronso0
Copy link
Member

ronso0 commented Jul 21, 2023

Do you see any related warnings when loading a track?
Is the default cover shown? I mean the one set by the skin, not the global default.
This is the Tango default
image

@JoergAtGithub
Copy link
Member Author

1.) The only messages about cover art are these, which I posted in the descriptions. But I'm not sure if these are related here.

2.) The default cover is shown if no CoverArt is displayed

3.) When I switch skins in the preferences, the CoverArt appears for all decks where a track is loaded
=> The bug only happens at loading tracks into a deck. No difference if I do this by double-click, drag and drop or controller mapping.

Any idea how to debug this?

@ronso0
Copy link
Member

ronso0 commented Jul 21, 2023

Maybe an issue in CoverInfoGuesser().guessAndSetCoverInfoForTrack()?
Or check what happens in CoverArtCache::requestTrackCover() when you load a track?

@JoergAtGithub
Copy link
Member Author

CoverInfoGuesser().guessAndSetCoverInfoForTrack() is not executed when I load a track into a deck.

If I set a breakpoint in Line 70 of

void CoverArtCache::requestTrackCover(
const QObject* pRequestor,
const TrackPointer& pTrack) {
VERIFY_OR_DEBUG_ASSERT(pTrack) {
return;
}
requestCover(
pRequestor,
pTrack->getCoverInfoWithLocation(),
pTrack);
}

it fails always. I guess this is some kind of race condition.

@JoergAtGithub
Copy link
Member Author

CoverArtCache::requestTrackCover is always executed, the breakpoint always triggers, for cases where the CoverArt is loaded and for the cases, where it does not.
I've difficulties to debug this further. The CoverArtCache code is difficult to understand - and it's very hot code - very often executed by the library code. Breakpoints are only usable with additional conditions.
But I wonder if the root cause might be in the Spinny widget code instead.

@ronso0
Copy link
Member

ronso0 commented Aug 13, 2023

I think you could inspect the cover data in slotCoverFound.

@JoergAtGithub
Copy link
Member Author

I'm a step further. The following function is executed three times, when a track is loaded into a deck.
The first two times pixmap is alway NULL and it returns early. The third call differs in failure case, when the Coverart is not loaded, pixmap is NULL as well.

QPixmap WSpinnyBase::scaleToSize(const QPixmap& pixmap) const {
if (pixmap.isNull()) {
return QPixmap();
}
QPixmap scaled = pixmap.scaled(size() * devicePixelRatioF(),
Qt::KeepAspectRatio,
Qt::SmoothTransformation);
scaled.setDevicePixelRatio(devicePixelRatioF());
return scaled;
}

@JoergAtGithub
Copy link
Member Author

In case of not displayed CoverArt, WSpinnyBase::slotCoverFound is called with an empty pixmap.

@m0dB
Copy link
Contributor

m0dB commented Aug 16, 2023

I'd like to reproduce this but on macOS I've never seen this happen. Are there any specific steps to make this more likely to occur?

@JoergAtGithub
Copy link
Member Author

This occurs on Windows most of the times (roughly 90% of the track loads the CoverArt in the spinnies is missing). I don't need to do anything special.
The other way around I can say, what always work to display the CoverArt: If I switch the skin in the preferences while tracks are loaded into the decks, all decks will show the CoverArt after the skin change - until I load a new track to the deck, than the problem occurs again.

@m0dB
Copy link
Contributor

m0dB commented Aug 18, 2023

I don't think this will make a difference, but just in case, can you check with the old spinny implementation by returned a new WSpinny instead of a new WSpinnyGLSL in LegacySkinParser::parseSpinny ?

@m0dB
Copy link
Contributor

m0dB commented Aug 18, 2023

As running this in the debugger is tricky, you could add some more logging in the CoverArtCache and WSpinnyBase code to see where the difference between successful and null pixmaps occurs exactly.

Btw, while looking at the code, this std::move seems very strange to me.

271         emit coverFound(
272                 res.pRequestor,
273                 std::move(res.coverArt),
274                 pixmap,
275                 res.requestedCacheKey,
276                 res.coverInfoUpdated);

@Swiftb0y
Copy link
Member

Btw, while looking at the code, this std::move seems very strange to me.

Good catch, but since the signal parameters just take/pass lvalue refs, I'm pretty sure it doesn't do anything.

@JoergAtGithub
Copy link
Member Author

Btw, while looking at the code, this std::move seems very strange to me.

Good catch, but since the signal parameters just take/pass lvalue refs, I'm pretty sure it doesn't do anything.

Yes, I tried to change this already, but it doesn't fix this bug.

@m0dB
Copy link
Contributor

m0dB commented Aug 28, 2023

Could you add a lot of logging in all the functions involved and share the logs of a cover does and a cover that doesn't load?

@JoergAtGithub
Copy link
Member Author

I added a debug statement after each emit coverFound. See the log below.

Only the last loaded track showed the CoverArt in the Spinny.txt

@daschuer daschuer mentioned this issue Aug 30, 2023
@JoergAtGithub
Copy link
Member Author

Maybe related test fails are in the Qt6 CI builds: https://github.com/mixxxdj/mixxx/actions/runs/6021023487/job/16343828636

146/764 Test #146: CoverArtCacheTest.loadCoverFromFileRelative ................................................***Failed    0.21 sec
Note: Google Test filter = CoverArtCacheTest.loadCoverFromFileRelative
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from CoverArtCacheTest
[ RUN      ] CoverArtCacheTest.loadCoverFromFileRelative
info [0x251a6b67f20] DbConnection - Available drivers for database connections: QList("QSQLITE")
info [0x251a6b67f20] DbConnectionPool - Cloned thread-local database connection "MIXXX-1" QSqlDatabase(driver="QSQLITE", database="file:///C:/Users/runneradmin/AppData/Local/Temp/mixxx-test-OzeokI/mixxxdb.sqlite?mode=memory&cache=shared", host="", port=-1, user="mixxx", open=true)
info [0x251a6b67f20] SoundSourceSndFile - Disabling OGG decoding for "libsndfile-1.2.0"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "aac"
info [0x251a6b67f20] SoundSourceProxy - 4 (higher) : "Microsoft Media Foundation"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "aiff"
info [0x251a6b67f20] SoundSourceProxy - 3 (default) : "libsndfile"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "caf"
info [0x251a6b67f20] SoundSourceProxy - 2 (lower) : "libsndfile"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "flac"
info [0x251a6b67f20] SoundSourceProxy - 4 (higher) : "Xiph.org libFLAC"
info [0x251a6b67f20] SoundSourceProxy - 2 (lower) : "libsndfile"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "it"
info [0x251a6b67f20] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "m4a"
info [0x251a6b67f20] SoundSourceProxy - 4 (higher) : "Microsoft Media Foundation"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "mod"
info [0x251a6b67f20] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "mp3"
info [0x251a6b67f20] SoundSourceProxy - 3 (default) : "MAD: MPEG Audio Decoder"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "mp4"
info [0x251a6b67f20] SoundSourceProxy - 4 (higher) : "Microsoft Media Foundation"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "ogg"
info [0x251a6b67f20] SoundSourceProxy - 4 (higher) : "Xiph.org OggVorbis"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "okt"
info [0x251a6b67f20] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "opus"
info [0x251a6b67f20] SoundSourceProxy - 4 (higher) : "Xiph.org libopusfile"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "s3m"
info [0x251a6b67f20] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "stm"
info [0x251a6b67f20] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "wav"
info [0x251a6b67f20] SoundSourceProxy - 3 (default) : "libsndfile"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "wv"
info [0x251a6b67f20] SoundSourceProxy - 4 (higher) : "WavPack"
info [0x251a6b67f20] SoundSourceProxy - SoundSource providers for file type "xm"
info [0x251a6b67f20] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x251a6b67f20] SettingsDAO - Failed to prepare query: Returning default value "" for "mixxx.schema.version"
info [0x251a6b67f20] SettingsDAO - Failed to prepare query: Returning default value "" for "mixxx.schema.last_used_version"
info [0x251a6b67f20] SettingsDAO - Failed to prepare query: Returning default value "" for "mixxx.schema.version"
info [0x251a6b67f20] SchemaManager - Upgrading database schema from version 0 to version 39
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 1 : "The base schema for the Mixxx SQLITE database."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 1
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 2 : "Add a header_parsed integer column to the library to indicate when a\n      track's tags have been parsed."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 2
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 3 : "Change the location column to be a an integer. Change comment to be\n      varchar(256) and album/artist/title to be varchar(64)."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 3
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 4 : "Add file type column."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 4
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 5 : "Add needs_verification column to library hashes table."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 5
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 6 : "Added a ReplayGain Column."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 6
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 7 : "Add timesplayed and rating column. Reset header state."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 7
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 8 : "Added iTunes tables"
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 8
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 9 : "Tables for Traktor library feature"
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 9
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 10 : "Playlist and crate locks"
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 10
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 11 : "Tables for Rhythmbox library feature"
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 11
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 12 : "Add beats column to library table."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 12
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 13 : "Add position column to Rhythmbox, iTunes, and Traktor playlist tables."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 13
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 14 : "Add composer column to library table."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 14
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 15 : "Add datetime_added to playlists tracks."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 15
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 16 : "Add track analysis table."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 16
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 17 : "Add columns for BPM lock and a sub-version string for beats."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 17
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 18 : "Add keys column to library table."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 18
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 19 : "Add key_id column to library table for caching the global key. Default to\n      INVALID."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 19
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 20 : "Crates in AutoDJ queue (for automated random-track selection)."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 20
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 21 : "Add grouping and album_artist column to library table."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 21
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 22 : "Add grouping and album_artist column to itunes_library table."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 22
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 23 : "Add directories table"
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 23
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 24 : "Add cover art support. Default source is UNKNOWN and default type is NONE."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 24
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 25 : "Add full replay gain support including peak amplitude. The default\n      value for the peak amplitude is \"undefined\", represented by any\n      negative value. The internal constant for \"undefined\" is -1.0."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 25
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 26 : "Add new column \"tracktotal\" column that stores the total number of\n      tracks as a string. The total number of tracks will be reloaded\n      from the corresponding file upon first access when encountering\n      the default value."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 26
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 27 : "Add cue color support. Default color is #FF0000."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 27
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 28 : "Reset replay gain info for all FLAC files after fixing a decoding bug in version 2.1.0."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 28
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 29 : "This was used in the development of 2.3 to track whether cues were placed\n      manually or automatically. However, this turned out to be unnecessary.\n      This version is left as a placeholder so users who were using the master\n      branch will have their database updated correctly for the subsequent\n      schema change."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 29
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 30 : "This was used in the development of 2.3 for permanent Rekordbox\n      library feature tables, which have since been replaced by\n      dynamic temporary tables, similar to the Serato library\n      feature."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 30
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 31 : "Add track color support."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 31
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 32 : "Convert the PredefinedColor ID to the actual RGB value."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 32
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 33 : "Add cover art image digest and (background) color"
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 33
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 34 : "Add indexes for tracks in playlists and crates"
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 34
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 35 : "Add last_played_at column to library table"
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 35
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 36 : "Populate last_played_at column in library table from play history"
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 36
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 37 : "Add source_synchronized_ms column to library table"
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 37
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 38 : "Fix 0/NULL issue after upgrade to schema version 37."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 38
info [0x251a6b67f20] SchemaManager - Upgrading database schema to version 39 : "Replace file type \"aif\" with \"aiff\"."
info [0x251a6b67f20] SchemaManager - Upgraded database schema to version 39
info [0x251a6b67f20] GlobalTrackCache - Creating instance
info [0x251a6b67f20] TrackCollection - Connecting database
info [0x251a6b67f20] TrackCollectionManager - External collections are disabled in test mode
info [0x251a6b67f20] TrackCollectionManager - Library scanner is disabled in test mode
D:\a\mixxx\mixxx\src\test\coverartcache_test.cpp(43): error: Value of: img.isNull()
  Actual: true
Expected: false
info [0x251a6b67f20] TrackCollection - Disconnecting database
info [0x251a6b67f20] GlobalTrackCache - Destroying instance
[  FAILED  ] CoverArtCacheTest.loadCoverFromFileRelative (30 ms)
[----------] 1 test from CoverArtCacheTest (30 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (30 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] CoverArtCacheTest.loadCoverFromFileRelative

 1 FAILED TEST

        Start 147: CoverArtCacheTest.loadCoverFromFileAbsolute
147/764 Test #147: CoverArtCacheTest.loadCoverFromFileAbsolute ................................................***Failed    0.22 sec
Note: Google Test filter = CoverArtCacheTest.loadCoverFromFileAbsolute
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from CoverArtCacheTest
[ RUN      ] CoverArtCacheTest.loadCoverFromFileAbsolute
info [0x29505be7b50] DbConnection - Available drivers for database connections: QList("QSQLITE")
info [0x29505be7b50] DbConnectionPool - Cloned thread-local database connection "MIXXX-1" QSqlDatabase(driver="QSQLITE", database="file:///C:/Users/runneradmin/AppData/Local/Temp/mixxx-test-spriPr/mixxxdb.sqlite?mode=memory&cache=shared", host="", port=-1, user="mixxx", open=true)
info [0x29505be7b50] SoundSourceSndFile - Disabling OGG decoding for "libsndfile-1.2.0"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "aac"
info [0x29505be7b50] SoundSourceProxy - 4 (higher) : "Microsoft Media Foundation"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "aiff"
info [0x29505be7b50] SoundSourceProxy - 3 (default) : "libsndfile"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "caf"
info [0x29505be7b50] SoundSourceProxy - 2 (lower) : "libsndfile"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "flac"
info [0x29505be7b50] SoundSourceProxy - 4 (higher) : "Xiph.org libFLAC"
info [0x29505be7b50] SoundSourceProxy - 2 (lower) : "libsndfile"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "it"
info [0x29505be7b50] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "m4a"
info [0x29505be7b50] SoundSourceProxy - 4 (higher) : "Microsoft Media Foundation"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "mod"
info [0x29505be7b50] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "mp3"
info [0x29505be7b50] SoundSourceProxy - 3 (default) : "MAD: MPEG Audio Decoder"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "mp4"
info [0x29505be7b50] SoundSourceProxy - 4 (higher) : "Microsoft Media Foundation"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "ogg"
info [0x29505be7b50] SoundSourceProxy - 4 (higher) : "Xiph.org OggVorbis"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "okt"
info [0x29505be7b50] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "opus"
info [0x29505be7b50] SoundSourceProxy - 4 (higher) : "Xiph.org libopusfile"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "s3m"
info [0x29505be7b50] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "stm"
info [0x29505be7b50] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "wav"
info [0x29505be7b50] SoundSourceProxy - 3 (default) : "libsndfile"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "wv"
info [0x29505be7b50] SoundSourceProxy - 4 (higher) : "WavPack"
info [0x29505be7b50] SoundSourceProxy - SoundSource providers for file type "xm"
info [0x29505be7b50] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x29505be7b50] SettingsDAO - Failed to prepare query: Returning default value "" for "mixxx.schema.version"
info [0x29505be7b50] SettingsDAO - Failed to prepare query: Returning default value "" for "mixxx.schema.last_used_version"
info [0x29505be7b50] SettingsDAO - Failed to prepare query: Returning default value "" for "mixxx.schema.version"
info [0x29505be7b50] SchemaManager - Upgrading database schema from version 0 to version 39
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 1 : "The base schema for the Mixxx SQLITE database."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 1
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 2 : "Add a header_parsed integer column to the library to indicate when a\n      track's tags have been parsed."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 2
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 3 : "Change the location column to be a an integer. Change comment to be\n      varchar(256) and album/artist/title to be varchar(64)."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 3
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 4 : "Add file type column."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 4
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 5 : "Add needs_verification column to library hashes table."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 5
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 6 : "Added a ReplayGain Column."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 6
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 7 : "Add timesplayed and rating column. Reset header state."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 7
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 8 : "Added iTunes tables"
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 8
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 9 : "Tables for Traktor library feature"
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 9
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 10 : "Playlist and crate locks"
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 10
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 11 : "Tables for Rhythmbox library feature"
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 11
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 12 : "Add beats column to library table."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 12
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 13 : "Add position column to Rhythmbox, iTunes, and Traktor playlist tables."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 13
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 14 : "Add composer column to library table."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 14
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 15 : "Add datetime_added to playlists tracks."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 15
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 16 : "Add track analysis table."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 16
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 17 : "Add columns for BPM lock and a sub-version string for beats."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 17
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 18 : "Add keys column to library table."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 18
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 19 : "Add key_id column to library table for caching the global key. Default to\n      INVALID."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 19
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 20 : "Crates in AutoDJ queue (for automated random-track selection)."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 20
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 21 : "Add grouping and album_artist column to library table."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 21
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 22 : "Add grouping and album_artist column to itunes_library table."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 22
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 23 : "Add directories table"
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 23
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 24 : "Add cover art support. Default source is UNKNOWN and default type is NONE."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 24
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 25 : "Add full replay gain support including peak amplitude. The default\n      value for the peak amplitude is \"undefined\", represented by any\n      negative value. The internal constant for \"undefined\" is -1.0."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 25
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 26 : "Add new column \"tracktotal\" column that stores the total number of\n      tracks as a string. The total number of tracks will be reloaded\n      from the corresponding file upon first access when encountering\n      the default value."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 26
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 27 : "Add cue color support. Default color is #FF0000."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 27
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 28 : "Reset replay gain info for all FLAC files after fixing a decoding bug in version 2.1.0."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 28
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 29 : "This was used in the development of 2.3 to track whether cues were placed\n      manually or automatically. However, this turned out to be unnecessary.\n      This version is left as a placeholder so users who were using the master\n      branch will have their database updated correctly for the subsequent\n      schema change."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 29
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 30 : "This was used in the development of 2.3 for permanent Rekordbox\n      library feature tables, which have since been replaced by\n      dynamic temporary tables, similar to the Serato library\n      feature."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 30
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 31 : "Add track color support."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 31
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 32 : "Convert the PredefinedColor ID to the actual RGB value."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 32
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 33 : "Add cover art image digest and (background) color"
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 33
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 34 : "Add indexes for tracks in playlists and crates"
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 34
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 35 : "Add last_played_at column to library table"
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 35
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 36 : "Populate last_played_at column in library table from play history"
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 36
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 37 : "Add source_synchronized_ms column to library table"
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 37
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 38 : "Fix 0/NULL issue after upgrade to schema version 37."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 38
info [0x29505be7b50] SchemaManager - Upgrading database schema to version 39 : "Replace file type \"aif\" with \"aiff\"."
info [0x29505be7b50] SchemaManager - Upgraded database schema to version 39
info [0x29505be7b50] GlobalTrackCache - Creating instance
info [0x29505be7b50] TrackCollection - Connecting database
info [0x29505be7b50] TrackCollectionManager - External collections are disabled in test mode
info [0x29505be7b50] TrackCollectionManager - Library scanner is disabled in test mode
D:\a\mixxx\mixxx\src\test\coverartcache_test.cpp(43): error: Value of: img.isNull()
  Actual: true
Expected: false
info [0x29505be7b50] TrackCollection - Disconnecting database
info [0x29505be7b50] GlobalTrackCache - Destroying instance
[  FAILED  ] CoverArtCacheTest.loadCoverFromFileAbsolute (30 ms)
[----------] 1 test from CoverArtCacheTest (30 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (30 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] CoverArtCacheTest.loadCoverFromFileAbsolute

 1 FAILED TEST

        Start 148: CoverArtUtilTest.extractEmbeddedCover
148/764 Test #148: CoverArtUtilTest.extractEmbeddedCover ......................................................***Failed    0.24 sec
Note: Google Test filter = CoverArtUtilTest.extractEmbeddedCover
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from CoverArtUtilTest
[ RUN      ] CoverArtUtilTest.extractEmbeddedCover
info [0x19ff9f0aa30] DbConnection - Available drivers for database connections: QList("QSQLITE")
info [0x19ff9f0aa30] DbConnectionPool - Cloned thread-local database connection "MIXXX-1" QSqlDatabase(driver="QSQLITE", database="file:///C:/Users/runneradmin/AppData/Local/Temp/mixxx-test-XxDUTP/mixxxdb.sqlite?mode=memory&cache=shared", host="", port=-1, user="mixxx", open=true)
info [0x19ff9f0aa30] SoundSourceSndFile - Disabling OGG decoding for "libsndfile-1.2.0"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "aac"
info [0x19ff9f0aa30] SoundSourceProxy - 4 (higher) : "Microsoft Media Foundation"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "aiff"
info [0x19ff9f0aa30] SoundSourceProxy - 3 (default) : "libsndfile"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "caf"
info [0x19ff9f0aa30] SoundSourceProxy - 2 (lower) : "libsndfile"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "flac"
info [0x19ff9f0aa30] SoundSourceProxy - 4 (higher) : "Xiph.org libFLAC"
info [0x19ff9f0aa30] SoundSourceProxy - 2 (lower) : "libsndfile"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "it"
info [0x19ff9f0aa30] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "m4a"
info [0x19ff9f0aa30] SoundSourceProxy - 4 (higher) : "Microsoft Media Foundation"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "mod"
info [0x19ff9f0aa30] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "mp3"
info [0x19ff9f0aa30] SoundSourceProxy - 3 (default) : "MAD: MPEG Audio Decoder"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "mp4"
info [0x19ff9f0aa30] SoundSourceProxy - 4 (higher) : "Microsoft Media Foundation"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "ogg"
info [0x19ff9f0aa30] SoundSourceProxy - 4 (higher) : "Xiph.org OggVorbis"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "okt"
info [0x19ff9f0aa30] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "opus"
info [0x19ff9f0aa30] SoundSourceProxy - 4 (higher) : "Xiph.org libopusfile"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "s3m"
info [0x19ff9f0aa30] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "stm"
info [0x19ff9f0aa30] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "wav"
info [0x19ff9f0aa30] SoundSourceProxy - 3 (default) : "libsndfile"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "wv"
info [0x19ff9f0aa30] SoundSourceProxy - 4 (higher) : "WavPack"
info [0x19ff9f0aa30] SoundSourceProxy - SoundSource providers for file type "xm"
info [0x19ff9f0aa30] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x19ff9f0aa30] SettingsDAO - Failed to prepare query: Returning default value "" for "mixxx.schema.version"
info [0x19ff9f0aa30] SettingsDAO - Failed to prepare query: Returning default value "" for "mixxx.schema.last_used_version"
info [0x19ff9f0aa30] SettingsDAO - Failed to prepare query: Returning default value "" for "mixxx.schema.version"
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema from version 0 to version 39
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 1 : "The base schema for the Mixxx SQLITE database."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 1
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 2 : "Add a header_parsed integer column to the library to indicate when a\n      track's tags have been parsed."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 2
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 3 : "Change the location column to be a an integer. Change comment to be\n      varchar(256) and album/artist/title to be varchar(64)."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 3
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 4 : "Add file type column."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 4
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 5 : "Add needs_verification column to library hashes table."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 5
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 6 : "Added a ReplayGain Column."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 6
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 7 : "Add timesplayed and rating column. Reset header state."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 7
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 8 : "Added iTunes tables"
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 8
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 9 : "Tables for Traktor library feature"
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 9
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 10 : "Playlist and crate locks"
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 10
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 11 : "Tables for Rhythmbox library feature"
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 11
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 12 : "Add beats column to library table."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 12
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 13 : "Add position column to Rhythmbox, iTunes, and Traktor playlist tables."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 13
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 14 : "Add composer column to library table."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 14
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 15 : "Add datetime_added to playlists tracks."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 15
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 16 : "Add track analysis table."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 16
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 17 : "Add columns for BPM lock and a sub-version string for beats."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 17
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 18 : "Add keys column to library table."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 18
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 19 : "Add key_id column to library table for caching the global key. Default to\n      INVALID."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 19
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 20 : "Crates in AutoDJ queue (for automated random-track selection)."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 20
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 21 : "Add grouping and album_artist column to library table."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 21
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 22 : "Add grouping and album_artist column to itunes_library table."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 22
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 23 : "Add directories table"
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 23
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 24 : "Add cover art support. Default source is UNKNOWN and default type is NONE."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 24
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 25 : "Add full replay gain support including peak amplitude. The default\n      value for the peak amplitude is \"undefined\", represented by any\n      negative value. The internal constant for \"undefined\" is -1.0."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 25
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 26 : "Add new column \"tracktotal\" column that stores the total number of\n      tracks as a string. The total number of tracks will be reloaded\n      from the corresponding file upon first access when encountering\n      the default value."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 26
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 27 : "Add cue color support. Default color is #FF0000."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 27
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 28 : "Reset replay gain info for all FLAC files after fixing a decoding bug in version 2.1.0."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 28
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 29 : "This was used in the development of 2.3 to track whether cues were placed\n      manually or automatically. However, this turned out to be unnecessary.\n      This version is left as a placeholder so users who were using the master\n      branch will have their database updated correctly for the subsequent\n      schema change."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 29
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 30 : "This was used in the development of 2.3 for permanent Rekordbox\n      library feature tables, which have since been replaced by\n      dynamic temporary tables, similar to the Serato library\n      feature."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 30
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 31 : "Add track color support."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 31
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 32 : "Convert the PredefinedColor ID to the actual RGB value."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 32
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 33 : "Add cover art image digest and (background) color"
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 33
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 34 : "Add indexes for tracks in playlists and crates"
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 34
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 35 : "Add last_played_at column to library table"
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 35
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 36 : "Populate last_played_at column in library table from play history"
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 36
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 37 : "Add source_synchronized_ms column to library table"
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 37
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 38 : "Fix 0/NULL issue after upgrade to schema version 37."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 38
info [0x19ff9f0aa30] SchemaManager - Upgrading database schema to version 39 : "Replace file type \"aif\" with \"aiff\"."
info [0x19ff9f0aa30] SchemaManager - Upgraded database schema to version 39
info [0x19ff9f0aa30] GlobalTrackCache - Creating instance
info [0x19ff9f0aa30] TrackCollection - Connecting database
info [0x19ff9f0aa30] TrackCollectionManager - External collections are disabled in test mode
info [0x19ff9f0aa30] TrackCollectionManager - Library scanner is disabled in test mode
warning [0x19ff9f0aa30] Using type "m4a" instead of "m4v" according to the detected MIME type QMimeType("audio/mp4") of file "D:/a/mixxx/mixxx/src/test/id3-test-data/cover-test.m4v"
warning [0x19ff9f0aa30] Using type "m4a" instead of "m4v" according to the detected MIME type QMimeType("audio/mp4") of file "D:/a/mixxx/mixxx/src/test/id3-test-data/cover-test.m4v"
warning [0x19ff9f0aa30] TagLib - Failed to load image from ID3v2 APIC frame of type 3
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(23): error: Expected equality of these values:
  expectedImage
    Which is: 24-byte object <B0-A7 06-49 FC-7F 00-00 00-00 B3-47 FC-7F 00-00 00-00 00-00 00-00 00-00>
  actualImage
    Which is: 24-byte object <B0-A7 06-49 FC-7F 00-00 00-00 10-73 F6-7F 00-00 F0-65 F7-F9 9F-01 00-00>
info [0x19ff9f0aa30] TrackCollection - Disconnecting database
info [0x19ff9f0aa30] GlobalTrackCache - Destroying instance
[  FAILED  ] CoverArtUtilTest.extractEmbeddedCover (58 ms)
[----------] 1 test from CoverArtUtilTest (58 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (58 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] CoverArtUtilTest.extractEmbeddedCover

 1 FAILED TEST

        Start 149: CoverArtUtilTest.searchImage
149/764 Test #149: CoverArtUtilTest.searchImage ...............................................................***Failed    0.25 sec
Note: Google Test filter = CoverArtUtilTest.searchImage
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from CoverArtUtilTest
[ RUN      ] CoverArtUtilTest.searchImage
info [0x23f9ed3bc30] DbConnection - Available drivers for database connections: QList("QSQLITE")
info [0x23f9ed3bc30] DbConnectionPool - Cloned thread-local database connection "MIXXX-1" QSqlDatabase(driver="QSQLITE", database="file:///C:/Users/runneradmin/AppData/Local/Temp/mixxx-test-rOCATG/mixxxdb.sqlite?mode=memory&cache=shared", host="", port=-1, user="mixxx", open=true)
info [0x23f9ed3bc30] SoundSourceSndFile - Disabling OGG decoding for "libsndfile-1.2.0"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "aac"
info [0x23f9ed3bc30] SoundSourceProxy - 4 (higher) : "Microsoft Media Foundation"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "aiff"
info [0x23f9ed3bc30] SoundSourceProxy - 3 (default) : "libsndfile"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "caf"
info [0x23f9ed3bc30] SoundSourceProxy - 2 (lower) : "libsndfile"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "flac"
info [0x23f9ed3bc30] SoundSourceProxy - 4 (higher) : "Xiph.org libFLAC"
info [0x23f9ed3bc30] SoundSourceProxy - 2 (lower) : "libsndfile"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "it"
info [0x23f9ed3bc30] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "m4a"
info [0x23f9ed3bc30] SoundSourceProxy - 4 (higher) : "Microsoft Media Foundation"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "mod"
info [0x23f9ed3bc30] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "mp3"
info [0x23f9ed3bc30] SoundSourceProxy - 3 (default) : "MAD: MPEG Audio Decoder"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "mp4"
info [0x23f9ed3bc30] SoundSourceProxy - 4 (higher) : "Microsoft Media Foundation"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "ogg"
info [0x23f9ed3bc30] SoundSourceProxy - 4 (higher) : "Xiph.org OggVorbis"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "okt"
info [0x23f9ed3bc30] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "opus"
info [0x23f9ed3bc30] SoundSourceProxy - 4 (higher) : "Xiph.org libopusfile"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "s3m"
info [0x23f9ed3bc30] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "stm"
info [0x23f9ed3bc30] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "wav"
info [0x23f9ed3bc30] SoundSourceProxy - 3 (default) : "libsndfile"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "wv"
info [0x23f9ed3bc30] SoundSourceProxy - 4 (higher) : "WavPack"
info [0x23f9ed3bc30] SoundSourceProxy - SoundSource providers for file type "xm"
info [0x23f9ed3bc30] SoundSourceProxy - 3 (default) : "MODPlug"
info [0x23f9ed3bc30] SettingsDAO - Failed to prepare query: Returning default value "" for "mixxx.schema.version"
info [0x23f9ed3bc30] SettingsDAO - Failed to prepare query: Returning default value "" for "mixxx.schema.last_used_version"
info [0x23f9ed3bc30] SettingsDAO - Failed to prepare query: Returning default value "" for "mixxx.schema.version"
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema from version 0 to version 39
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 1 : "The base schema for the Mixxx SQLITE database."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 1
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 2 : "Add a header_parsed integer column to the library to indicate when a\n      track's tags have been parsed."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 2
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 3 : "Change the location column to be a an integer. Change comment to be\n      varchar(256) and album/artist/title to be varchar(64)."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 3
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 4 : "Add file type column."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 4
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 5 : "Add needs_verification column to library hashes table."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 5
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 6 : "Added a ReplayGain Column."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 6
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 7 : "Add timesplayed and rating column. Reset header state."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 7
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 8 : "Added iTunes tables"
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 8
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 9 : "Tables for Traktor library feature"
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 9
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 10 : "Playlist and crate locks"
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 10
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 11 : "Tables for Rhythmbox library feature"
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 11
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 12 : "Add beats column to library table."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 12
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 13 : "Add position column to Rhythmbox, iTunes, and Traktor playlist tables."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 13
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 14 : "Add composer column to library table."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 14
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 15 : "Add datetime_added to playlists tracks."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 15
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 16 : "Add track analysis table."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 16
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 17 : "Add columns for BPM lock and a sub-version string for beats."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 17
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 18 : "Add keys column to library table."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 18
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 19 : "Add key_id column to library table for caching the global key. Default to\n      INVALID."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 19
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 20 : "Crates in AutoDJ queue (for automated random-track selection)."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 20
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 21 : "Add grouping and album_artist column to library table."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 21
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 22 : "Add grouping and album_artist column to itunes_library table."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 22
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 23 : "Add directories table"
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 23
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 24 : "Add cover art support. Default source is UNKNOWN and default type is NONE."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 24
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 25 : "Add full replay gain support including peak amplitude. The default\n      value for the peak amplitude is \"undefined\", represented by any\n      negative value. The internal constant for \"undefined\" is -1.0."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 25
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 26 : "Add new column \"tracktotal\" column that stores the total number of\n      tracks as a string. The total number of tracks will be reloaded\n      from the corresponding file upon first access when encountering\n      the default value."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 26
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 27 : "Add cue color support. Default color is #FF0000."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 27
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 28 : "Reset replay gain info for all FLAC files after fixing a decoding bug in version 2.1.0."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 28
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 29 : "This was used in the development of 2.3 to track whether cues were placed\n      manually or automatically. However, this turned out to be unnecessary.\n      This version is left as a placeholder so users who were using the master\n      branch will have their database updated correctly for the subsequent\n      schema change."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 29
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 30 : "This was used in the development of 2.3 for permanent Rekordbox\n      library feature tables, which have since been replaced by\n      dynamic temporary tables, similar to the Serato library\n      feature."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 30
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 31 : "Add track color support."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 31
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 32 : "Convert the PredefinedColor ID to the actual RGB value."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 32
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 33 : "Add cover art image digest and (background) color"
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 33
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 34 : "Add indexes for tracks in playlists and crates"
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 34
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 35 : "Add last_played_at column to library table"
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 35
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 36 : "Populate last_played_at column in library table from play history"
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 36
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 37 : "Add source_synchronized_ms column to library table"
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 37
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 38 : "Fix 0/NULL issue after upgrade to schema version 37."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 38
info [0x23f9ed3bc30] SchemaManager - Upgrading database schema to version 39 : "Replace file type \"aif\" with \"aiff\"."
info [0x23f9ed3bc30] SchemaManager - Upgraded database schema to version 39
info [0x23f9ed3bc30] GlobalTrackCache - Creating instance
info [0x23f9ed3bc30] TrackCollection - Connecting database
info [0x23f9ed3bc30] TrackCollectionManager - External collections are disabled in test mode
info [0x23f9ed3bc30] TrackCollectionManager - Library scanner is disabled in test mode
info [0x23f9ed3bc30] SoundSourceProxy - Parsing missing artist/title from file name: "D:/a/mixxx/mixxx/src/test/id3-test-data/cover-test-png.mp3"
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(169): error: Value of: img.save(cLoc_foo, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(177): error: Expected equality of these values:
  expected2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 02-00 00-00 A8-E5 EF-94 00-00 00-00 40-A7 A3-A3 3F-02 00-00 50-A7 A3-A3 3F-02 00-00 07-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 C6-9E 3F-02 00-00>
  res2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 00-00 00-00 0A-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 A6-81 FC-7F 00-00>
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(183): error: Value of: img.scaled(1000,1000).save(cLoc_big1, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(186): error: Value of: img.scaled(900,900).save(cLoc_big2, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(189): error: Value of: img.scaled(800,800).save(cLoc_big3, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(196): error: Value of: img.scaled(500,500).save(cLoc_filename, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(200): error: Value of: img.scaled(500,500).save(cLoc_albumName, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(204): error: Value of: img.scaled(400,400).save(cLoc_cover, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(208): error: Value of: img.scaled(300,300).save(cLoc_front, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(212): error: Value of: img.scaled(100,100).save(cLoc_album, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(216): error: Value of: img.scaled(100,100).save(cLoc_folder, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(220): error: Value of: img.scaled(10,10).save(cLoc_other1, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(224): error: Value of: img.scaled(10,10).save(cLoc_other2, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(249): error: Expected equality of these values:
  QtPrivate::asString(expected2.coverLocation).toLocal8Bit().constData()
    Which is: "cover-test.jpg"
  QtPrivate::asString(res2.coverLocation).toLocal8Bit().constData()
    Which is: ""
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(251): error: Expected equality of these values:
  expected2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 02-00 00-00 30-F2 EF-94 00-00 00-00 10-3D 9E-A3 3F-02 00-00 20-3D 9E-A3 3F-02 00-00 0E-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 C6-9E 3F-02 00-00>
  res2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 00-00 00-00 0A-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 A6-81 FC-7F 00-00>
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(249): error: Expected equality of these values:
  QtPrivate::asString(expected2.coverLocation).toLocal8Bit().constData()
    Which is: "album_name.jpg"
  QtPrivate::asString(res2.coverLocation).toLocal8Bit().constData()
    Which is: ""
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(251): error: Expected equality of these values:
  expected2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 02-00 00-00 30-F2 EF-94 00-00 00-00 90-3A 9E-A3 3F-02 00-00 A0-3A 9E-A3 3F-02 00-00 0E-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 C6-9E 3F-02 00-00>
  res2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 00-00 00-00 0A-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 A6-81 FC-7F 00-00>
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(249): error: Expected equality of these values:
  QtPrivate::asString(expected2.coverLocation).toLocal8Bit().constData()
    Which is: "cover.jpg"
  QtPrivate::asString(res2.coverLocation).toLocal8Bit().constData()
    Which is: ""
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(251): error: Expected equality of these values:
  expected2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 02-00 00-00 30-F2 EF-94 00-00 00-00 90-99 A2-A3 3F-02 00-00 A0-99 A2-A3 3F-02 00-00 09-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 C6-9E 3F-02 00-00>
  res2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 00-00 00-00 0A-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 A6-81 FC-7F 00-00>
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(249): error: Expected equality of these values:
  QtPrivate::asString(expected2.coverLocation).toLocal8Bit().constData()
    Which is: "front.jpg"
  QtPrivate::asString(res2.coverLocation).toLocal8Bit().constData()
    Which is: ""
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(251): error: Expected equality of these values:
  expected2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 02-00 00-00 30-F2 EF-94 00-00 00-00 30-99 A2-A3 3F-02 00-00 40-99 A2-A3 3F-02 00-00 09-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 C6-9E 3F-02 00-00>
  res2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 00-00 00-00 0A-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 A6-81 FC-7F 00-00>
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(249): error: Expected equality of these values:
  QtPrivate::asString(expected2.coverLocation).toLocal8Bit().constData()
    Which is: "album.jpg"
  QtPrivate::asString(res2.coverLocation).toLocal8Bit().constData()
    Which is: ""
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(251): error: Expected equality of these values:
  expected2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 02-00 00-00 30-F2 EF-94 00-00 00-00 B0-9A A2-A3 3F-02 00-00 C0-9A A2-A3 3F-02 00-00 09-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 C6-9E 3F-02 00-00>
  res2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 00-00 00-00 0A-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 A6-81 FC-7F 00-00>
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(249): error: Expected equality of these values:
  QtPrivate::asString(expected2.coverLocation).toLocal8Bit().constData()
    Which is: "folder.jpg"
  QtPrivate::asString(res2.coverLocation).toLocal8Bit().constData()
    Which is: ""
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(251): error: Expected equality of these values:
  expected2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 02-00 00-00 30-F2 EF-94 00-00 00-00 50-97 A2-A3 3F-02 00-00 60-97 A2-A3 3F-02 00-00 0A-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 C6-9E 3F-02 00-00>
  res2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 00-00 00-00 0A-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 A6-81 FC-7F 00-00>
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(249): error: Expected equality of these values:
  QtPrivate::asString(expected2.coverLocation).toLocal8Bit().constData()
    Which is: "other2.jpg"
  QtPrivate::asString(res2.coverLocation).toLocal8Bit().constData()
    Which is: ""
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(251): error: Expected equality of these values:
  expected2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 02-00 00-00 30-F2 EF-94 00-00 00-00 B0-9A A2-A3 3F-02 00-00 C0-9A A2-A3 3F-02 00-00 0A-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 C6-9E 3F-02 00-00>
  res2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 00-00 00-00 0A-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 A6-81 FC-7F 00-00>
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(264): error: Value of: img.scaled(200,200).save(cLoc_coverJPG, "JPG")
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(267): error: Value of: img.scaled(400,400).save(cLoc_coverjpg, "jpg")
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(275): error: Expected equality of these values:
  expected2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 02-00 00-00 A8-EA EF-94 00-00 00-00 20-94 A2-A3 3F-02 00-00 30-94 A2-A3 3F-02 00-00 09-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 C6-9E 3F-02 00-00>
  res2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 00-00 00-00 0A-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 A6-81 FC-7F 00-00>
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(286): error: Value of: img.save(cLoc_albumName, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(292): error: Expected equality of these values:
  expected2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 02-00 00-00 88-E5 EF-94 00-00 00-00 10-3D 9E-A3 3F-02 00-00 20-3D 9E-A3 3F-02 00-00 10-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 C6-9E 3F-02 00-00>
  res2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 00-00 00-00 0C-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 A6-81 FC-7F 00-00>
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(296): error: Value of: img.save(cLoc_filename, format)
  Actual: false
Expected: true
D:\a\mixxx\mixxx\src\test\coverartutils_test.cpp(303): error: Expected equality of these values:
  expected2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 02-00 00-00 70-E5 EF-94 00-00 00-00 90-35 9E-A3 3F-02 00-00 A0-35 9E-A3 3F-02 00-00 10-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 C6-9E 3F-02 00-00>
  res2
    Which is: 80-byte object <D0-91 77-73 F6-7F 00-00 01-00 00-00 00-00 00-00 0C-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 A6-81 FC-7F 00-00>
info [0x23f9ed3bc30] TrackCollection - Disconnecting database
info [0x23f9ed3bc30] GlobalTrackCache - Destroying instance
[  FAILED  ] CoverArtUtilTest.searchImage (61 ms)
[----------] 1 test from CoverArtUtilTest (61 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (61 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] CoverArtUtilTest.searchImage

 1 FAILED TEST

@m0dB
Copy link
Contributor

m0dB commented Sep 1, 2023

Sorry for not getting back to you, @JoergAtGithub . I have been very busy. I will try to find some time to look into this this weekend.

In the meantime, maybe you already tried this, if not can you try if this also happens with the non-GLSL spinnies, by returned new WSpinny instead of WSpinnyGLSL in the legacyskinparser.cpp around line 1322 ?

@JoergAtGithub
Copy link
Member Author

This bug occurs with all waveform types.
To clarify, this bug was introduced long time before merging #10989, but doesn't affect any 2.3 build.

@daschuer
Copy link
Member

daschuer commented Sep 4, 2023

Some takeaways:

  • The issue seems to be a kind of race condition, because using a lock in SoundSourceProxy::importTrackMetadataAndCoverImageFromFile fixes the issue.
  • We see from Spinny.text that the issue happens before emit coverFound. The request is executed but for some reasons there is NoImage returned.
  • Not only WSpinnyBase is affected, we see the issue also with DlgCoverArtFullSize
  • There are often tree requests in a row for the same track. Only the last request succeeds
  • We also see warning [Thread (pooled)] TagLib - Cannot read audio properties from inaccessible/unreadable/invalid file: "" from
    kLogger.warning() << "Cannot read audio properties from "

So it looks like the file becomes invalid somehow.

Can you uncomment this and check if the file name is still valid?

if (kLogger.traceEnabled()) {

@uklotzde
Copy link
Contributor

uklotzde commented Sep 4, 2023

Maybe the vcpkg build environment for Windows is broken somehow?

@uklotzde
Copy link
Contributor

uklotzde commented Sep 4, 2023

Wow, that's wild (Qt6, main + ...):

info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" with type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" with type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" with type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" with type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" with type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" with type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" with type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" with type 3
[New Thread 0x7fff1f1a86c0 (LWP 7456)]
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" with type 3
warning [AnalyzerThread 0 #1] SoundSourceFFmpeg - av_seek_frame() failed: Operation not permitted
warning [AnalyzerThread 0 #1] AudioSource - Failed to read sample frames: expected = [0 -> 1) , actual = [0 -> 0)
info [AnalyzerThread 0 #1] AudioSource - Shrinking readable frame index range: before = [0 -> 16816943) , after = [0 -> 0)
warning [AnalyzerThread 0 #1] AudioSource - Read test failed: expected = [0 -> 1) , actual = [0 -> 0)
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" with type 3
warning [AnalyzerThread 0 #1] SoundSourceProxy - Failed to read file "file:///home/uk/Music/1st/*****.mp3" with provider "FFmpeg"

All this happens while loading a single file into a deck. The cover art of the file is imported 9 times! The subsequent read failures reported by FFmpeg are really worrisome.

@uklotzde
Copy link
Contributor

uklotzde commented Sep 4, 2023

And the winner is: DlgCoverArtFullSize. Even though it should not be involved at all! With WSpinnyBase as a close follower. Which should also not be involved, because I don't have any spinnies with cover art enabled. The only expected request is the one from WCoverArt.

info [Main] DlgCoverArtFullSize: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] WCoverArt: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] DlgCoverArtFullSize: requestTrackCover "/home/uk/Music/1st/*****.mp3"
[New Thread 0x7fffd9a9d6c0 (LWP 11853)]
info [Main] WSpinnyBase: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" of type 3
[New Thread 0x7fff1b86b6c0 (LWP 11854)]
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" of type 3
info [Main] DlgCoverArtFullSize: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] WSpinnyBase: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] DlgCoverArtFullSize: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] WSpinnyBase: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] DlgCoverArtFullSize: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] WSpinnyBase: requestTrackCover "/home/uk/Music/1st/*****.mp3"

@uklotzde
Copy link
Contributor

uklotzde commented Sep 4, 2023

Looks like there are some serious issues in the application's control flow.

@JoergAtGithub
Copy link
Member Author

On Windows, the file access of Mixxx in general, is rather slow. I guess that this increases the likelyhood that the race condition results in a not loaded CoverArt.

@uklotzde
Copy link
Contributor

uklotzde commented Sep 4, 2023

The results from a Qt5 build don't look any better:

info [Main] MetadataSourceTagLib - Importing track metadata from file "/home/uk/Music/1st/*****.mp3" of type 3
info [Main] WCoverArt: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" of type 3
warning [CachingReaderWorker 1] SoundSourceFFmpeg - av_seek_frame() failed: Operation not permitted
warning [CachingReaderWorker 1] AudioSource - Failed to read sample frames: expected = [0 -> 1) , actual = [0 -> 0)
info [CachingReaderWorker 1] AudioSource - Shrinking readable frame index range: before = [0 -> 16816943) , after = [0 -> 0)
warning [CachingReaderWorker 1] AudioSource - Read test failed: expected = [0 -> 1) , actual = [0 -> 0)
warning [CachingReaderWorker 1] SoundSourceProxy - Failed to read file "file:///home/uk/Music/1st/*****.mp3" with provider "FFmpeg"
info [CachingReaderWorker 1] SoundSourceMp3 - Recoverable MP3 header decoding error: lost synchronization
info [CachingReaderWorker 1] SoundSourceMp3 - MP3 frame header | layer: 3 mode: 2 #channels: 2 #samples: 36 bitrate: 320000 samplerate: 44100 flags: "0x00c8"
info [Main] DlgCoverArtFullSize: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] WCoverArt: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] DlgCoverArtFullSize: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] WSpinnyBase: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] DlgCoverArtFullSize: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] WSpinnyBase: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" of type 3
info [Main] DlgCoverArtFullSize: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" of type 3
info [Main] WSpinnyBase: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] DlgCoverArtFullSize: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Main] WSpinnyBase: requestTrackCover "/home/uk/Music/1st/*****.mp3"
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" of type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" of type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" of type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" of type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" of type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" of type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" of type 3
info [Thread (pooled)] MetadataSourceTagLib - Importing cover art from file "/home/uk/Music/1st/*****.mp3" of type 3
warning [AnalyzerThread 0 #1] SoundSourceFFmpeg - av_seek_frame() failed: Operation not permitted
warning [AnalyzerThread 0 #1] AudioSource - Failed to read sample frames: expected = [0 -> 1) , actual = [0 -> 0)
info [AnalyzerThread 0 #1] AudioSource - Shrinking readable frame index range: before = [0 -> 16816943) , after = [0 -> 0)
warning [AnalyzerThread 0 #1] AudioSource - Read test failed: expected = [0 -> 1) , actual = [0 -> 0)
warning [AnalyzerThread 0 #1] SoundSourceProxy - Failed to read file "file:///home/uk/Music/1st/*****.mp3" with provider "FFmpeg"

Things are seriously broken. Unfortunately no crashes yet, which could have helped to identify the root cause timely. Now someone has to start bisecting the repo.

@ronso0
Copy link
Member

ronso0 commented Sep 4, 2023

@uklotzde If this is the log from loading a track to a deck, and you use Deere for example, I'm pretty sure all those requests are to be expected.

because I don't have any spinnies with cover art enabled

If you use Deere for example the spinnies are instantiated even if you disabled the in the skin settings.
Same for DlgCoverArtFullsize which is created for both spinnies and WCoverArt and connected to CoverArtCache signals.
All those widgets request a cover when a track is loaded to a player.

@uklotzde
Copy link
Contributor

uklotzde commented Sep 5, 2023

The failures of FFmpeg are unrelated and caused by a recent regression: #11923

@uklotzde
Copy link
Contributor

uklotzde commented Sep 6, 2023

Adding some conditionals in DlgCoverArtFullSize and WSpinnyBase fixes the excessive loading and everything still seems to work as expected. But I can't proove why, don't expect a PR.

@daschuer
Copy link
Member

Thi fix can be found here: #12103

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

Successfully merging a pull request may close this issue.

6 participants