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


Reply via email to