# SHOUTcast Source DSP Changelog

(Last Updated 26 September 2014)

### 2.3.5 Build 222

- Changed to use Winamp's networking library (jnetlib) instead of the older forked version being used (this will be helpful in the future)
- Changed to prompt if Winamp is set to use 24-bit playback mode (which we do not support in this plug-in)
- Fixed some setups not being able too connect to a 2.x DNAS in 2.x mode due to the recent 'automatic mode' support and slow DNAS handshaking
- Fixed the next song title not being recognised by the DNAS (DNAS expects the XML with a specific case of the element names e.g. soon and not SOON)
- Fixed the automatic reconnect time being reset to 1 second between sessions
- Reduced the memory usage of connections to only allocate the memory needed (this typically only saves a few KB but it's still a saving!)
- Miscellaneous code tidyups, documentation updates, branding changes and other small related changes

### 2.3.4 Build 210

- The first Radionomy provided SHOUTcast Source DSP release after the sale of SHOUTcast (and Winamp) in January 2014
- This is primarily a maintenance release to resolve issues and broadcaster requests with the 2.3.x Source DSP since the last build provided under AOL ownership
- Added 'automatic mode' for selecting the SHOUTcast protocol to use which should ease setup issues (there is still the ability to explicitly set the protocol mode like before)
- Changed minimum required version of Winamp to v5.6+ due to building changes (below) and to simplify version compatibility and testing
- Changed building of the plug-in to better match with the Winamp style for dependent dlls (this saves ~132KB)
- Changed title update handling in respect to issues related to CVE-2014-4166 (which we were not informed about before it was disclosed!)
- Changed to allow the plug-in to load if lame_enc.dll cannot be found (related to the change below) - previously it would not load at all
- Updated genres to the current supported list of genres (as detailed in http://forums.shoutcast.com/showthread.php?t=303241)
- Removed lame_enc.dll from the installer - if not present in your Winamp install you will need to manually obtain a copy and place in the appropriate folder for your Winamp install
- Miscellaneous code tidyups, optimisations, adjustments for future Winamp releases, branding resource changes and other related changes

### 2.3.3 Build 201

- Added support for multiple instances of the plug-in so as not to mangle the settings (ini name is now based on the plug-in dll name)
- Added blocking of station names with only punctuation in them from being allowed to connect (matches YP-side) and updated illegal list
- Added displaying of the metadata and artwork currently present in Winamp when that is the selected mode on the input tab
- Added reporting of the 'type' of the artwork on the Winamp metadata panel (generally requires Winamp 5.64+ to work correctly)
- Added double-click to view file in explorer on the Winamp metadata panel
- Added Winamp v5.64+ safe mode support
- Changed how loading of the dialog is handled to try to improve it to appear on top of Winamp if set to load on startup
- Changed selecting appropriate input fields to select all text in the field (makes it quicker to enter new port values, etc)
- Changed handling of the UI tabs to reduced memory usage where possible
- Changed default playing artwork to use jpeg when not able to get the raw artwork on older (<5.6) Winamp clients
- Changed main input dialog to hide the soundcard options when in Winamp mode instead of disabling and changing the text
- Changed the 'quit' code to better ensure everything applicable is left in a clean state (helps to improve re-opening the window without a complete unload of the plug-in
- Fixed loading of the plug-in to not crash / lockup Winamp's UI when lame_enc.dll cannot be found
- Fixed Winamp / Soundcard options on the summary tab not being checked on loading
- Fixed some of the error indicator drawing appearing incorrectly after closing the window and re-opening (without a complete unload of the plug-in)
- Fixed closing the window not working properly next time / after a few repeat closes due to memory corruption issues and not correctly stopping the broadcast threads in all scenarios
- Miscellaneous code tidyups, size optimisations (~40kb), crash fixes, improved memory handling and other related changes to improve useability of the plug-in

### 2.3.2 Build 189

- Fixed all reproduceable issues when switching between Winamp and Soundcard mode as well as switching between the different soundcard input modes (should fix all reported crashes when switching between these modes)
- Fixed soundcard input not being initialised correctly in all of the previous v2.3.x releases
- Fixed the 'connect' button getting disabled when switching from the 'summary' to the 'output' tab
- Fixed crash when playlist was cleared and Winamp was in a specific playback state leading to information could not be properly handled
- Updated list of station names not allows for being listed in the Directory
- Updated albumart support to get the raw playing artwork instead of the decoded artwork and having to re-encode to png when using Winamp v5.6+ (still happens on pre-5.6 or if there is an external artwork file due to the Winamp artwork api)

### 2.3.1 Build 182

- Added logging of the metadata and artwork details obtained from Winamp before sent to the server (if logging it enabled)
- Fixed some connection stability issues when connecting to a remote server (typically happens when in-stream artwork is enabled)
- Fixed large metadata updates (typically in-stream artwork but also could affect title updates) not sending all frames to the server
- Fixed some rare lockups when sending metadata frames to the server
- Fixed the 'kill' action not working or responding as expected in certain scenarios
- Changed the 'Directory' tab to enable Name, Url and Genre options when using v2 mode and the stream is set to be public
- Changed toggling of the in-stream artwork options to refresh the cached artwork copy when re-enabled
- Changed log messages to filter out excessive "Cipher Response Received" messages and changed to show "Unable To Connect To The Server. Try enabling 'SHOUTcast v1 mode'." if stuck at that state
- Removed the "Ignore 'Sent X bytes' status messages" option from the logging tab (should have been removed in v2.3.0)

### 2.3.0 Build 177

- Added a number of stream configuration details onto the summary view to see what each stream is configured for without having to go to the 'output' tab
- Added clickable buttons on the summary listview to allow for quick control of the streams
- Added toggling of the stream playing state in the summary listview view via the space key
- Added support for saving the encoded stream output to a specified file to allow DJ's to keep a copy of their output
- Added options for toggling between Winamp and Soundcard mode on the summary page
- Added tooltips to the summary listview so any clipped text can be seen
- Added peak level indication since the DSP was started for left and right
- Added visual info on the artwork page if artwork will be sent or not
- Added better checking of entered values to ensure only what is supported can be entered e.g. port range limit from 1-65535
- Added better handling of NAK errors from the DNAS in v1 and v2 mode as well as required updates from v2 protocol changes e.g. for 'Bit Rate Error' and 'Stream Moved' responses
- Added 'red' tab text to indicate the tab which has missing or invalid information which prevents a connection from starting
- Added some details of the connection in the logs to make it easier to see the details
- Added handling to remember custom titles between Winamp instances
- Changed all of the known genres to support all changes made to the official genre list at the time of release including the adding of new genres (Decades -> 00s, Folk -> Old Time, International -> German) and changing some (Jewish to Hebrew or removing any dashes)
- Changed some of the output sub-tab names to make things more consistent
- Changed 'user id' to be able to accept the DJ name when used in v1 mode so it will automatically convert it to the 'name:password' format as used with v1 Transcoder DJ connections
- Changed the title options to be on their own page with some layout changes
- Changed a failed connection to now wait up to a second before trying again to prevent hammering the server
- Changed '[xx:xx:xx] Sent xxx bytes' to now scale from bytes to KiB to MiB to GiB
- Changed in-stream metadata (titles and artwork) to be included in the v2 stream bytes sent total shown
- Changed paused / stopped silence filling to keep the output bitrate the same as playing now without the prior hacks
- Changed the 'online documentation' link to open a local copy if available
- Changed the GUID for the plug-in's language file to now be {88380E65-4068-49BA-8EA4-3F2AF12D0A4F} due to the large number of resource changes from the previous releases
- Changed user-agent for v1 title updates to match with the v2 metadata's TENC field version (is now "SHOUTcast Source DSP x.x.xx Title Update (Mozilla)")
- Changed to use Lame 3.99.5 (lame_enc.dll) or the most current version shipped with Winamp (makes it easier to update without a custom built lamedll.dll as previously used)
- Changed the 'connect' button to show 'set password' or 'change name' or 'set encoder' or 'set server' when disabled to make it clearer why it's not enabled e.g. if 'unnamed server' or nothing is set for the station name or password fields
- Changed default page to be the output page instead of summary on new installs
- Changed encoder default to be AAC+ if possible (so it's one less thing to do on loading) and fixed MP3 to default to 96kbps stereo on clean installs
- Changed how the dialog is loaded to resolve a part close / crash seen in a few rare cases
- Changed the waveInReset(..) change from 2.1.3 back to the pre-2.1.3 behaviour to see if it resolves some of the crash issues reported since the change
- Fixed a small audio loss / silence injection when a stream starts or when a title update happens
- Fixed the title cache update to only send an update if there is an actual change (filters out quirks with streaming from another stream)
- Fixed 'invalid password' scenarios not being correctly reported
- Fixed stream artwork not being correctly updated after being set to an invalid / empty file
- Fixed unusually large cipherkeys causing a crash when attempting to connect to the server
- Fixed v2 mode doubling up the sent bytes total in some specific scenarios
- Fixed memory leak when processing the playing album art due to not always removing the original image
- Fixed a disconnect-connect or re-connect scenario incorrectly trying to re-send the stream artwork when not present / not enabled
- Fixed metadata packet creation some times going over the 16384 byte limit (16371 byte payload limit)
- Fixed artwork cleared updates being sent when not applicable
- Fixed playing state not being correctly detected if Winamp was already playing when the DSP is loaded
- Fixed issue causing sparodic injection of invalid data into the output buffer for encoding
- Fixed artwork not being correctly sent after a disconnect in some scenarios
- Fixed random crash when updating the next playing song information
- Fixed excessive updating of the controls on the output page
- Fixed MP3 encoder not showing all encoding options when in Winamp mode under some incorrectly inherited settings
- Fixed v1 metadata updates potentially causing a one handle leak for each title update
- Fixed manual titles not being sent in all cases
- Fixed next titles being sent even if option is unchecked
- Removed dsp_sc_enc.ini usage with all temporary encoder settings now stored in dsp_sc.ini
- Removed default values for userid and password to force a valid value to be entered
- Miscellaneous code tidyups, optimisations, removal of unwanted code, resource changes and other related changes to improve useability of the plug-in

### 2.2.3 Build 112 [top]

- Fixed title updates to remove characters the v2 DNAS will abort a connection on
- Fixed DSP not starting connections if Winamp is starting minimised
- Fixed the AAC encoder not being re-loaded if closing the dialog and re-opening without re-loading the DSP
- Fixed some rare issues preventing the dialog from loading correctly

### 2.2.2 Build 107 [top]

- Added support for Winamp 5.62's new AAC encoder dll (Winamp now uses Fraunhofer's AAC library instead of Coding Technologies)
- Changed the genre to be chosen from a menu (in supported situations) so only allow supported values
- Changed MP3 default settings to be 96 kbps Stereo (meant to have been this for a while but wasn't working)
- Changed default genre to be 'Misc' on clean installs or on loading and not matching the supported genre list
- Changed the version string so it's more like the v1 tools (and pending DNAS / Transcoder updates)
- Changed 'Description' to 'Name' on the Yellow Pages tab
- Fixed the vu input meters to not show a level if there is currently no audio input instead of keeping the last value
- Fixed issue with loading of the config dialog not showing the tabs correctly in some situations
- Fixed sending a manual title update in v2 mode also incorrectly sending inappropriate cached title data
- Miscellaneous code tidyups, optimisations, removal of unwanted code

### 2.2.1 Build 99 [top]

- Fixed crash on some machines when the playlist editor is empty
- Fixed some minor localisation issues with some of the error messages
- Fixed the installer not setting the DSP as the default DSP for some non-standard installs
- Changed message when loading in an invalid configuration to mention DSP stackers

### 2.2.0 Build 97 [top]

- Added new 'Artwork' tab which allows for configuration of how and what artwork will be sent for SHOUTcast 2 streams to a compatible SHOUTcast 2 DNAS)
- Added support of the IPC_GETNEXTLISTPOS api in Winamp 5.61+ to better determine the next song to be played even if shuffle is enabled
- Added explict blocking of trying to load the plug-in not in Winamp to resolve loading issues and crashes due to lacking api support required
- Added to the logs tab the option to log the next tracks to be played from the DSP in plain txt or in xml format
- Added sending of icypub data as per SHOUTcast 2 protocol specifications (only needed for the SHOUTcast 2 DNAS)
- Added 'lookahead' ini only option for determining how many next tracks from the playback queue (if available) to report (default is 3)
- Changed all of the SHOUTcast 2 packet generation to fix a number of issues like large / invalid packets, being unable to connect, unstable connections
- Changed all of the title gathering to no long poll Winamp but instead query it directly (reduces cpu usage and inproves reliability of metadata gathering)
- Changed all of the plug-in UI to use unicode where possible to improve localisation support
- Changed some of the UI elements to make certain information or errors more obvious (like the 'Cipher Response' message when using the wrong SHOUTcast mode)
- Changed the 'Logging' tab to 'Logs' due to the wider range of options it now provides
- Changed next track logging to be a per-configuration feature instead of being applied globally (as in the previous DSP release)
- Changed to send the full title in the metadata block for the first (current) title so it follows the SHOUTcast 2 specs
- Changed the 'Send Update' button to not be enabled unless there is a title to send as well as disabling the next title option as applicable
- Changed YellowPages tab to disable options not applicable to SHOUTcast 2 mode and when running as a public server (where the details relating to 'streamauthhash' for the DNAS are used instead)
- Changed to send a default stream id if one is not specified in SHOUTcast 2 mode to improve DJ connection issues (which can fail if not specified)
- Fixed some metadata conversions leading to crashes
- Fixed internal utf8 conversions to prevent malformed SHOUTcast 2 metadata being generated which would cause the SHOUTcast 2 DNAS to block the connection
- Fixed some of the entered stream configuration options to not accept invalid input and revert to safe defaults as applicable if this happens
- Fixed some issues with logging initialisation leading to random lockups in some rare cases
- Fixed memory corruption using SHOUTcast 2 mode preventing 'Connection 1' being used in rare cases (mainly affected Windows 2000 / XP systems)
- Fixed metadata not being sent if the connection to the DNAS is lost and a connection then comes back or is manually started
- Fixed clean up of resources if unloading whilst Winamp is still running to prevent a potential crash on close or UI corruption when the plug-in is loaded again
- Fixed when Winamp is not playing or is paused outputting blank stream data at a higher rate compared to playing leading to higher bandwidth usage then should be happening
- Fixed the Summary page listview flickering on update
- Fixed rare crash when Winamp is not playing and certain playlist configurations are in use when trying to find the next track title
- Fixed to not reset the music levels if not using the soundcard input on closing
- Fixed to not reset the Winamp level if not using the soundcard input on startup but will instead apply it on changing to soundcard input
- Fixed playback queue lookup issues on older 5.5x clients when api_queue is not present or not correctly loaded when queried
- Fixed the 'Send Update' option to not send cached information from Winamp's title and to not crash in rare situations
- Fixed rare lockup issue when using the soundcard input due to the input device taking longer to reset than expected
- Fixed refresh capture device not setting to a valid selection if the number of devices changed
- Updated help link for the plug-in to go to the new page at http://wiki.shoutcast.com/wiki/Source_DSP_Plug-in
- Updated installer to allow the plug-in to be set as the default DSP as well as run Winamp after completion (with the checked states remembered for next time)
- Miscellaneous code tidyups, optimisations, removal of unwanted code and other build related changes to make this more portable at a later date

### 2.1.3 Build 42 [top]

- Added passing of metadata from the playing track (if known) to the server so it acts like sc_trans from a client connecting to the stream
- Added an option to not log 'Status X bytes' messages (enabled by default) and improved log file handling
- Added a refresh capture device button to help update the plug-in if connected capture devices have changed
- Changed status info duration to be the time connected rather than a relative date time and allows for more than 24hrs to be displayed e.g. 26:48:57 instead of looping back to 03:48:57
- Changed logging to filter 'Status X bytes' messages to only 1 second (if the option to include them is enabled)
- Changed log files to use CR+LF linebreaks instead of just LF
- Changed logging to remove newlines so each message is a single line to match the status info
- Fixed crash on Vista (and potentially Windows 7) where no capture devices are being present resulting in no default capture device known
- Fixed crash in SC2 mode when a different cipher is set in the plug-in to the server as well as indicating this error in the status info
- Fixed button images in the 'Soundcard Mixer Control' section not appearing on all OSes

### 2.1.1 Build 36 [top]

- Added new 'Logging' tab on the Output tab to log the connection status messages
- Added a mini dropdown next to the 'Lock' button for 'Push to Talk' to allow the mode to be automatically enabled on startup
- Fixed plug-in to not crash when the network connection is lost
- Fixed random plug-in crashes whilst the plug-in is streaming (mainly in SC2 mode)
- Fixed internal plug-in uninstall not always working
- Fixed SC2 title updates to properly work as UTF-8 and to not strip out characters incorrectly
- Fixed next track detection to only be reported if shuffle mode is off and not to act in an undefined manner when on the last playlist item (wraps around to the start of the playlist as needed)
- Fixed title updates to cope with the same title being played but the next song title being different
- Changed SC2 metadata to not output <soon> and <title seq="2"> tags in the xml metadata if they are not known (when shuffle mode is enabled)
- Changed the <TENC/> tag in the xml metadata to include the plug-in version

### 2.1.0 Build 33 [top]

- Added a separate capture device fader timeout option
- Added copies of the plug-in documentation as an installer option
- Added help and documentation links to the 'About' tab
- Changed on Vista / Windows 7 to only show actually connected capture devices (requires a restart of the plug-in if connecting a new device whilst the plug-in is active)
- Changed the 'Open Mixer' button to open to the recording devices dialog on Vista / Windows 7
- Changed wording of the legacy mode checkbox to be clearer (hopefully) and added an info panel below to deal with the 'Cipher response message'
- Changed capture device level to not alter the device's level unless Push to Talk is active
- Changed the resolution on the faders from 500ms to 100ms (will re-map old settings)
- Changed opening of help links in the plug-in to follow Winamp's style of handling
- Fixed major issue in the plug-in leading to breaking of Winamp (and 3rd party plug-in's) COM usage
- Fixed running of the plug-in not starting auto-connect connections when 'Input' or 'About' were the opened tab
- Fixed capture device level not being correctly handled leading to spiking in on transitions (affected at least Windows 2000 / XP where it is all known to work)
- Fixed capture devices source selection not being remembered
- Fixed capture device and source levels not being set back to the non-Push to Talk level if Push to Talk is active when the plug-in is closed
- Fixed a few localisation issues with missing items on Windows 2000 / XP
- Fixed capture deviceRemoved tooltip from the microphone slider on the line-in page
- Fixed some issues with the installer and uninstaller
- Miscellaneous code changes to make some things easier to manage

### 2.0.2 Build 27 [top]

- Fixed SHOUTcast 1 connection errors to a remote connection
- Fixed authorisation error checking for Ultravox 2 & 2.1
- More changes to the output manager to avoid out of sync states
- Fixed timing issue which caused out of sequence Ultravox audio data frames in some scenarios
- Fixed some localisation and tabbing order issues on the config pages
- Removed unwanted encoder option on the Output -> Connection tab
- Added a SHOUTcast 1 mode only information prompt on how to enter the password for DJ connections

### 2.0.0 [top]

- Added SHOUTcast 2 (Ultravox 2.1) support for the generated stream data
- Cleanup and general fixes to the streaming support in the plug-in
- Fixed settings not being saved on Vista / Windows 7
- Fixed a number of lock-ups in the plug-in (should be more stable now)
- Fixed plug-in to not stall if Winamp is not playing
- Fixed a number of UI issues (tabs not showing in all cases, controls not in the correct tabbing order, theming issues, notification icon handling)
- Config window now remembers its last position between use
- Improved Lame encoder quality
- Attempted to resolve standard AAC (LC-AAC) not working (additionally this is reported as audio/aacp so it will work with the YP)
- Uses the current enc_aacplus.dll (AAC / AAC+ encoder) from the Winamp install used instead of bundling an old version from Winamp 5.1)
- Fixed SHOUTcast 1 issue with titles containing "[" & "]"
- Changes made to improve selection of the 'microphone' device allowing for more control over the capture device used
- Added localisation support to the plug-in (including supporting localised encoder plug-ins when showing their configurations)
- Some other minor changes including those from the 1.9.2 beta