macOS/TagFetcher: improve Opus matching reliability (AcoustID POST + MusicBrainz fallback + safer fingerprinting)#2002
Conversation
Bumps [vmactions/freebsd-vm](https://github.com/vmactions/freebsd-vm) from 1.4.1 to 1.4.2. - [Release notes](https://github.com/vmactions/freebsd-vm/releases) - [Commits](vmactions/freebsd-vm@v1.4.1...v1.4.2) --- updated-dependencies: - dependency-name: vmactions/freebsd-vm dependency-version: 1.4.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
There was a problem hiding this comment.
Thanks, since there is a lot of changes here addressing different things, could you open a PR for each? This way it's easier to review.
I suggest to split into 5 different PR's similar to your commits:
- Improved error handling
- Chromaprint pipeline changes
- Additional MusicBrainz fallback to tag search
- The gstreamer environmental variable changes (but I'm not sure we need these)
- macgstcopy
You should be able to create 4 separate branches and cherry-pick the relevant commit to each branch.
Also, please rebase the commit messages to include capitalized "ClassName:" as prefix if the changes only affect one class, otherwise the commit title should be without a prefix.
And was a AI tool used for any of these changes?
There was a problem hiding this comment.
This commit shouldn't be included here.
| libgstisomp4 | ||
| libgstlame | ||
| # Needed for WebM/Matroska containers that often wrap Opus streams. | ||
| libgstmatroska |
There was a problem hiding this comment.
Matroska isn't currently built, it needs to be enabled in https://github.com/strawberrymusicplayer/strawberry-macos-dependencies/
how did you test this?
| fi | ||
| done | ||
|
|
||
| # libgstmatroska depends on libgstriff, which is not always pulled automatically. |
There was a problem hiding this comment.
Then we need to investigate why, this seems like a workaround, isn't libgstriff-1.0.0.dylib linked?
| Song original_song_; | ||
| bool pending_; | ||
| QString progress_string_; | ||
| // Carries technical diagnostics returned by TagFetcher for the error page. |
There was a problem hiding this comment.
Don't think we need too many comments like this, since no other variables are commented.
| return GST_FLOW_OK; | ||
|
|
||
| } | ||
|
|
There was a problem hiding this comment.
Avoid committing formatting changes in the same PR
| QString gst_registry_filename = StandardPaths::WritableLocation(StandardPaths::StandardLocation::AppLocalDataLocation) + QStringLiteral("/gst-registry-%1-bin").arg(QCoreApplication::applicationVersion()); | ||
| const QFileInfo executable_info(QCoreApplication::applicationFilePath()); | ||
| const qint64 executable_stamp = executable_info.exists() ? executable_info.lastModified().toSecsSinceEpoch() : 0; | ||
| // Include executable timestamp to avoid reusing stale GStreamer registries across rebuilds. |
There was a problem hiding this comment.
We only distribute a version once, so this shouldn't be necessary as far as I can tell. During development you can easily delete these manually. Is there a specific reason this is needed?
I'm confused by this, does this mean you tested everything? |
Summary
This PR improves Tag Fetcher reliability for
.opusfiles (notably files downloaded via yt-dlp) on macOS, while keeping the app self-contained (no external CLI dependency at runtime).Problem
Some files failed in Tag Fetcher with errors like:
What changed
1) AcoustID request robustness
application/x-www-form-urlencoded)format,client,duration,meta,fingerprint)2) MusicBrainz fallback when AcoustID fails
TagFetcher:MusicBrainzClient::StartSearchRequest(...)3) Better handling of missing tags
4) Better user diagnostics
5) Fingerprinting hardening + memory safety
Chromaprinter6) macOS bundle/runtime fixes
libgstriffbundling when required bylibgstmatroskaValidation
cmake --build build-m1-full -j8(passes).opusfiles with and without embedded tagsCommit breakdown
musicbrainz: add metadata-search fallback when AcoustID failsui: show technical diagnostics in tag fetcher error pagechromaprinter: harden decoding and cap in-memory PCM usagemacos: bundle and discover GStreamer runtime dependencies reliably