summaryrefslogtreecommitdiff
path: root/audio
diff options
context:
space:
mode:
authorJason E. Hale <jhale@FreeBSD.org>2024-06-06 18:19:07 -0400
committerJason E. Hale <jhale@FreeBSD.org>2024-06-06 20:21:32 -0400
commit7dd9ce8f770fca5e970d3c2e968b054d4569f7e3 (patch)
tree79721f8c5d5cc37df16e9c00efdb4268d4ee2624 /audio
parentmultimedia/musique: Prepare for Taglib 2.x (diff)
audio/easytag: Prepare for Taglib 2.x
PR: 276677 Obtained from: Arch Linux (with some tweaks)
Diffstat (limited to 'audio')
-rw-r--r--audio/easytag/files/patch-src_tags_gio__wrapper.cc105
-rw-r--r--audio/easytag/files/patch-src_tags_gio__wrapper.h45
-rw-r--r--audio/easytag/files/patch-src_tags_mp4__header.cc13
-rw-r--r--audio/easytag/files/patch-src_tags_mp4__tag.cc57
4 files changed, 220 insertions, 0 deletions
diff --git a/audio/easytag/files/patch-src_tags_gio__wrapper.cc b/audio/easytag/files/patch-src_tags_gio__wrapper.cc
new file mode 100644
index 000000000000..e1fa5d491485
--- /dev/null
+++ b/audio/easytag/files/patch-src_tags_gio__wrapper.cc
@@ -0,0 +1,105 @@
+Fix build with Taglib 2.x
+
+Based on patch from Arch Linux:
+https://gitlab.archlinux.org/archlinux/packaging/packages/easytag/-/blob/main/taglib-2.patch?ref_type=heads
+
+--- src/tags/gio_wrapper.cc.orig 2016-06-24 14:57:32 UTC
++++ src/tags/gio_wrapper.cc
+@@ -47,11 +47,11 @@ TagLib::ByteVector
+ }
+
+ TagLib::ByteVector
+-GIO_InputStream::readBlock (TagLib::ulong len)
++GIO_InputStream::readBlock (unsigned long len)
+ {
+ if (error)
+ {
+- return TagLib::ByteVector::null;
++ return TagLib::ByteVector();
+ }
+
+ TagLib::ByteVector rv (len, 0);
+@@ -70,14 +70,24 @@ GIO_InputStream::insert (TagLib::ByteVector const &dat
+
+ void
+ GIO_InputStream::insert (TagLib::ByteVector const &data,
+- TagLib::ulong start,
+- TagLib::ulong replace)
++#if TAGLIB_MAJOR_VERSION >= 2
++ TagLib::offset_t start,
++ size_t replace)
++#else
++ unsigned long start,
++ unsigned long replace)
++#endif
++
+ {
+ g_warning ("%s", "Trying to write to read-only file!");
+ }
+
+ void
+-GIO_InputStream::removeBlock (TagLib::ulong start, TagLib::ulong len)
++#if TAGLIB_MAJOR_VERSION >= 2
++GIO_InputStream::removeBlock (TagLib::offset_t start, size_t len)
++#else
++GIO_InputStream::removeBlock (unsigned long start, unsigned long len)
++#endif
+ {
+ g_warning ("%s", "Trying to write to read-only file!");
+ }
+@@ -200,11 +210,11 @@ TagLib::ByteVector
+ }
+
+ TagLib::ByteVector
+-GIO_IOStream::readBlock (TagLib::ulong len)
++GIO_IOStream::readBlock (unsigned long len)
+ {
+ if (error)
+ {
+- return TagLib::ByteVector::null;
++ return TagLib::ByteVector();
+ }
+
+ gsize bytes = 0;
+@@ -239,8 +249,14 @@ GIO_IOStream::insert (TagLib::ByteVector const &data,
+
+ void
+ GIO_IOStream::insert (TagLib::ByteVector const &data,
+- TagLib::ulong start,
+- TagLib::ulong replace)
++#if TAGLIB_MAJOR_VERSION >= 2
++ TagLib::offset_t start,
++ size_t replace)
++#else
++ unsigned long start,
++ unsigned long replace)
++#endif
++
+ {
+ if (error)
+ {
+@@ -278,7 +294,7 @@ GIO_IOStream::insert (TagLib::ByteVector const &data,
+ seek (0);
+
+ while (g_input_stream_read_all (istream, buffer,
+- MIN (G_N_ELEMENTS (buffer), start),
++ MIN (G_N_ELEMENTS (buffer), (unsigned long)start),
+ &r, NULL, &error) && r > 0)
+ {
+ gsize w;
+@@ -351,9 +367,13 @@ void
+ }
+
+ void
+-GIO_IOStream::removeBlock (TagLib::ulong start, TagLib::ulong len)
++#if TAGLIB_MAJOR_VERSION >= 2
++GIO_IOStream::removeBlock (TagLib::offset_t start, size_t len)
++#else
++GIO_IOStream::removeBlock (unsigned long start, unsigned long len)
++#endif
+ {
+- if (start + len >= (TagLib::ulong)length ())
++ if (start + len >= (unsigned long)length ())
+ {
+ truncate (start);
+ return;
diff --git a/audio/easytag/files/patch-src_tags_gio__wrapper.h b/audio/easytag/files/patch-src_tags_gio__wrapper.h
new file mode 100644
index 000000000000..fdb8c1f36362
--- /dev/null
+++ b/audio/easytag/files/patch-src_tags_gio__wrapper.h
@@ -0,0 +1,45 @@
+Fix build with Taglib 2.x
+
+Based on patch from Arch Linux:
+https://gitlab.archlinux.org/archlinux/packaging/packages/easytag/-/blob/main/taglib-2.patch?ref_type=heads
+
+--- src/tags/gio_wrapper.h.orig 2016-06-24 14:57:32 UTC
++++ src/tags/gio_wrapper.h
+@@ -33,10 +33,15 @@ class GIO_InputStream : public TagLib::IOStream (publi
+ GIO_InputStream (GFile *file_);
+ virtual ~GIO_InputStream ();
+ virtual TagLib::FileName name () const;
+- virtual TagLib::ByteVector readBlock (TagLib::ulong length);
++ virtual TagLib::ByteVector readBlock (unsigned long length);
+ virtual void writeBlock (TagLib::ByteVector const &data);
+- virtual void insert (TagLib::ByteVector const &data, TagLib::ulong start = 0, TagLib::ulong replace = 0);
+- virtual void removeBlock (TagLib::ulong start = 0, TagLib::ulong length = 0);
++#if TAGLIB_MAJOR_VERSION >= 2
++ virtual void insert (TagLib::ByteVector const &data, TagLib::offset_t start = 0, size_t replace = 0);
++ virtual void removeBlock (TagLib::offset_t start = 0, size_t length = 0);
++#else
++ virtual void insert (TagLib::ByteVector const &data, unsigned long start = 0, unsigned long replace = 0);
++ virtual void removeBlock (unsigned long start = 0, unsigned long length = 0);
++#endif
+ virtual bool readOnly () const;
+ virtual bool isOpen () const;
+ virtual void seek (long int offset, TagLib::IOStream::Position p = TagLib::IOStream::Beginning);
+@@ -61,10 +66,15 @@ class GIO_IOStream : public TagLib::IOStream (public)
+ GIO_IOStream (GFile *file_);
+ virtual ~GIO_IOStream ();
+ virtual TagLib::FileName name () const;
+- virtual TagLib::ByteVector readBlock (TagLib::ulong length);
++ virtual TagLib::ByteVector readBlock (unsigned long length);
+ virtual void writeBlock (TagLib::ByteVector const &data);
+- virtual void insert (TagLib::ByteVector const &data, TagLib::ulong start = 0, TagLib::ulong replace = 0);
+- virtual void removeBlock (TagLib::ulong start = 0, TagLib::ulong len = 0);
++#if TAGLIB_MAJOR_VERSION >= 2
++ virtual void insert (TagLib::ByteVector const &data, TagLib::offset_t start = 0, size_t replace = 0);
++ virtual void removeBlock (TagLib::offset_t start = 0, size_t len = 0);
++#else
++ virtual void insert (TagLib::ByteVector const &data, unsigned long start = 0, unsigned long replace = 0);
++ virtual void removeBlock (unsigned long start = 0, unsigned long len = 0);
++#endif
+ virtual bool readOnly () const;
+ virtual bool isOpen () const;
+ virtual void seek (long int offset, TagLib::IOStream::Position p = TagLib::IOStream::Beginning);
diff --git a/audio/easytag/files/patch-src_tags_mp4__header.cc b/audio/easytag/files/patch-src_tags_mp4__header.cc
new file mode 100644
index 000000000000..d76f15272656
--- /dev/null
+++ b/audio/easytag/files/patch-src_tags_mp4__header.cc
@@ -0,0 +1,13 @@
+TagLib::AudioProperties::length() is deprecated in Taglib 2.x.
+
+--- src/tags/mp4_header.cc.orig 2016-06-24 14:57:32 UTC
++++ src/tags/mp4_header.cc
+@@ -105,7 +105,7 @@ et_mp4_header_read_file_info (GFile *file,
+ ETFileInfo->bitrate = properties->bitrate ();
+ ETFileInfo->samplerate = properties->sampleRate ();
+ ETFileInfo->mode = properties->channels ();
+- ETFileInfo->duration = properties->length ();
++ ETFileInfo->duration = properties->lengthInSeconds ();
+
+ return TRUE;
+ }
diff --git a/audio/easytag/files/patch-src_tags_mp4__tag.cc b/audio/easytag/files/patch-src_tags_mp4__tag.cc
new file mode 100644
index 000000000000..db859f696392
--- /dev/null
+++ b/audio/easytag/files/patch-src_tags_mp4__tag.cc
@@ -0,0 +1,57 @@
+Fix build with Taglib 2.x
+
+Obtained from Arch Linux:
+https://gitlab.archlinux.org/archlinux/packaging/packages/easytag/-/blob/main/taglib-2.patch?ref_type=heads
+
+--- src/tags/mp4_tag.cc.orig 2016-06-24 14:57:32 UTC
++++ src/tags/mp4_tag.cc
+@@ -222,7 +222,7 @@ mp4tag_read_file_tag (GFile *file,
+ FileTag->encoded_by = g_strdup (encodedbys.front ().toCString (true));
+ }
+
+- const TagLib::MP4::ItemListMap &extra_items = tag->itemListMap ();
++ const TagLib::MP4::ItemMap &extra_items = tag->itemMap ();
+
+ /* Album Artist */
+ #if (TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION < 10)
+@@ -437,25 +437,12 @@ mp4tag_write_file_tag (const ET_File *ETFile,
+ fields.insert ("ENCODEDBY", string);
+ }
+
+- TagLib::MP4::ItemListMap &extra_items = tag->itemListMap ();
+-
+ /* Album artist. */
+ if (!et_str_empty (FileTag->album_artist))
+ {
+ TagLib::String string (FileTag->album_artist, TagLib::String::UTF8);
+-#if (TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION < 10)
+- /* No "ALBUMARTIST" support in TagLib until 1.10; use atom directly. */
+- extra_items.insert ("aART", TagLib::MP4::Item (string));
+-#else
+ fields.insert ("ALBUMARTIST", string);
+-#endif
+ }
+-#if (TAGLIB_MAJOR_VERSION == 1) && (TAGLIB_MINOR_VERSION < 10)
+- else
+- {
+- extra_items.erase ("aART");
+- }
+-#endif
+
+ /***********
+ * Picture *
+@@ -491,12 +478,12 @@ mp4tag_write_file_tag (const ET_File *ETFile,
+ TagLib::MP4::CoverArt art (f, TagLib::ByteVector((char *)data,
+ data_size));
+
+- extra_items.insert ("covr",
++ tag->setItem("covr",
+ TagLib::MP4::Item (TagLib::MP4::CoverArtList ().append (art)));
+ }
+ else
+ {
+- extra_items.erase ("covr");
++ tag->removeItem("covr");
+ }
+
+ tag->setProperties (fields);