IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
WavPack 4.70.0 beta version available, bug fixes, transcoding and verify features
bryant
post May 28 2013, 00:30
Post #1


WavPack Developer


Group: Developer (Donating)
Posts: 1287
Joined: 3-January 02
From: San Francisco CA
Member No.: 900



The beta release of WavPack 4.70 is available and assuming no bugs are found or last-minute changes suggested, this is essentially final. The impetus for this release was to incorporate some bug fixes that had accumulated since 2009, but I decided to also include a few new features that I had been thinking about.

The most interesting new feature is the ability for the wavpack command-line executable to accept existing wavpack files as input (i.e., transcoding). This allows users to easily change the settings of files in their lossless collection, or convert from older WavPack versions. The process copies all tag information from the source, and even allows modification of the tags. Temp files are also used now when overwriting and a verify option has been added, so it's possible to safely do transcoding in-place (although this is a beta version, so be careful!)

Note that care should be taken when transcoding to and from lossy files, and lossy to lossless transcoding is not allowed.

This release should generate identical files to the previous release (other than changes from bug fixes) and the performance should be similar (excepting differences from compiler revisions). I also built 64-bit versions for Windows, but they actually perform slightly worse than the 32-bit versions (at least on my system) so I'm not sure how useful they are or whether they will make it to the final release...any opinions?

New features:
  • transcoding from existing WavPack files (with tag copy)
  • option to verify WavPack file integrity on creation (-v)
  • use temporary files for safer overwriting
  • detect UTF-16LE encoding for tag text files (mostly a Windows thing)
  • transition to Visual Studio 2008 and 64-bit version (Windows)
  • option to allow up to 16 MB APEv2 tag data (--allow-huge-tags)
  • option for wvunpack to suppress audio decoding (useful for extracting only tags with -cc and -xx) (-n)
  • experimental, undocumented option to store float16 and float24 audio data as integers (--store-floats-as-ints)
  • allow channel-order specification on WAV files with WAVEFORMATEXTENSIBLE headers that contain zeroed channel masks

Bug fixes:
  • seeking to last block failure (after finishing file)
  • memcpy() not always used correctly (Linux targets)
  • unsigned char issue (ARM targets)

Windows features ported to Linux:
  • clean handling of ^C
  • console title (with -z to defeat)
  • wildcards in tag specifications
  • 4GB file support on 32-bit OS


Updated manual

Windows 32-bit executables
Windows 64-bit executables
Linux distro

Thanks in advance for any testing and/or suggestions! smile.gif
Go to the top of the page
+Quote Post
skamp
post May 28 2013, 11:00
Post #2





Group: Developer
Posts: 1343
Joined: 4-May 04
From: France
Member No.: 13875



Thanks! Works great, the memcpy() bug is gone indeed.


--------------------
caudec.net
Go to the top of the page
+Quote Post
Mr_Rabid_Teddybe...
post May 28 2013, 16:26
Post #3





Group: Members
Posts: 1197
Joined: 3-September 03
From: Bergen, Norway
Member No.: 8667



Thanks for this!

BTW. I see that FreeBSD has one patch on wavpack 4.60.1. It's to make it build with clang. I don't know if this holds any interest. Clang is being used more now here and there...

http://svnweb.freebsd.org/ports/head/audio...amp;view=markup



--------------------
"ONLY THOSE WHO ATTEMPT THE IMPOSSIBLE WILL ACHIEVE THE ABSURD"
- Oceania Association of Autonomous Astronauts
Go to the top of the page
+Quote Post
chi
post May 28 2013, 18:30
Post #4





Group: Members
Posts: 45
Joined: 27-November 11
Member No.: 95439



Oh right, Debian has two small patches as well: http://patch-tracker.debian.org/package/wavpack/4.60.1-3
Go to the top of the page
+Quote Post
bryant
post May 29 2013, 06:37
Post #5


WavPack Developer


Group: Developer (Donating)
Posts: 1287
Joined: 3-January 02
From: San Francisco CA
Member No.: 900



Thanks for the patches! I had one of the Debians (the largefile, because they sent it to the mailing list) but not the other one or the Clang one. I'll get them in.
Go to the top of the page
+Quote Post
skamp
post May 29 2013, 10:57
Post #6





Group: Developer
Posts: 1343
Joined: 4-May 04
From: France
Member No.: 13875



The WavPack package on Arch Linux is orphaned, so here's my PKGBUILD for version 4.70.0-beta:


CODE
pkgname=wavpack
pkgver=4.70.0b
pkgrel=1
pkgdesc="Audio compression format with lossless, lossy, and hybrid compression modes"
arch=('i686' 'x86_64')
url="http://www.wavpack.com/"
license=('custom')
depends=('glibc')
options=('!libtool')
source=("http://www.wavpack.com/${pkgname}-4.70.0-beta.tar.bz2")
md5sums=('5405ff4fd021059059b334962e218fb7')

build() {
  cd ${srcdir}/${pkgname}-4.70.0
    export CFLAGS="${CFLAGS/-O2/-O3}"
    export CXXFLAGS="$CFLAGS"
  ./configure --prefix=/usr --enable-mmx --disable-static
  make
}

package() {
  cd ${srcdir}/${pkgname}-4.70.0
  make DESTDIR=${pkgdir} install
}


With the PKGBUILD file in the current directory, type "makepkg -c" to build the package, then "sudo pacman -U <package>" to install.

This post has been edited by skamp: May 29 2013, 11:04


--------------------
caudec.net
Go to the top of the page
+Quote Post
skamp
post Jun 10 2013, 11:29
Post #7





Group: Developer
Posts: 1343
Joined: 4-May 04
From: France
Member No.: 13875



I have corrected the Arch Linux PKGBUILD in order to comply with packaging rules, and have it accepted by the automatic package submission code on AUR (you can find it here: https://aur.archlinux.org/packages/wavpack-beta/). Basically I renamed the package from "wavpack" to "wavpack-beta", and added the appropriate "provides" and "conflict" variables. This release will be short-lived, it is only meant to allow easy installation of the beta version, until 4.70.0 final is released (which will be available in the usual "extra" repository, via pacman [*]).

[*] Edit: from the current maintainer - I'm not taking over.

Here's a local copy of the new PKGBUILD:

CODE
pkgname=wavpack-beta
pkgver=4.70.0
pkgrel=3
pkgdesc="Audio compression format with lossless, lossy, and hybrid compression modes"
arch=('i686' 'x86_64')
url="http://www.wavpack.com/"
license=('custom')
depends=('glibc')
options=('!libtool')
provides=('wavpack=4.70.0')
conflicts=('wavpack')
source=('http://www.wavpack.com/wavpack-4.70.0-beta.tar.bz2')
md5sums=('5405ff4fd021059059b334962e218fb7')

build() {
cd ${srcdir}/${pkgname/-beta/}-${pkgver}
# export CFLAGS="${CFLAGS/-O1/-O3}"
# export CFLAGS="${CFLAGS/-O2/-O3}"
# export CXXFLAGS="$CFLAGS"
./configure --prefix=/usr --enable-mmx --disable-static
make
}

package() {
cd ${srcdir}/${pkgname/-beta/}-${pkgver}
make DESTDIR=${pkgdir} install
# the current archive does not contain a license file
}


This post has been edited by skamp: Jun 10 2013, 12:18


--------------------
caudec.net
Go to the top of the page
+Quote Post
Mr_Rabid_Teddybe...
post Jun 11 2013, 14:24
Post #8





Group: Members
Posts: 1197
Joined: 3-September 03
From: Bergen, Norway
Member No.: 8667



OK. A couple of insignificant nitpickings before the final *nix tarball... (of whom you are probably already aware)

- Remember to put back a license.txt and/or COPYING so the distros and vendors don't get uneasy...

- Update the ChangeLog

- Update the README
I could spot VS 2005 -> 2008. Maybe mention --enable-man for *nix.

Maybe also mention dependencies to build on *nix in there? Is it something like this...?

Dependencies to run:
libiconv

Dependencies to build:
bzip2 (to extract)
pkg-config
libtool

Dependencies to build manpages (is it this....?)
xsltproc
docbook-xml
docbook-xsl

- Add yourself to AUTHORS...? smile.gif




--------------------
"ONLY THOSE WHO ATTEMPT THE IMPOSSIBLE WILL ACHIEVE THE ABSURD"
- Oceania Association of Autonomous Astronauts
Go to the top of the page
+Quote Post
bryant
post Jun 13 2013, 19:20
Post #9


WavPack Developer


Group: Developer (Donating)
Posts: 1287
Joined: 3-January 02
From: San Francisco CA
Member No.: 900



QUOTE (Mr_Rabid_Teddybear @ Jun 11 2013, 06:24) *
OK. A couple of insignificant nitpickings before the final *nix tarball... (of whom you are probably already aware)

Thanks for these! I knew to update the changelog of course (I always do that last), but I had forgotten about manually putting the license in there, and I should update the README.

edit: faulty keyboard! smile.gif

This post has been edited by bryant: Jun 13 2013, 19:21
Go to the top of the page
+Quote Post
sluggy
post Jun 26 2013, 13:40
Post #10





Group: Members
Posts: 54
Joined: 22-June 12
Member No.: 100900



Any news of a final release of version 4.70? smile.gif
Go to the top of the page
+Quote Post
lvqcl
post Jun 26 2013, 15:03
Post #11





Group: Developer
Posts: 3208
Joined: 2-December 07
Member No.: 49183



4.70.0 beta for Windows hangs if the output file is NUL.
Go to the top of the page
+Quote Post
bryant
post Jun 27 2013, 18:53
Post #12


WavPack Developer


Group: Developer (Donating)
Posts: 1287
Joined: 3-January 02
From: San Francisco CA
Member No.: 900



QUOTE (sluggy @ Jun 26 2013, 05:40) *
Any news of a final release of version 4.70? smile.gif

I'm still working on it, but I've gotten a little busy with other things. Shouldn't be long now... smile.gif
Go to the top of the page
+Quote Post
bryant
post Jun 27 2013, 18:55
Post #13


WavPack Developer


Group: Developer (Donating)
Posts: 1287
Joined: 3-January 02
From: San Francisco CA
Member No.: 900



QUOTE (lvqcl @ Jun 26 2013, 07:03) *
4.70.0 beta for Windows hangs if the output file is NUL.

Thanks for reporting; I have reproduced.

In the meantime a workaround is to pipe to stdout and redirect to NUL:

CODE
wavpack Track01.wav - > NUL

Go to the top of the page
+Quote Post
sluggy
post Jun 27 2013, 23:19
Post #14





Group: Members
Posts: 54
Joined: 22-June 12
Member No.: 100900



QUOTE (bryant @ Jun 27 2013, 18:53) *
QUOTE (sluggy @ Jun 26 2013, 05:40) *
Any news of a final release of version 4.70? smile.gif

I'm still working on it, but I've gotten a little busy with other things. Shouldn't be long now... smile.gif


Awesome, Looking forward to the update smile.gif
Go to the top of the page
+Quote Post
eahm
post Jul 30 2013, 05:21
Post #15





Group: Members
Posts: 882
Joined: 11-February 12
Member No.: 97076



Any news on the final stable release?
Go to the top of the page
+Quote Post
Peter
post Jul 31 2013, 20:36
Post #16





Group: Admin
Posts: 3269
Joined: 30-September 01
Member No.: 84



QUOTE (bryant @ May 28 2013, 01:30) *
[*] experimental, undocumented option to store float16 and float24 audio data as integers (--store-floats-as-ints)
Since it's not officially documented, I'll share my findings about such files here:
Code to determine the real wave format tag of from a WavPack context - presuming context to have been opened with OPEN_WRAPPER:
CODE
static uint32_t WavpackGetFormatTagFromWrapper(WavpackContext * wpc ) {
uint32_t bytes = WavpackGetWrapperBytes( wpc );
uint8_t * ptr = WavpackGetWrapperData( wpc ) ;

uint32_t fmtOffset = 8 + 12;
if (bytes < fmtOffset + 2) return 0;
if (memcmp(ptr, "RIFF", 4) != 0) return 0;
if (memcmp(ptr + 8, "WAVEfmt ", 8) != 0) return 0;

return (uint16_t) ptr[fmtOffset] + ((uint16_t) ptr[fmtOffset+1] << 8);
}

static uint32_t WavpackGetFormatTag(WavpackContext * wpc ) {
uint32_t v = WavpackGetFormatTagFromWrapper( wpc );
if (v == 0) {
if ( WavpackGetMode( wpc ) & MODE_FLOAT ) {
v = 3;
} else {
v = 1;
}
}
return v;
}

Please correct me if the above is wrong.


--------------------
This job would be great if it wasn't for the users.
Go to the top of the page
+Quote Post
bryant
post Aug 1 2013, 15:02
Post #17


WavPack Developer


Group: Developer (Donating)
Posts: 1287
Joined: 3-January 02
From: San Francisco CA
Member No.: 900



QUOTE (Peter @ Jul 31 2013, 12:36) *
Code to determine the real wave format tag of from a WavPack context - presuming context to have been opened with OPEN_WRAPPER:

There are two error cases I can see. The first is if the “fmt” chunk does not come first. I don't know if that ever happens, and is not that big a deal because this code will ignore it then.

However, if an extensible header is used and the wFormatTag is 0xFFFE, then this code will fail. I would suggest changing the condition for using the WavpackGetMode() result to:

CODE
if (v == 0 || v == 0xFFFE)

Or you could change WavpackGetFormatTagFromWrapper() to return 0 for 0xFFFE. Either way, this will make sure that the only failure cases are with unsupported files.
Go to the top of the page
+Quote Post
bryant
post Aug 3 2013, 22:09
Post #18


WavPack Developer


Group: Developer (Donating)
Posts: 1287
Joined: 3-January 02
From: San Francisco CA
Member No.: 900



QUOTE (eahm @ Jul 29 2013, 21:21) *
Any news on the final stable release?

Sorry for the delay on this...I've been putting out fires at my "day gig" and have been coming up to speed on Git because the WavPack repo is moving to GitHub soon.

But it's still on the radar! smile.gif
Go to the top of the page
+Quote Post
DARcode
post Aug 11 2013, 13:38
Post #19





Group: Members (Donating)
Posts: 679
Joined: 10-January 05
From: Italy
Member No.: 18968



Found out about the new release just now, simply awesome, thanks a bunch David.


--------------------
WavPack 4.70.0 -b384hx6cmv/qaac 2.32 -V 100
Go to the top of the page
+Quote Post
eahm
post Sep 11 2013, 05:47
Post #20





Group: Members
Posts: 882
Joined: 11-February 12
Member No.: 97076



bryant, pardon me I am pushing again, any news on the stable release?

Thanks.

This post has been edited by eahm: Sep 11 2013, 06:44
Go to the top of the page
+Quote Post
bryant
post Sep 26 2013, 00:31
Post #21


WavPack Developer


Group: Developer (Donating)
Posts: 1287
Joined: 3-January 02
From: San Francisco CA
Member No.: 900



Sorry for the delay, but I am now getting ready to finalize this release (been swamped with paying work that is now complete).

The first step was migrating the sources to GitHub, which is complete: repository is here.

Thanks for hanging in there! smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 18th April 2014 - 04:45