Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI This information is Copyright 2009 Sun Microsystems 1. Introduction 1.1. Project/Component Working Name: Amendment to sox 1.2. Name of Document Author/Supplier: Author: Brian Cameron 1.3 Date of This Document: 18 August, 2009 4. Technical Description Template Version: @(#)sac_nextcase 1.66 04/17/08 SMI This information is Copyright 2009 Sun Microsystems 1. Introduction 1.1. Project/Component Working Name: Amendment to sox 1.2. Name of Document Author/Supplier: Author: Justin Roth 1.3 Date of This Document: 13 August 2009
2. Project Summary 2.1. Project Description Per LSARC 2008/706, This project delivers the sox package, version 14.3.0, an audio file conversion and sound effects utility. Since some time has passed since sox was ARC'd, we're delivering the latest version, which has a few slight interface changes. 4. Technical Description sox (SOund eXchange) is a command line utility, and an associated set of library routines, which convert many different digital audio formats, and can process audio files to add various sound effects. In this version, the libsfx.so is gone. Here is the message I received from the maintainer when I asked him why: "For majority of SoX's history, the API represented by libsfx was always combined into single library libsox. It was only separate for maybe 2 or less years of a 15-20 year time period. There was a developer that joined in 14.0.0 that worked on some cleanup of SoX internals and thought it a good idea to separate the effects engine into its own library with assumption that some application may wish to use it but not the file handle routines. Not a bad idea but it wasn't done completely and that developer has since left again. There were symbols used by libsfx that always required linking in libsox to end application. And I think the opposite way around as well. So effectively, libsox and libsfx were always both required at link time in most cases. To do the split right, we probably would have needed libsox, libsfx, and libsoxutils. The later containing common utils that we want linked into both libraries. I was doing some symbol cleanup in 14.2.0 and settled on merging libsfx back in to libsox instead of libsoxutil route. The overall size of each library is pretty small and since no application was known to only use libsfx it seemed safe. Also, ffmpeg has kinda shown to me that splitting up the libraries can be very messy with seemingly nothing gained. And last, it seems like during 14.2.0 development some linker had issues on some platform that merging it helped. Maybe that is on nabble if I remember correctly." -- Chris Bagwell, chris at cnpbagwell.com, SoX maintainer So, in short, since the previous version of SoX, 14.0.1, which was discussed in LSARC 2008/706, never made it into Solaris, I don't think people will have planned on linking against libsfx on Solaris, especially considering that libsfx was only split out from libsox for a short period in SoX's long history. In addition, 14.2.0 introduced a new native 'sox' file format, as well as the new `.cvu' unfiltered CVSD; supports any bit-rate. Some other new interface changes in 14.3.0 include: (from the SoX Changelog) o sox_format_init() has been superseded by sox_init(). o Removed obsolete error codes (SOX_E...); new sox_strerror() function to convert error codes to text. o Use of sox_effect_options() is now mandatory when initialising an effect (see example0.c for an example of this). o sox_flow_effects() has a new (3rd) parameter: a void pointer `client_data' that is passed as a new (2nd) parameter to the flow callback function. client_data may be NULL. There are also new effects features that have been added since 14.0.1, which include: o N.B. Reduced default bandwidth setting for `rate' effect from 99% to 95%; use `rate -s' to be compatible with SoX v14.1.0. (robs) o New options for `rate' effect to configure phase response, band-width and aliasing. (robs) o New options for 'dither' effect: RPDF, TPDF, noise-shaping. (robs) o New `riaa' effect: RIAA vinyl playback EQ. (robs) o New `loudness' effect: gain control with ISO 226 loudness compensation. (robs) o New `bend' effect; pitch bending. (robs) o New -b option for the norm effect; can be used to fix stereo imbalance. (robs) o Wider tempo range for `tempo' effect. (robs) o New --effects-file option to read effects and arguments from a file instead of command line. (cbagwell) o `filter' effect now supports --plot. (robs) o Improved documentation for the `stat' effect. (robs) o Fix broken audio pass-through with noiseprof effect. (robs) o Fix graph legend display when using --plot octave. (robs) o Fix rare crash with `rate' effect. (robs) o Fix [2190767] `norm' under-amplifying in some cases. (George Yohng) o Fix [2007062] Earwax effect can overflow; should clip. (robs) o Fix [2223251] mcompand should use linkwitz-riley. (robs) o Fix `phaser' clicks and overflows. (robs) o Trim will now skip past 2G point correctly. (cbagwell) o Improved handling of speed changes in the effects chain. (robs) The list of audio and playlist file formats we're supporting is: AUDIO FILE FORMATS: 8svx aif aifc aiff aiffc al amb au avr caf cdda cdr cvs cvsd dat dvms f4 f8 fap flac fssd gsm hcom htk ima ircam la lpc lpc10 lu mat mat4 mat5 maud nist ogg paf prc pvf raw s1 s2 s3 s4 sb sd2 sds sf sl smp snd sndfile sndr sndt sou sox sph sw txw u1 u2 u3 u4 ub ul uw vms voc vorbis vox w64 wav wavpcm wve xa xi PLAYLIST FORMATS: m3u pls 5. Interface changes since LSARC 2008/706: Imported interfaces Classification Interface type =============================== ============== ============== sys/soundcard.h Uncommitted header sndfile.h Uncommitted header vorbis/codec.h Uncommitted header FLAC/all.h Uncommitted header Exported interface amendments Classification Interface type =============================== ============== ============== /usr/bin/amd64/sox Uncommitted command /usr/bin/sparcv9/sox Uncommitted command /usr/bin/soxi Uncommitted symlink /usr/bin/amd64/soxi Uncommitted symlink /usr/bin/sparcv9/soxi Uncommitted symlink /usr/bin/rec Uncommitted symlink /usr/bin/amd64/rec Uncommitted symlink /usr/bin/sparcv9/rec Uncommitted symlink /usr/bin/play Uncommitted symlink /usr/bin/amd64/play Uncommitted symlink /usr/bin/sparcv9/play Uncommitted symlink /usr/lib/pkgconfig/sox.pc Uncommitted library /usr/lib/libsfx.so Obsolete Uncommitted library /usr/lib/amd64/sox/*.so Project Private conversion libraries /usr/lib/sparcv9/sox/*.so Project Private conversion libraries 5a. Manpage amendments /usr/share/man/man1/soxi.1 Uncommitted manpage /usr/share/man/man1/rec.1 Uncommitted manpage /usr/share/man/man1/play.1 Uncommitted manpage /usr/share/man/man5/soxexam.5 Obsolete Uncommitted manpage 6. Resources and Schedule 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: SFW 6.5. ARC review type: self-review / already approved per LSARC 2008/706 6.6. ARC Exposure: open 6. Resources and Schedule 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: SFW 6.5. ARC review type: FastTrack 6.6. ARC Exposure: open