Re: [Audacity-devel] mp3 file "04 The 7 C's"
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: Vaughan J. <va...@au...> - 2013-08-14 01:22:39
|
On 8/13/2013 5:16 PM, Martyn Shaw wrote: > +1 to Vaughan's idea. :-) > > Also, there doesn't seem to be much devel activity on this library > recently, so maybe a chance to improve it? Indeed, per the last step I mentioned below. They may not have made many of Joel's improvements, but more people will benefit from those improvements if they're in the upstream code rather than ours. - V > > TTFN > Martyn > > On 13/08/2013 03:57, Vaughan Johnson wrote: >> On 8/12/2013 1:53 AM, Joel Bouchat wrote: >>> Martyn wrote: >>> >>>> Hi >>>> >>>> I would like to commit this patch, but is it complete? >>>> >>>> I have not reviewed this complete thread and so I'm not sure if it is >>>> finished yet, or worth committing as 'better than we have'. Please >>>> advise. >>>> >>>> Thanks >>>> Martyn >>> >>> ==> Hello Martyn, >>> >>> As for the patch related to the Metadata management inside a WAV file, this patch needs to modify a library: "libid3tag". >>> Same questions, is it acceptable? and what is the procedure to follow? >> >> The Audacity copy of libid3tag has not been updated in a long time >> (2004! -- looks like they left SourceForge at that time). But it's had >> some releases since then. And it's had lots of local patches. >> >> So before patching the local copy further, or patching any Audacity code >> to add features the old version missed, I think the better idea is to: >> >> * upgrade to the latest stable release, >> https://launchpad.net/ubuntu/raring/+source/libid3tag >> >> * then merge in the previous Audacity changes, if they weren't >> incorporated upstream >> >> * then add in features still missing >> >> * then ask the maintainers if they want any of the Audacity mods >> >> >> Joel, thanks for your efforts and attention to detail, but we should try >> to stay as close as possible to the upstream libs. If they're adding >> many of these features, we should leverage that. And we should >> contribute to the upstream so we don't have to maintain so many >> differences. That's why we use libs. >> >> Thanks, >> Vaughan >> >> >> >> >>> >>> Another problem is still pending about ID3v2 metadata visibility on Windows: >>> Gale has discovered that the comment field is not displayed unless its language sub-field (eng, fre, …) corresponds to the Windows version !!! >>> At Gale request, i have checked this point on my French version of Windows and this is true! An empty or missing language field doesn't work neither. The solution is to set the language to "XXX". This is what is done by default in "libid3tag" but this has been cancelled in Audacity code to ensure the compatibility with iTunes. >>> Here is the comment inside the source code: >>> >>>> // A hack to get around iTunes not recognizing the comment. The >>>> // language defaults to XXX and, since it's not a valid language, >>>> // iTunes just ignores the tag. So, either set it to a valid language >>>> // (which one???) or just clear it. Unfortunately, there's no supported >>>> // way of clearing the field, so do it directly. >>> >>> I am not astonished that being compatible with both Apple and Microsoft is not possible ;-). >>> Here is a patch to set this option as a preference. This patch is just a proposal. I don't know what will be behavior of the Audio Players running on Unix: do they prefer the Apple solution (no language sub-field), or the Microsoft solution (language = XXX), or, as i expect, they really don't care ! >>> >>> Best regards, >>> >>> Joel >>> >>> >>>> >>>> On 09/08/2013 22:21, Joel Bouchat wrote: >>>>> Hello Gale, >>>>> >>>>> Here is a new patch where i have fixed "libid3tag.lib" itself, rather than doing post-processing to try to rectify its mistakes! >>>>> >>>>> The "bug" inside "libid3tag" , is not really a bug, it is just that when the "BOM" signature is not present inside the UTF-16 encoded tag string, "libid3tag" simply defaults to Big Endian... A bad choice because Little Endian is much more frequent. >>>>> Anyway, when the BOM is not present, the good way to proceed is to figure out the byte arrangement by looking at the character alignment. This is what i have implemented. >>>>> >>>>> With this new patch, our "ImportMP3.cpp" is no more modified. It remains the original code. >>>>> "win/Projects/Audacity/Audacity.vcproj" is modified, because the "libid3tag" was missing from the linker dependency list. It must be added otherwise the modification to the source of the "lib-src/libid3tag/utf16.c" file will not be taken into account at compilation time, unless you rebuild the whole Audacity project! >>>>> This patch must be also tested on Unix - after recompiling the library: the make file should probably be modified too. >>>>> Preferably on a "Big Endian" OS too, but this is not easy, except if you have access to an old MacIntosh (Motorola CPU) or an old SUN workstation (SPARC CPU). >>>>> Most new processors are now "bi-endianness" (MIPS, IA64, POWERPC, ARM ...) The working mode depends on the way in which the OS has been generated. >>>>> The Raspberry Pi is based on the ARM cpu. As far as i know, the Debian distribution for the Raspberry uses little endian. (To be verified). >>>>> >>>>> >>>>> Best regards, >>>>> >>>>> Joel >>>>> >>>>> P.S. : I have no experience with "taglib". In the past i have already used a library called "id3lib.dll". It worked well but i have used it in a very simple way and i did not made a lot of tests... >>>>> >>>>> >>>>> ---------------------------------------- >>>>>> Date: Thu, 8 Aug 2013 20:06:33 +0100 >>>>>> From: ga...@au... >>>>>> To: aud...@li... >>>>>> Subject: Re: [Audacity-devel] mp3 file "04 The 7 C's" >>>>>> >>>>>> >>>>>> | From Joel Bouchat <bo...@ho...> >>>>>> | Wed, 7 Aug 2013 21:47:06 +0200 >>>>>> | Subject: [Audacity-devel] mp3 file "04 The 7 C's" >>>>>>> Gale wrote: >>>>>>>> >>>>>>>> Hi Joel, >>>>>>>> >>>>>>>> Thanks. >>>>>>>> >>>>>>>> I tested your latest version of this patch with Big Endian compatibility. >>>>>>>> >>>>>>>> It works fine for me in reading the metadata in the "04 The 7C's" >>>>>>>> file on Windows 7, Mac OS x 10.8.4 (which I think being Intel is Little >>>>>>>> Endian?) and Linux Ubuntu 13.04 (Intel processor). >>>>>>>> >>>>>>>> However the attached MP3 from the same source as "04 The 7C's" >>>>>>>> has unknown characters (X inside a box) on Ubuntu when seen in >>>>>>>> Audacity's Metadata Editor. The unknown characters can be in >>>>>>>> any or all of Artist Name, Track Title or Album Title - it varies with >>>>>>>> each file opening. However Nautilus (the Ubuntu file explorer) or >>>>>>>> Rhythmbox (default music player) read the tags fine. >>>>>>> >>>>>>> I have checked this file on my patched version of >>>>>>> Audacity and the Metadata are perfectly decoded. Using the debugger, i >>>>>>> have examined the re-adjusted ucs4 strings. Everything looks fine. But i >>>>>>> am on Windows, i cannot test it on Unix... >>>>>>> >>>>>>> Can you tell me where this unknown character is located within the string, at the beginning, in the middle, at the end? >>>>>>> If it is at the end this means that the ucs4 string is not well terminated. >>>>>> >>>>>> I've experimented some more. Whichever of the three tags >>>>>> the problem appears in, the first two characters of that value >>>>>> are decoded correctly. The remaining characters are unknown, >>>>>> irrespective how many characters that is. >>>>>> >>>>>> >>>>>>> P.S.: the problem is specific to the use of the "libid3Tag" library. >>>>>>> Probably that Nautilus and Rhythmbox use another library... >>>>>> >>>>>> As I mentioned, it's been suggested before that we could move >>>>>> to taglib. Do you have any feeling for whether that would have >>>>>> fewer problems? >>>>>> >>>>>> >>>>>> >>>>>> Gale >>>>>> >>>>>> >>>>>>>> ---------------------------------------- >>>>>>>> From: bo...@ho... >>>>>>>> To: aud...@li... >>>>>>>> Date: Sat, 3 Aug 2013 18:02:07 +0200 >>>>>>>> Subject: Re: [Audacity-devel] mp3 file "04 The 7 C's" >>>>>>>> >>>>>>>> >>>>>>>> Hello >>>>>>>> >>>>>>>> here is the patch to take into account the bug in "id3lib" when reading an UTF_16 tag that has no "BOM". >>>>>>>> (Using UTF_16 strings without BOM is not recommended but this is not forbidden). >>>>>>>> >>>>>>>> The Metadata inside the file "04 The 7 C's" can be correctly extracted when this patch is installed. >>>>>>>> (No more Chinese!). >>>>>>>> >>>>>>>> The patch must absolutely be tested on a MAC or an UNIX OS which is using Big Endian, because i am not sure that "id3lib" always returns ucs4 (= UTF_32) strings in little endian mode. If, it returns big endian strings my modification will fail ! >>>>>>>> >>>>>>>> Best regards, >>>>>>>> >>>>>>>> Joel >>>>>>>> >>>>>>>> ---------------------------------------- >>>>>>>>> From: bo...@ho... >>>>>>>>> To: aud...@li... >>>>>>>>> Date: Fri, 2 Aug 2013 23:43:48 +0200 >>>>>>>>> Subject: [Audacity-devel] mp3 file "04 The 7 C's" >>>>>>>>> >>>>>>>>> Hello Gale, >>>>>>>>> >>>>>>>>> I have examined the mp3 file that you link in your previous mail and which creates tag decoding problems. The name of this file is "04 The 7 C's" >>>>>>>>> >>>>>>>>> Here is the explanation: >>>>>>>>> >>>>>>>>> In the header, the encoding of the tags is said to be of type "1" i.e. UTF16 with "BOM" (Byte Order Marker) at the beginning of the string . >>>>>>>>> The BOM must be 0xFFFE for Little Endian and 0xFEFF for Big Endian. >>>>>>>>> But in reality, there is no BOM. The mp3 header should had stated that it is using a type "2" encoding which defaults to "little endian" UTF16, no BOM. >>>>>>>>> Most tag decoders do not really care about the type and when they do not find the BOM they decode the string as a Little Endian UTF16 and there is no problem... >>>>>>>>> But this is not the case for "libid3tag", which returns the correct string but shifted by 2 bytes! >>>>>>>>> Since the string returned by libid3tag is in UTF-32 (seems that this library has been written for Unix ;-), shifting by 16 bits a string aligned on a 32 bits frontier is catastrophic! >>>>>>>>> When the string is transmitted to wxWigets to be converted to UTF8, WxWidgts does its best to decode it and returns Chinese characters... >>>>>>>>> >>>>>>>>> Realigning the UTF-32 strings should not be too difficult, but i must be sure that libid3tag always returns UTF-32 strings and not sometime UFT-16 or UTF-8 or ISO ...! >>>>>>>>> More testing is necessary before coding. >>>>>>>>> >>>>>>>>> Best regards, >>>>>>>>> >>>>>>>>> Joel >>>>>> >>>>>> >>>>>> ------------------------------------------------------------------------------ >>>>>> Get 100% visibility into Java/.NET code with AppDynamics Lite! >>>>>> It's a free troubleshooting tool designed for production. >>>>>> Get down to code-level detail for bottlenecks, with <2% overhead. >>>>>> Download for free and get started troubleshooting in minutes. >>>>>> http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk >>>>>> _______________________________________________ >>>>>> audacity-devel mailing list >>>>>> aud...@li... >>>>>> https://lists.sourceforge.net/lists/listinfo/audacity-devel >>>>>> >>>>>> >>>>>> ------------------------------------------------------------------------------ >>>>>> Get 100% visibility into Java/.NET code with AppDynamics Lite! >>>>>> It's a free troubleshooting tool designed for production. >>>>>> Get down to code-level detail for bottlenecks, with <2% overhead. >>>>>> Download for free and get started troubleshooting in minutes. >>>>>> http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> audacity-devel mailing list >>>>>> aud...@li... >>>>>> https://lists.sourceforge.net/lists/listinfo/audacity-devel >>>> >>>> ------------------------------------------------------------------------------ >>>> Get 100% visibility into Java/.NET code with AppDynamics Lite! >>>> It's a free troubleshooting tool designed for production. >>>> Get down to code-level detail for bottlenecks, with <2% overhead. >>>> Download for free and get started troubleshooting in minutes. >>>> http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk >>>> _______________________________________________ >>>> audacity-devel mailing list >>>> aud...@li... >>>> https://lists.sourceforge.net/lists/listinfo/audacity-devel >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> Get 100% visibility into Java/.NET code with AppDynamics Lite! >>>> It's a free troubleshooting tool designed for production. >>>> Get down to code-level detail for bottlenecks, with <2% overhead. >>>> Download for free and get started troubleshooting in minutes. >>>> http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk >>>> >>>> >>>> _______________________________________________ >>>> audacity-devel mailing list >>>> aud...@li... >>>> https://lists.sourceforge.net/lists/listinfo/audacity-devel >> >> ------------------------------------------------------------------------------ >> Get 100% visibility into Java/.NET code with AppDynamics Lite! >> It's a free troubleshooting tool designed for production. >> Get down to code-level detail for bottlenecks, with <2% overhead. >> Download for free and get started troubleshooting in minutes. >> http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk >> _______________________________________________ >> audacity-devel mailing list >> aud...@li... >> https://lists.sourceforge.net/lists/listinfo/audacity-devel >> > > ------------------------------------------------------------------------------ > Get 100% visibility into Java/.NET code with AppDynamics Lite! > It's a free troubleshooting tool designed for production. > Get down to code-level detail for bottlenecks, with <2% overhead. > Download for free and get started troubleshooting in minutes. > http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk > _______________________________________________ > audacity-devel mailing list > aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-devel > |