1. Finalized the initial `IEncoder` interface with a new
`GetPreferences()` method so external parties can configure encoder
operation.
2. Updated `IEnvironment` interface with a new `GetPreferences()` call
so plugins (e.g. encoders) can be configured by other plugins.
3. Fixed sort order in plugin list to be alphabetical.
4. Ensure the main app depends on the "stockencoders" plugin in the
Visual Studio solution.
- Renamed websocket_remote plugin to "server"
- Added IEncoder, IEncoderFactory interfaces to SDK. Updated
IEnvironment and related plumbing; plugins can now declare encoders and
other plugins can request instances through the SDK.
- Removed LAME encoding from websocket_server plugin, created new
stockencoders plugin that includes both LAME and Ogg Vorbis encoders.
- Moved to dynamic libraries for ogg, vorbis, libvorbis so it can be
shared between encoding and decoding plugins.
- Plumbing for new "format" URL param through HttpServer, Transcoder,
and TranscodingDataStream. Use new IEncoder functionality to deal with
on-the-fly re-encoding
an HTTP/HTTPS connection.
- Added libcurl and libressl as project dependencies.
- Added HttpDataStream (which uses libcurl and libressl). Includes an
LruDiskCache so responses can be cached to disk for offline playback.
- Added new IEnvironment SDK interface. Plugins can query the
environment for path information, data streams, or decoders. More
functionality will be added over time.
- Fixed FlacDataDecoderFactory to handle the correct mime type
(audio/flac, not audio/flag)
- Tweaked NomadDecoder.cpp to return the stream length immediately instead
of waiting for an fseek().