flacon / flacon

Audio File Encoder. Extracts audio tracks from an audio CD image to separate tracks.
GNU Lesser General Public License v2.1
436 stars 32 forks source link

Support Taglib 2 #223

Open Eonfge opened 7 months ago

Eonfge commented 7 months ago

There is a new major version of Taglib. From 1.13.1 we go to 2.0. Flacon is not compatible with 2.0 yet, so it would be nice to look into it. They removed all deprecated methods for example, and they also decoupled utf8cpp.

https://taglib.org/

Crashes

This one happens when I try to convert an .flac file with .cue, to a series of .alac files

/usr/include/c++/13.2.0/bits/unique_ptr.h:453: typename std::add_lvalue_reference<_Tp>::type std::unique_ptr<_Tp, _Dp>::operator*() const [with _Tp = TagLib::StringList::StringListPrivate; _Dp = std::default_delete; typename std::add_lvalue_reference<_Tp>::type = TagLib::StringList::StringListPrivate&]: Assertion 'get() != pointer()' failed.

Eonfge commented 7 months ago

You can look at this merge-request for Flathub, where I experimented a bit with 2.0:

https://github.com/flathub/com.github.Flacon/pull/58

SokoloffA commented 6 months ago

Unfortunately, I have some problems in my life, and I don't have time for pet projects. But I hope to solve the problems and return to the development and support of the project.

Eonfge commented 6 months ago

Dude, that's fine. I wish you all the best, and I'll keep the current version packaged and updated.

I've also encountered some of life's complications so best we can do is be tolerant to each other and respectful of each other's time and personal life.

Best wishes

SokoloffA commented 4 months ago

@Eonfge Hi! I can't reproduce the problem.

I wrote a test script that downloads taglib2, builds the flacon and runs the tests. I also tried manually converting .flac+.cue to .alac using the program.

All tests passed successfully.

I did some fixes, may have fixed this problem. Please try to build again. If the error happens again, how to reproduce it? What CUE are you using?

#!/usr/bin/bash

set -e
set -x

rm -rf taglib.tgz
rm -rf utfcpp.tgz
rm -rf taglib
rm -rf flacon

#wget https://taglib.org/releases/taglib-2.0.tar.gz -O taglib.tgz
wget https://taglib.org/releases/taglib-2.0.1.tar.gz -O taglib.tgz
wget https://github.com/nemtrif/utfcpp/archive/refs/tags/v3.2.4.tar.gz -O utfcpp.tgz

mkdir taglib
tar xvf taglib.tgz --strip-components=1 -C taglib
tar xvf utfcpp.tgz --strip-components=1 -C taglib/3rdparty/utfcpp

cmake -B taglib/build -DCMAKE_INSTALL_PREFIX=`pwd`/usr -DCMAKE_BUILD_TYPE=Release taglib
make  -C taglib/build -j 8
make  -C taglib/build install

# Flacon
git clone https://github.com/flacon/flacon.git flacon

export "PKG_CONFIG_PATH=`pwd`/usr/lib64/pkgconfig"
cmake -B flacon/build -DBUILD_TESTS=Yes flacon
make  -C flacon/build -j 8

flacon/build/tests/flacon_test