-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b6b76ae
commit a1c0ab1
Showing
7 changed files
with
198 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
0.2.4.0 | ||
- add ARMv5 binary | ||
- When creating a UPnP renderer, set state(s) to STOP | ||
- Some players (moode) open the URL on SETURI, then close and re-open it on PLAY. But re-open might be received before close (due to threading), causing confusion with a double-open request. So use a mutex with timeout in sq_open | ||
- create a fake pthread_mutex_timedlock for OSX | ||
- Send SetPlayMode to NORMAL at each play (some players by default are in auto_repeat mode) | ||
- DLNA.ORG_OP set to 00 (limited random availability) | ||
- cli_send_cmd must return NULL only if command is not responded, otherwise allow respond with an empty string | ||
- sq_set_time: double format shoudl be %.1f not %.1lf | ||
- Do not send self-generated volume command on unpause, wait for the real volume request | ||
- Add <null_volume> when set (default) allow 0 to be set as volume | ||
- (P) increase web UI log line to 200 | ||
- (P) manual now available to view in a web browser tab | ||
- (P) add option to delete a player | ||
- (P) enable/disable from the list did not work if selected player was 'default' | ||
|
||
0.2.3.0 (plugin) | ||
- when log is disable, no log shall be generated eveen if extra debug options are set | ||
- space char instead of thab on line 186 | ||
|
||
0.2.3.0 | ||
- changing naming | ||
- cleaning LOG | ||
- AIFF problem is for all versions before 7.9 | ||
- AIFF partial header' in not sent in LMS < 7.9 when transcoding happens, so try to detect source file format | ||
- aif removed from default codec list, too troublesome | ||
- fwrite for 24 bits pcm was not using adjusted buffer size | ||
- Support fully AIFF => build header on the fly | ||
- Use TrackURI from GetPositionInfo and not from GetMediaInfo - this is more reliable and saves one polling UPnP request | ||
- by default, only use pcm in <raw_audio_format> because wav and aiff require a filesize and some players are stuck on the current URI when the whole size has not been received | ||
- Some players do not fill "TrackURI" so get it from "TrackMetaData" | ||
- add <log_limit> to limit the size of logfile | ||
- by default, codecs are <pcm,aif,flc,mp3> | ||
- Send a STOP to playing renderers at exit - critical otherwise libupnp does not stop (deadlock) | ||
- when checking codecs list, 'aif' was not in the matching list for 'aif' (only audio/L and wav) | ||
- In LMS 7.7, when sending pcm in AIFF format, there is an 8 bytes header to skip if the data is forwarded as PCM or WAV. Does not exist in 7.9 (don't know for 7.8) | ||
- Query LMS version at discovery do differentiate between different AIFF option | ||
- add option 2 to L24_format to truncate 24 bits in 16 bits for players that do only 16 bits (only for pm/aiff, not flac) | ||
- MainThread only sleeps 1 sec to speed up exit | ||
- optimize endianness changes | ||
|
||
0.2.2.2 (not published) | ||
- XML special char were not properly handled in DIDL header ==> moved to a full XML constructor, not a sprintf patch | ||
- using autosave, only <device> sections are written unless there is no existing config file | ||
- removed memory leak in SaveConfig (nodelist using wrong free) | ||
- add the full channel and sample rate in DIDL header, not only in content-type | ||
- OSX version is now multi-architecture, named squeeze2upnp-osx-multi | ||
- Some players do not feel "CurrentURI" properly in GetMediaInfo. Use the "CurrentURIMetaData" and parse it instead | ||
- Added partial AIFF support (not sending AIFF to player but accepting AIFF=PCM from LMS) ==> less byte-reordering needed | ||
- Codecs capabilities send to LMS only include codecs supported by UPnP player | ||
- added <raw_audio_format> as a comma-separated, ordered, list of file format sent to UPnP players amongst (pcm, aif, wav) | ||
- added <match_endianness> to try to match (within the priority of <raw_audio_format> byte orders between LMS and player to avoid CPU consuming byte re-ordering | ||
|
||
|
||
0.2.2.1 | ||
- mac_size in AddMR was wrong type causing a stack corruption on WinXP | ||
- version now works for XP and above | ||
|
||
0.2.2.0 | ||
- <buffer_dir> can be '?' (w/o the '') to enable use of default system "temp" dir (this is the default now instead of '.') | ||
- config parameters with incorrect values (buffer_size) no longer re-written with corrected values in config | ||
- config file generating (-i or 'save' while running )do not erase existing players | ||
- add command line option '-Z' to disable interactive mode, allowing backgrounding using '&' in Linux (no more consumes 100% CPU) | ||
- buffer files are now deleted each time user stops a playback unless new parameter <keep_buffer_file> is set to 1 | ||
- add <max_volume> parameter to scale and limit the <volume_curve>. Any value calculated from volume curve is scaled by <max_volume>/100 | ||
- Window version is renamed squeeze2upnp-win | ||
- add -I command line option to auto-save config file at each scan | ||
- some players trigger false detectio of URI change by reporting empty nextURI, so check the nextURI contains "-idx-" pattern | ||
- when saving an existing device, the UPnP friendly name was used, even if a different name was set in configuration | ||
- add -k option to force immediate exit on SIGINT, SIGQUIT and SIGTERM | ||
- handle SIGINT, SIGQUIT and SIGTERM properly | ||
|
||
0.2.1.0 | ||
- <upnp_scan_timeout> at 0 was not disabling scan | ||
- added <upnp_remove_count> parameter to remove a device only N times after failed re-discovery | ||
- add Ralphy's patch (SendARP) to compile for OSX | ||
- reset read pointer in sq_read by calling fseek | ||
|
||
0.2.0.1 | ||
- Race condition where a upnp poll-response can be interrupted by the update thread that removes that device - locking a non-existing mutex happens then | ||
- Handle 24 bits mono tracks with PACKED format | ||
- when <send_metadata> was disabled, some default metadata were not initialized (was missing backport from 0.1.4.0) | ||
- very quick pause/unpause created an infinite loop (created by fixing dealock issue between upnp notification and LMS playback in 0.2.0.0) | ||
- on quick unpause/pause, the pause command was ignored - can be irritating if unpause was pressed by mistake | ||
|
||
0.2.0.0 | ||
- each player uses own timer thread to poll position, track and related info instead of a single thread for all players | ||
- upnp rescan dedicated thread created at each scan interval to avoid blocking libupnp caller thread in callback | ||
- continue re-organizing LOG | ||
- metadata using "songinfo" CLI command to allow access to more information, includign albumart (still fallback to use "playlist" info if "songinfo" fails) | ||
- on <accept_next_uri> = 0, metadat was not properly handled, leading to random filesize being sent | ||
- add <upnp_scan_timeout> to configure how long a network player *rescan* lasts (initial scan is still 15) | ||
- <upnp_scan_interval> is 30 seconds minimum | ||
- When skipping track very quickly, a "playing" state of previous skip could be received before the "stopped" state or last skip, causing player to stall (confused with an unsollicited play) | ||
- force_volume was used, even when volume_on_play was set to -1 in SyncNotifyState | ||
- option -i was broken before a5 release | ||
- context index toggle shall be done after stream mutex lock (slimproto) | ||
- remove deadlock between upnp notification and LMS playback request (sq_notify call in SyncNotifyState) | ||
- global Mutex for renderer list un-necessary now that list is a table | ||
- change some string definition to allow VC2008 compilation | ||
- add the option to set a socket for upnp operations | ||
|
||
|
||
0.1.4.0 | ||
- <volume_on_play> can be set to -1 so that *all* LMS volume commands are ignored (use the player's volume control) | ||
- When pause/play directly on the player, action is feedback to LMS that should stay in sycn (still early phase ...). This does NOT work when "stop" is being used - such "stop" will be interpreted by LMS as an error and will move to next track | ||
- if uPnP player cannot play a format, send the proper error code to LMS (also send STMc everytime) == > that's to avoid being stuck in a middle of a playlist - LMS will gently move to the next song and a squeeze2upnp will just log the problem | ||
- add <flac_header> parameter | ||
- add <send_metadata> parameter | ||
- add <upnp_scan_interval> paramater (O to disable regular scan) | ||
- building a Linux statically linked version as well (-static) | ||
- <seek_after_pause> now 0,1 or 2 (2 restarts stream from that last sent byte - will stay undocumented as it does not seem to work) | ||
- add -4 for <stream_length> to allow usage of unkown file size to be sent *but* not using chunked-encoding (need updated libupnp webserver.c and httpreadwrite.c), responding to open-ended request (xxx-) by HTTP 206 and range xxx-yyy/* | ||
- add -1 for <stream_length> to allow usage of unkown file size to be sent *but* not using chunked-encoding (need updated libupnp webserver.c and httpreadwrite.c), responding to open-ended requests (xxx-) by HTTP 200 instead of 206 | ||
- add -2 for <stream_length> to allow usage of chunked-encoding (need updated libupnp webserver.c and httpreadwrite.c), and responding to open-ended requests (xxx-) by HTTP 200 instead of 206 | ||
- update DIDL-lite header to add DLNA namespace, <upnp:artist>, trackNumber and tweak other parameters | ||
- <mac> added to each device. As pointed by ralphy, current logic was not working properly. Now, if mac predecence is 1/ mac from <device>, then mac from ARP network request, then mac from <base_mac> + n (Nth player). when "save <filename> is called, the <mac> is re-written for every device. | ||
- add command line "-i <config file>" to discover upnp players, save config file, then exit | ||
- add command line "-p <pidfile>" to store the pid | ||
- "unexpected" stops managed from squeelite side instead of uPnP (NB: a "stop" from the player"s remote will cause LMS to move to next track, NOT to stop | ||
- if <buffer_limit> is smaller than max(<streambuf_size>, <outputbuf_size>) * 4, set it to that max | ||
- <can_pause> parameter removed | ||
- big fat warning when config file has an error and cannot be loaded | ||
- improve HTTP range request response (might have impact with <buffer_limit> and pause reaction) | ||
- Update COMPATIBILITY file | ||
- remove all warning for Linux compilation | ||
- "cookie" is now a proper pointer, no more integer cast | ||
- configure libupnp with disabled blocking TCP connection and gen GENA timeouts to avoid "disapearing players" to lock the job queue, ending to a "too many jobs" disaster in libupnp | ||
- Stop sending poll request to a player that has generated more than 5 consecutives ACTION_ERROR (has disappeared probably) | ||
- for each player, check that <buffer_dir> is accessible in WRITE mode (and remove device if it is not) | ||
- Improved cleanup on exit() to avoid coredump | ||
- Improved LMS device deletion when upnp device disappears | ||
- When the same uPnP player disappears and re-apppears, re-connect was not working | ||
- Removed all memory leaks found by valgrind | ||
- metadata request can cause a fault if the list has been emptied (modulus 0 call) | ||
- when disabled, metadata gathering was causing fault. | ||
- take into account metadata config as well when accept_nexturi is disable | ||
- sq_get_metadata must fill metadata in all cases, no NULL can be returned | ||
- start to re-organize LOG levels | ||
- prepare metadata gathering for artwork and extended information (like filesize) | ||
- 64 bits int printed with %Ld for arm | ||
- divide by 0 on volume removed (was causing volume command 0 ==> 255) | ||
- volume calculation does not use float anymore (integer arithmetic only) | ||
- <volume_curve> ending pair changed so be (0x7fffffff,0x7f) to work with integer arithmetic | ||
- initialize a string in AddMRDevice | ||
|
||
|
||
0.1.3.3 | ||
- with <seek_after_pause> set to 1, unpause was not restarting at the right time if repositionig was done during pause | ||
- when upnp device capability for pcm does not detail sample rate and channel (ie audio/L16), add the channel and rate details in the mime-type response (ie audio/L16;channels=2;rate=44100) - was need for foobar2000 | ||
- add aac in the supported format (does not seem to work with Sonos or foobar yet) | ||
- <volume_on_play> to 1 by default | ||
- <volume_curve> max by default is 65536 instead of 65535 | ||
- check that squeezelite instance was created before trying to run it | ||
- L/R inversion corrected in PCM 24 bits, packed type 1 | ||
- buffer write file opening done as soon as LMS play command is received (quick GET) | ||
- in flac metadata (for repositionning) vorbis header is needed to NamUniti | ||
- flac header in re-positioning was not set as "last block = 0x80" (happened after vorbis_comment was removed) | ||
- handle case where no playlist index is returned in metadata (crash) | ||
- metadata track and time request were doubling the '?' | ||
- add metadata | ||
- change incorrect upnp:artist to dc:creator in DIDL string | ||
- change back flac header re-insertion default max block size to 0xfff | ||
- remove a few compiler warning | ||
- improve the "synchronous start" (continuous synchro does not work) | ||
|
||
0.1.2.0 | ||
- add a wav header to pcm stream for players that accept audio/wav, audio/x-wav and audio/wave in protocol info by do not accept audio/Lxx (xx = sample size).Was needed for Sonos to receive pcm samples. Endianness pobably need more attention | ||
- re-organize format detection code for wave header addition | ||
- suppress DIRECT mode (was useless) | ||
- correct some coredump on exit (access to invalid file handles) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,17 @@ | ||
<?xml version='1.0' standalone='yes'?> | ||
<extensions> | ||
<version>0.2.4.0</version> | ||
<description>PLUGIN_UPNPBRIDGE_DESC</description> | ||
<defaultState>enabled</defaultState> | ||
<optionsURL>plugins/UPnPBridge/settings/basic.html</optionsURL> | ||
<name>PLUGIN_UPNPBRIDGE</name> | ||
<creator>Philippe</creator> | ||
<version>0.2.4.dev.1</version> | ||
<profilesURL>http://sourceforge.net/projects/lms-to-upnp/files/profiles.xml/download</profilesURL> | ||
<module>Plugins::UPnPBridge::Plugin</module> | ||
<targetApplication> | ||
<maxVersion>*.*</maxVersion> | ||
<minVersion>7.5</minVersion> | ||
<id>SlimServer</id> | ||
<maxVersion>*.*</maxVersion> | ||
</targetApplication> | ||
<email>[email protected]</email> | ||
<description>PLUGIN_UPNPBRIDGE_DESC</description> | ||
<module>Plugins::UPnPBridge::Plugin</module> | ||
<name>PLUGIN_UPNPBRIDGE</name> | ||
<profilesURL>http://sourceforge.net/projects/lms-to-upnp/files/profiles.xml/download</profilesURL> | ||
<optionsURL>plugins/UPnPBridge/settings/basic.html</optionsURL> | ||
</extensions> |