FF (mpeg and) SoX 2a Input Plugin for Winamp

Copyright © 2010-2019 by Peter Belkner (http://home.snafu.de/pbelkner/)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

Nanos gigantum humeris insidentes: This project is dedicated to my European heritage. It is strictly to be understood as a statement against the "sweet" liberal lie of "multiculturalism" which is going to destroy Europe as we know it, in particular against the Merkel regime selling out Europe for nothing as we watch. #TeamWhite

Download the Latest Version

Contents

  1. About
  2. News
  3. Installation
  4. Configuration

1. About

FF (mpeg and) SoX Input 2a is a plug-in for Winamp based on the FFmpeg and SoX libraries. Using FFmpeg almost all multimedia files may be played with Winamp, including but by far not restricted to H.264, VP8, and Opus.

Note that only a minimal FFmpeg is bundled with FF (mpeg and) SoX 2a Input Plugin releases. If you you want to have full FFmpeg support you have to get a complete FFmpeg build from third party sites (see below).

Home:   http://1978.website.snafu.de/software/in_ffsox-2a/doc
Project:   http://sourceforge.net/projects/in-ffsox/
Download:   http://sourceforge.net/projects/in-ffsox/files/in_ffsox-2a/
 
FF (mpeg and) SoX Input at WA Forum:   http://forums.winamp.com/showthread.php?t=319968 (discontinued)
 
Yet Another (WA)SAPI Output for Winamp:   http://1978.website.snafu.de/software/out_yasapi-nt/doc/
Loudness Analysis with BS1770GAIN:   http://1978.website.snafu.de/software/bs1770gain/doc/
Loudness Analysis with R128GAIN:   http://r128gain.sourceforge.net/
Keep HDD Alive for Winamp:   http://gen-hdd.sourceforge.net/
Yet Another Shuffle for Winamp:   http://1978.website.snafu.de/software/yapib/doc/

2. News

2020-06-03
pinned
 
  • As it seems our days at Sourceforge are counted. At least we’ve received a respective ultimatum:
    Isn‘t it funny that this is happening at the exact same time as Donald J. Trump is going to crack down all that commie scum?
  • In order to comply with their “policy” we’re not any longer going to let host this page by Sourceforge but have copied it already to http://1978.website.snafu.de/software/in_ffsox-2a/doc.
  • Within a few days we’re going to remove it from Sourceforge.
  • 2020-06-04: We’ve in mind that starting from Monday, 2020-06-08, everything you’ll see here is this.
2019-02-14 0.6.1
2019-01-13 0.6.0
  • Introduced an option to lower the video renderer's thread priority:

    Note: Unfortunately we don't have access to Winamp's video renderer. It's, of course, FFSoX's video renderer in turn utilizing Winamp's video renderer.
  • We're not certain on what's the most lowest priority, wether it's Lowest or whether it's Idle. You should study on yourself what Microsoft has to say on the topic.
  • Anyway, on our system we've found neither Lowest nor Idle harmful. Instead, in conjunction with our YASAPI/NT Output plug-in w've found it useful to chose some low priority in order to minimize disturbing YASAPI/NT's audio render thread (especially when used in lowest latency double buffered mode) by playing back some video.
2018-12-18 0.5.1 Slightly changed parameterizing YASAPI/NT's API. In case you're using YASAPI/NT you should upgrade to YASAPI/NT v2.3.0-β8.
2018-12-07 0.5.0
  • You may choose different modes of integrating (the up-coming v2.3.0-β4 of) the YASAPI/NT output plug-in:
    • Off: no integration at all, i.e. using the Nullsoft advertised busy waiting approach,
    • Internal: streaming audio on basis of the buffer internal to the plug-in with the Nullsoft advertised minimum size of 576 frames, and
    • External: streaming audio on basis of the WASAPI device's buffer (external to the plug-in) size (usually much, much smaller than 576 frames.)
  • Using the integration may dramatically reduce latency.
  • Update 2018-12-08: The above announced YASAPI/NT's version 2.3.0-β4 is online now.
2018-10-20  
2018-10-14  
  • Please note the interesing discussion triggered by Benski (to us one of the talented Winamp developers having left the sinking ship):

  • Please also note that exactly this is one out of FFSoX Player's aims:
    • the option of playing back a video's audio with R128 RG, and (of course)
    • the option of displaying the video itself.
  • @Benski: Leave Winamp as it is. Don't morphe it into "a stripped down" Winamp "without any sort of [...] video [...] support" because it would be "much easier to maintain"!
  • Update 2018-10-16: User sugarshane has an argument in favor of video playback which is ours too:
  • Update 2018-10-17: User xmuzack is also in favor of video playback:
2018-09-01   We're aware that we're not the world's most gifted software developer. Anyway, we feel that we belong to #TeamWhite and hence added the respective hashtag to the above note.
2018-07-30 0.4.11
  • Just recently discovered that the SoX re-sampler was broken. This release restores it.
2018-04-08 0.4.10
  • Fixed a long, long standing issue that the plug-in may freeze when Winamp is closed from Pause.
2018-02-05 0.4.9
  • Fixed determining audio PTS when downmixing.
  • Replaced meanwhile deprecated AVFormatContext::filename by AVFormatContext::url.
2018-01-06 0.4.8
  • For another time re-wrote the core Makefile in order to avoid recursion.
  • Included unistalling SoX, Opus, or FFmpeg, respectively, when a new version is downloaded.
  • Included an upload target in order to automate the up-load of a release to sourceforge.net by means of the rsync command. (Note: This release was up-loaded using the new feature.)
  • Added a README file to the release.
2018-01-01 0.4.7
2017-12-29 0.4.6 Fixed a bug w.r.t. SoX re-sampling slipping through in v0.4.3. (A big thank you goes out to Ralf for pointing me to it!)
2017-12-27 0.4.5
  • Renamed the project from FFSoX Player 2a to FF (mpeg and) SoX 2a Input Plugin for Winamp.
  • Further polished the build process.
  • Dropped the call to av_lockmgr_register() which was decalared deprecated (cf. [FFmpeg-devel,2/5] lavc: replace and deprecate the lock manager). The respective comment in "libavodec/avcodec.h" reads:
    /**
     * @deprecated This function does nothing, and always returns 0. Be sure to
     *             build with thread support to get basic thread safety.
     */
  • Support for the YASAPI output plug-in (circumvent Winamp technologie in case the output plug-in offers a respective API and directly write to the YASAPI ring buffer; not published yet from YASAPI side).
2017-12-24 0.4.4 Fixed broken Skip.
2017-12-22 0.4.3
  • Subsitituded all FFmpeg APIs marked deprecated by there avertised replacements, in particular
  • Even if these changes doesn't provide any advantage in end-user experience we hope that we've made the plug-in fit for the next FFmpeg version bump and that in that case it just will need re-complilation to be compatibe with third party (full) FFmpeg builds again.
2017-12-15 0.4.2 Having observed that sometimes the visualization is not starting after playing video as a consequence it is now possible to configure a respective delay in order to avoid this.
2017-11-30 0.4.1
2017-11-26 0.4.0
  • Made in_ffsox compatible again with the latest FFmpeg builds by replacing avpicture_deinterlace() (which was dropped from FFmpeg and came from avcodec-<version>.dll) by the yadif deinterlacing filter from avfilter-<version>.dll. As a consequence this release depends on the following FFmpeg DLLs:
    • avutil-86.dll,
    • swresample-3.dll,
    • swscale-5.dll,
    • postproc-55.dll,
    • avcodec-85.dll,
    • avformat-85.dll,
    • avfilter-7.dll.
  • Moved to SoX 4.4.2, i.e. libox-3.dll.
  • Added a swich for disabling/enabling the plugin to the configuration dialog.
  • Moved from the MSYS environment to the MSYS2 environment.
  • Re-structured (simplified) the build process (hence 2a instead of just 2) by making use of a feature known as delayloading.
  • Added a political statement to the top of this page.
2015-02-02 0.3.3 Pass -666 for bufferlenms to the output module when playing video.
2014-10-04 0.3.1 Made the plug-in compatible with the latest FFmpeg (cf. changed FFmpeg ABI).
2014-05-16 0.3
2014-01-01 0.2.1 Fixed a serious synchronization issue between this plugin and WA's output module.
2013-12-31 0.2 Removed playing on stop until the audio buffer is empty.
2013-12-20 0.1.5
  • Fixed clipping of the decoder under certain circumstances.
  • Reverted back to avutil-52 (i.e. being compatible with Zeranoe's FFmpeg builds again).
2013-12-18 0.1.4
  • Added a convenience option to force a certain sample rate.
  • Support for multiple frames in a FFmpeg packet.
  • Support for file/version info in resources.
  • Support for bumped avutil-53 (instead of avutil-52 as before).
  • Added the Theora video codec to the crippled FFmpeg shipped with the plugin.
  • Refer to the Winamp Enthusiast Forum instead of the dying Winamp Forum.
  • Fixed getfileinfo() again.
2013-12-08 0.1.3 Fixed getfileinfo().
2013-11-23 0.1.2 Adapted the build process to latest FFmpeg.
2013-10-06 0.1.1 Fixed seeking when embedded albumart is BMP or PNG.
2013-09-28 0.1 FFSoXPlayer 1 is not recommended any longer because of incompatibilies with recent FFmpeg versions.

3. Installation

  1. If not already done download and install Winamp:
    Winamp, Download bei heise
  2. If not already done close Winamp.
  3. Download the latest FF (mpeg and) SoX 2a Input Plugin release.
  4. Run the installer "in_ffsox-<ver>.exe".
  5. If you want to have full FFmpeg support do the following:
    Otherwise you are confined to the crippled FFmpeg shipped with the FF (mpeg and) SoX 2a Input Plugin, configured as follows:
    # decoders
    FFMPEG_OPTS+=--enable-decoder=pcm_s16le
    FFMPEG_OPTS+=--enable-decoder=pcm_s24le
    FFMPEG_OPTS+=--enable-decoder=pcm_dvd
    FFMPEG_OPTS+=--enable-decoder=flac
    FFMPEG_OPTS+=--enable-decoder=wavpack
    FFMPEG_OPTS+=--enable-decoder=vorbis
    FFMPEG_OPTS+=--enable-decoder=libopus
    FFMPEG_OPTS+=--enable-decoder=vp8
    FFMPEG_OPTS+=--enable-decoder=theora
    # demuxers
    FFMPEG_OPTS+=--enable-demuxer=pcm_s16le
    FFMPEG_OPTS+=--enable-demuxer=pcm_s24le
    FFMPEG_OPTS+=--enable-demuxer=flac
    FFMPEG_OPTS+=--enable-demuxer=wav
    FFMPEG_OPTS+=--enable-demuxer=ogg
    FFMPEG_OPTS+=--enable-demuxer=matroska
    
  6. Start Winamp.

4. Configuration

4.1. General

4.1.1. Winamp
 
Extensions:  a semicolon separated list of extensions for which Winamp should use this plugin (including a switch for disabling/enabling the plugin)
Bits per Sample:  the bit depth of the audio stream this plugin should deliver to Winamp, shoud correspond to Preferences → Playback → Playback → Audio Allow 24bit
Show Video:  whether this plugin should display the video in case video is present
Show Visualization:  whether this plugin should force Winamp to display the visualization in case no video is present or displaying video is switched off (the optional delay specifies a time interval to elaps until the visualization starts)
 
4.1.2. Replay Gain
 
Off:  whether not to apply replay gain
Weight:  which replay gain to apply: 0% – album gain, 100% – track gain
Overwrite Comment:  whether the File Info dialog should display replay gain related information in it's Comment field

4.2. Audio

4.2.1. Audio
 
Queue Size:  how many FFmpeg audio packets the plugin shoud cache
Preamp:  amplify or attenuate, respectively, the audio by a certain amount
AC3 DRC:  for AC3 audio, whether dynamic range compression (DRC) according the FFmpeg specification should be applied (switched off: the FFmpeg default behavior appplies wich seems to be 0.0)
Force Stereo:  wether two channel stereo should be output
 
4.2.2. SoX
 
Mode:  Off – never use SoX, Automatic – use SoX when appropriate, or Force – always use SoX
Sample Rate:  Minimum – whether to resample only if the input sample rate is lower then the configured one, Multiple – wether to resample to the lowest multiple of the input sample rate which is greater or equal than the configured on (i.e. if you want to force resampling to the configured sample rate both switches), Minimum as well as Multiple, have to be switched off), Force – a convenience to switch off both, Minimum and Multiple (i.e. force the configured sample rate)
Dither:  which algorithm to be used for dithering

4.3. Video

Queue Size:  how many FFmpeg video packets the plugin shoud cache
Minimum Drift:  the minimum time difference between audio and video to tolerate in order to not drop a video frame (please note that this parameter is sensitive to the overall stability of the plugin)
Maximum Drift:  the maximum time difference between audio and video to tolerate in order to not drop a video frame (please note that this parameter is sensitive to the overall stability of the plugin)
YADIF Disabled:  Whether the yet another deinterlacing filter (YADIF) should be disabled
YADIF Parity:  In case YADIF is enabled, choose it's mode parameter out of
  • output one frame for each frame,
  • output one frame for each field,
  • output one frame for each frame, but skip the spatial interlacing check, or
  • output one frame for each field, but skip the spatial interlacing check.
YADIF Mode:  In case YADIF is enabled, choose it's parity parameter out of
  • assume the top field is first,
  • assume the bottom field is first, or
  • enable automatic detection of field parity.
YADIF Deinterlace:  In case YADIF is enabled, choose it's deinterlace parameter out of
  • deinterlace all frames, or
  • only deinterlace frames marked as interlaced.

4.4. Convert

  

These options mirror their respective playback general and audio counterparts but instead define how this plugin shout interact with Winamp's transcoding feature, i.e. Playlist Item → Context Menu → Send To → Format Converter: