1. fixed bugs around abusing the StreamingPlaybackService::next()
2. added album art to MediaSessionCompat implementation
3. minor refactors to the way AlbumArtModel works
4. added constants for preferences keys and defaults
auto-incrementing int)
- ensure the web server plugin sends 'external_id' to clients
- allow user to configure streaming disk cache size on the android
client
- some other android client ui cleanup
ids. Use signed integers only. This simplifies things, and simplifies dealing
with these values in languages that don't natively support unsigned value
types, e.g. Java. It also slims down our SDK interfaces and implementations.
- Added ?bitrate=xyz param to /audio/id/ or /audio/external_id/ requests
- By default audio is transcoded incrementally, on-demand using an
estimated content-length. On a range request, the stream is transcoded
entirely. Transcoded audio is cached upon completion to make
subsequent requests faster and ease server load.
- Updated the Android client to support transcoding options. Transcoding
is disabled by default.
- Added a scary warning to the "disable ssl cert validation" option.
Android app. Summary of required changes:
1. Removed TransportModel and related classes, created PlaybackService
interface. Old TransportModel code now lives in RemotePlaybackService.
2. Added StreamingPlaybackService implementation of PlaybackService.
Uses MediaPlayer or ExoPlayer to stream audio via HTTP.
3. Added SystemService that is used by StreamingPlaybackService. It's a
real Android service that manages notifications, wake locks, media
buttons, and other system integrations.
4. Added RxJava and RxAndroid. Use them in StreamingPlaybackService to
keep logic as sane as possible.
5. Added playback mode selection to settings (streaming vs remote). Also
added a field for streaming audio port.
6. Added "ids_only" request type to WebSocketServer when requesting list of
tracks.
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().