Your message dated Mon, 11 Jul 2011 21:20:22 +0000
with message-id <[email protected]>
and subject line Bug#587465: fixed in mp3gain 1.5.2-r2-1
has caused the Debian Bug report #587465,
regarding mp3gain: should write extra ID3v2 replaygain tags for better interop
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
587465: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=587465
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: mp3gain
Version: 1.5.1-3
Severity: normal
Tags: patch
Forwarded:
https://sourceforge.net/tracker/?func=detail&aid=3022522&group_id=49979&atid=458158
When invoked as "mp3gain -s i", mp3gain writes out ID3v2.4 RVA2 frames
containing the replay gain.
However, some MP3 players (apparently including Winamp) don't seem to
interpret RVA2 frames; instead, they expect to see replay gain in TXXX frames
with the same name as the tags conventional in Vorbis/APEv2. I attach a simple
patch to write those frames too.
(I've filed this as normal rather than wishlist since it's an interoperability
problem, and easy to fix; feel free to downgrade this bug if you disagree.)
Regards,
Simon
#! /bin/sh /usr/share/dpatch/dpatch-run
## 09_txxx.dpatch by Simon McVittie <[email protected]>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: in ID3 tags, produce TXXX frames compatible with Winamp, as well as
## DP: the correct RVA2 frames
@DPATCH@
--- mp3gain-1.5.1.orig/id3tag.c
+++ mp3gain-1.5.1/id3tag.c
@@ -420,6 +420,71 @@
/**
+ * Decode an APEv2/Vorbis-style TXXX frame, matching
+ * /REPLAYGAIN_(ALBUM|TRACK)_(GAIN|PEAK)/ case-insensitively.
+ *
+ * Store gain information in the info structure, unless info == NULL.
+ * Return 1 if the frame is one of our TXXX frames, 0 otherwise.
+ */
+static int id3_decode_txxx_frame(const struct ID3v2FrameStruct *frame, struct
MP3GainTagInfo *info)
+{
+ unsigned long p, k;
+ char buf[64];
+ const char *value;
+
+ /* Ignore non-TXXX frames. */
+ if (memcmp(frame->frameid, "TXXX", 4) != 0)
+ return 0;
+
+ p = frame->hskip;
+
+ /* Check text encoding; we understand only 0 (ISO-8859-1) and 3
(UTF-8). */
+ if (p >= frame->len || (frame->data[p] != 0 && frame->data[p] != 3))
+ return 0;
+ p++;
+
+ /* Copy character data to temporary buffer. */
+ k = (frame->len - p + 1 < sizeof(buf)) ? (frame->len - p) :
(sizeof(buf) - 2);
+ memcpy(buf, frame->data + p, k);
+ buf[k] = '\0'; /* terminate the value string */
+ buf[k+1] = '\0'; /* ensure buf contains two terminated strings,
even for invalid frame data */
+ value = buf + strlen(buf) + 1;
+
+ /* Check identification string. */
+ if (strcasecmp(buf, "REPLAYGAIN_ALBUM_GAIN") == 0) {
+ if (info) {
+ info->haveAlbumGain = !0;
+ info->albumGain = atof(value);
+ }
+ return 1;
+ } else if (strcasecmp(buf, "REPLAYGAIN_TRACK_GAIN") == 0) {
+ if (info) {
+ info->haveTrackGain = !0;
+ info->trackGain = atof(value);
+ }
+ return 1;
+ } else if (strcasecmp(buf, "REPLAYGAIN_ALBUM_PEAK") == 0) {
+ if (info) {
+ info->haveAlbumPeak = !0;
+ info->albumPeak = atof(value);
+ }
+ return 1;
+ } else if (strcasecmp(buf, "REPLAYGAIN_TRACK_PEAK") == 0) {
+ if (info) {
+ info->haveTrackPeak = !0;
+ info->trackPeak = atof(value);
+ }
+ return 1;
+ } else if (strcasecmp(buf, "REPLAYGAIN_REFERENCE_LOUDNESS") == 0) {
+ /* we derive no information from this at the moment, but
+ * we do want to delete this frame if re-writing */
+ return 1;
+ }
+
+ return 0;
+}
+
+/**
* Decode a mp3gain-specific TXXX frame, either "MP3GAIN_UNDO" or
* "MP3GAIN_MINMAX" or "MP3GAIN_ALBUM_MINMAX".
*
@@ -1078,6 +1143,7 @@
frame = tag.frames;
while (frame) {
id3_decode_rva2_frame(frame, info);
+ id3_decode_txxx_frame(frame, info);
id3_decode_mp3gain_frame(frame, info);
frame = frame->next;
}
@@ -1148,6 +1214,7 @@
pframe = &(tag.frames);
while ((frame = *pframe)) {
if (id3_decode_rva2_frame(frame, NULL) == 1 ||
+ id3_decode_txxx_frame(frame, NULL) == 1 ||
id3_decode_mp3gain_frame(frame, NULL) == 1) {
/* This is a ReplayGain frame; kill it. */
need_update = 1;
@@ -1159,18 +1226,53 @@
}
}
- /* Append new replaygain frames. */
+ /* Append new replaygain frames. The TXXX versions are lower-case,
+ * because that's what Winamp wants... */
+
+ if (info->haveTrackGain || info->haveTrackPeak ||
+ info->haveAlbumGain || info->haveAlbumPeak) {
+ need_update = 1;
+ frame = id3_make_frame("TXXX", "bsbs", 0,
"replaygain_reference_loudness", 0, "89.0 dB");
+ *pframe = frame;
+ pframe = &(frame->next);
+ }
+
if (info->haveTrackGain) {
need_update = 1;
frame = id3_make_rva2_frame(0, info->trackGain,
info->haveTrackPeak, info->trackPeak);
*pframe = frame;
pframe = &(frame->next);
+
+ sprintf(sbuf, "%-+9.6f dB", info->trackGain);
+ frame = id3_make_frame("TXXX", "bsbs", 0,
"replaygain_track_gain", 0, sbuf);
+ *pframe = frame;
+ pframe = &(frame->next);
+ }
+ if (info->haveTrackPeak) {
+ need_update = 1;
+ sprintf(sbuf, "%-8.6f", info->trackPeak);
+ frame = id3_make_frame("TXXX", "bsbs", 0,
"replaygain_track_peak", 0, sbuf);
+ *pframe = frame;
+ pframe = &(frame->next);
}
+
if (info->haveAlbumGain) {
need_update = 1;
frame = id3_make_rva2_frame(1, info->albumGain,
info->haveAlbumPeak, info->albumPeak);
*pframe = frame;
pframe = &(frame->next);
+
+ sprintf(sbuf, "%-+9.6f dB", info->albumGain);
+ frame = id3_make_frame("TXXX", "bsbs", 0,
"replaygain_album_gain", 0, sbuf);
+ *pframe = frame;
+ pframe = &(frame->next);
+ }
+ if (info->haveAlbumPeak) {
+ need_update = 1;
+ sprintf(sbuf, "%-8.6f", info->albumPeak);
+ frame = id3_make_frame("TXXX", "bsbs", 0,
"replaygain_album_peak", 0, sbuf);
+ *pframe = frame;
+ pframe = &(frame->next);
}
/* Append mp3gain-specific frames. */
signature.asc
Description: Digital signature
--- End Message ---
--- Begin Message ---
Source: mp3gain
Source-Version: 1.5.2-r2-1
We believe that the bug you reported is fixed in the latest version of
mp3gain, which is due to be installed in the Debian FTP archive:
mp3gain_1.5.2-r2-1.debian.tar.gz
to main/m/mp3gain/mp3gain_1.5.2-r2-1.debian.tar.gz
mp3gain_1.5.2-r2-1.dsc
to main/m/mp3gain/mp3gain_1.5.2-r2-1.dsc
mp3gain_1.5.2-r2-1_amd64.deb
to main/m/mp3gain/mp3gain_1.5.2-r2-1_amd64.deb
mp3gain_1.5.2-r2.orig.tar.gz
to main/m/mp3gain/mp3gain_1.5.2-r2.orig.tar.gz
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Simon McVittie <[email protected]> (supplier of updated mp3gain package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Format: 1.8
Date: Mon, 11 Jul 2011 21:45:45 +0100
Source: mp3gain
Binary: mp3gain
Architecture: source amd64
Version: 1.5.2-r2-1
Distribution: unstable
Urgency: low
Maintainer: Fabrizio Regalli <[email protected]>
Changed-By: Simon McVittie <[email protected]>
Description:
mp3gain - Lossless mp3 normalizer with statistical analysis
Closes: 587465 619847
Changes:
mp3gain (1.5.2-r2-1) unstable; urgency=low
.
[ Fabrizio Regalli ]
* New upstream version.
* Switch to quilt 3.0 format.
* New maintainer. (Closes: #619847)
* Switch d/compat to 8.
* Update debhelper (>= 8).
* Removed dpatch from dependecies.
* Bump to Standards-Version: 3.9.2.
* Added Vcs-*
* Removed dpatch.make from d/rules.
* Switch to DEP5 license format.
* Added txxx patch for extra ID3v2 replaygain tags. (Closes: #587465)
.
[ Simon McVittie ]
* Correctly credit myself, not Stefan, for my TXXX patch :-)
* Change machine-readable license from LGPL-1 to LGPL-2+ to match the text
of the license grant (Fabrizio gave permission for this in an email)
* Add myself to Uploaders
* Reinstate most of Stefan's patches, adjusted to apply to mp3gain.c
despite DOS line endings
* Override installation path when running make, not by patching Makefile
Checksums-Sha1:
10d27edcc52c9972322eefd3f1a3685515411f36 1820 mp3gain_1.5.2-r2-1.dsc
e26912481d64287b61734082e2703792ff529364 108947 mp3gain_1.5.2-r2.orig.tar.gz
bd627b0ff886e080654744eba0998caee3cd172a 14220 mp3gain_1.5.2-r2-1.debian.tar.gz
c3041c3daf98130948673525acd79bb5d68f9375 72930 mp3gain_1.5.2-r2-1_amd64.deb
Checksums-Sha256:
baadab777fcc302a2d2e15447bde9dfc15ea50d9ee08452fba395cdc499f4b85 1820
mp3gain_1.5.2-r2-1.dsc
688fac2cd1c621237ae25301041638311e6fbc17d6a5ffe3789e54fa86a113b1 108947
mp3gain_1.5.2-r2.orig.tar.gz
355c2d97bad157343f869dfd45b5a167de3cdf41bd73d0e0e2eb9603699a8408 14220
mp3gain_1.5.2-r2-1.debian.tar.gz
4e2f71aa7b1ec0c29e682cab416db3095e6bc63ad6de268185d65943d4688093 72930
mp3gain_1.5.2-r2-1_amd64.deb
Files:
09945aec565186453b6105d494e78bd5 1820 sound optional mp3gain_1.5.2-r2-1.dsc
42e7820044e34f3f878b08eb793dff18 108947 sound optional
mp3gain_1.5.2-r2.orig.tar.gz
ce13a8b4f433101845dee744f7a27497 14220 sound optional
mp3gain_1.5.2-r2-1.debian.tar.gz
cd482f87acba81dfd60d8757de8b7a15 72930 sound optional
mp3gain_1.5.2-r2-1_amd64.deb
-----BEGIN PGP SIGNATURE-----
iQIVAwUBThtliE3o/ypjx8yQAQi/8hAAmZ+aNlMPV3CpcMojCLo1IVhEcOQFdGks
1XWpC2+6Ifi0ckGnX4tRoHPBjjQAy7eXXj094CDs9SuYiiCzAo98ae450q7tOOyE
odePjD+Yod+eu6FAJaf22lBppZXtkHdvQe4BMUNJ0x2kwMqYOwZHWt3bEBNcyIDZ
gZvgpS5dHtlF+z4TGPFZRy+fUIaxs6F7g3jAIbgePUCQcsPvpW248Jn+fltrHWhU
QIwZAdOXt2SZdttuMhd+QftKSZe6wIm9aWvorV/fMjfTXDD7w0X//l3DApmrEB+V
mkvIDOxg6uTaCrbFQPuTIvhmILhZ5l0m2wdqDrr5iuB8mdYwa6HHTpxtYUfFU5ci
NID0RBF4TEpngkzcsTbe0DUGjJnpSJVOZ1KFGk1cSQM7flCTU4uLH7YOIkn9/Ck8
YmdSAuRcQfGF3o5RxAbpw0AhBUsfUqD+0rwPJ4RVG5B4FYoN3c736h5NezvBscYy
B6L7oAtFIMSAVTksnfSMDfjd670fUClJMJC++eJJCXTrBJF1kSoh7ivO8koT62E3
Ky003yNr5/0w9JXOipEpC1CiSjecfklDO+zN2vTbJqk1bjmHSP5APPooTYR3ppfl
6WDRaQ/+MGv3PXdol15ccJARmY83E+OTVGnz78sVhT3QO6WPRT1AXqHopoEmt1hu
Okr/fLJVP0Q=
=rc5Y
-----END PGP SIGNATURE-----
--- End Message ---