forked from philippe44/LMS-Cast
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
503 lines (396 loc) · 18.4 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
1.19.1
- mad was using new decoder structure but librariy was not updated
1.19.0
- alac.c did not set blocksize to NULL
- faad should shift samles by 8 bits for mono channel
- add LOOPBACK option
- update Windows dll to remove msvc dependencies
- (P) add -static version first
1.18.3
- (P) socket string correction
- loopack option
- free_ssl_symbol() does not do anything when LINAKLL set to avoid dlclose() link error
1.18.2
- do nothing in sighandler when already stopping threads
1.18.1
- Windows 10 does has renamed libeay32.dll to libcrypto.dll and ssleay32.dll to libssl.dll (and does not even include it)
- do not crash when SSL not found
1.18.0
- align with UPnP version
- minor correction in basic.html (RAOP identifier)
- (P) return if query is missing client
1.17.0
- openSSL loaded manually for compatibility
1.16.2
- partial-reponse (206) include range with /* except for Sonos (instead of ONLY for Chromecast)
1.16.1
- support SNI for SSL
- use strcasestr instead of stristr
- add help for + and - codecs syntax
1.16.0
- device specific <codecs> and <raw_audio_format> cna use + or - in front of option to add or remove compared to default
1.15.0
- add SSL support
1.14.1
- remove some unsued variables in main context
1.14.0
- add 'E' tag parameter to get the browse url
1.13.0
- (1) if track ends up earlier than expected and next track is short, ShortTrack was not set
- (1) crossfade all we can at every step (don't need the whole fade buffer) and make room for process
1.12.0
- Bi-directionnal volume filtering
1.11.2
- do not use imageproxy for LMS < 7.8
1.11.1
- short track shall workaround shall not be activated for 0 duration tracks
1.11.0
- (1) refuse tracks less than 2s and gap tracks less than 10s
- (1) cli_tag compare includes leading space
- (1) exit output thread on 0 bytes only when player closes connection on failure (not on HEAD)
- (2) accept to re-open socket even when draining (obuf management now allows it) - needed for CC and short tracks
- (2) send track URL only in PLAYING state otherwise short track will create state change in LOAD state
- (2) send STMd if STMu arrives while decoder is COMPLETE but not STOPPED (case where remote server closes the connection early)
- (3) add repeatingstream option
- (3) when url is missing fqdn, test "http" instead of IMAGE_PROXY and do not replace .png by .jpg
- (3) remove superfluous send_icy_metadata
- (3) if STMu is received when STMd not sent yet but should have, flush player and ignore STMu (this should trigger restart hopefully)
- (3) undo right above mod as it's player's duty to restart
- (4) do not use the "repeating" metadata gathering for icy update (add -1 as offest option)
- (4) remove SQ_SEEK in both domain as it's not used
- (4) HTTP 2 sockets backport from UPnP version (should have no impact here)
1.10.0
- move all strings from basic.html to strings<.txt
- remove sleep timers for conditions
- removing device was not waking up main thread
1.9.1
- backport UPnPBridge modifications for ICY (no impact)
- use translation from strings.txt for Yes/No -
1.9.0
- unload receiver after 30s of stopped and on power off (if already stopped) to release player fro other controllers
- log refreshing renderer only when parameters actually changed
1.8.3
- remove range-request
1.8.2
- (1) various UPnP backporting (see UPnP CHANGELOG)
- (2) move Roon Mode to squeezelite config size as Roon does report LMS version 7.7.5 but does not have tha AIFF header issue
- (2) set range-request to none, although some client still require ranges
- (2) hidden 'c' parameter
- (2) add <stream_length> -2 which sets length only for PCM (when known)
1.8.1
- QueueFlush correction
1.8.0
- add a timeout option to remove renderers
1.7.7
- Search for available HTTP port must be 2x MAX_PLAYERS
1.7.6
- Group update could free NULL pointer
1.7.5
- Move mutex and cli_mutex creation/deletion out of the slimproto thread as Volume detection to make sure cli_send_cmd (volume) is not called before
- cli_sock initialization must be done beofre slimproto thread starts (running set) and reset when switching/losing server must be mutex_protected
1.7.4
- merge FriendlyName and Name in main context (FriendlyName is not a config item as such)
1.7.3
- output_close was calling dlclose for each player termination
1.7.2
- mad and flac correction, following squeezelite
- encode mode was disabled in Windows version (compiled without CODECS flag)
1.7.1
- sparc and ppc compiler required kernel > 3.2.0 due to glibc being 2.23+ ==> moved back cross-compiler to use glibc 2.19 (need OBSOLETE enabled)
1.7.0
- backport squeeze2upnp battery option
- if ICY send is partial, do not try to send audio data
1.6.2
- do not send any volume unless a real command has been sent by LMS
- set SO_REUSEPORT only if option supported
- full cross-compiling
1.6.1
- CODECS flags to allow compilation in thru mode only
- add SO_REUSEPORT except for Windows
1.6.0
- add m4a to adts decoding in 'thru' mode
- few alac issue correction
- exit output_thread on streaming error only when HTTP connection is closed, no bytes sent and decoding completed (not in the select/accept waiting loop)
1.5.1
- accept announces from other hosts as long as they are not a CC device themselves (mDNS relay)
1.5.0
- add alac support
1.4.0
- tail mode moved to obuf
- obuf size fixed to 3MB with 2MB for tail
1.3.2
- add duration to media JSON payload - does not always work, though
- renderer index could be captured from a previous track in case of fast play/stop/play sessions
- when using StopReceiver, the sessionId must be stopped, not the mediaSessionId
1.3.1
- flac compression level was not used from mode parameter
1.3.0
- get cli port from server
1.2.2
- make sure to default to thru if mode mispelled
- eliminate unloaded codecs in full processing mode
1.2.1
- mode was still comapred to "flac" and not "flc" in slimproto.c!
1.2.0
- CC firmware 1.34.130671 has a problematic GET behavior that requires a tail buffer like Sonos
1.1.2
- re-encocde name for flac is named 'flc', not 'flac'
1.1.1
- mp3 bitrate selection was using one level below minimum
- N/A: send_icy was not zeroing len in case of error (non blocking sock)
- N/A: when building pcm 24 bits, at least 2 frames must be available in destination buf
1.1.0
- add MP3 re-encoding
- icy artwork removes ' - ' when no artist
- reduce icy interval to 16384
- fade-in/out was not working properly for short tracks in flow mode
- shorter wait in select() if obuf has space and there is data to proceed
- check mp3 sample rate & bitrate consitency
- Improve webUI parameters handling
1.0.0
- full processing mode with flow
- send STMd in case of streaming error (0 bytes)
- many bug fixes
0.3.0.9
- squeeze2upnp backporting
0.3.0.8
- set STREAM_DELAY to 15s
- fix 24 bits replay gain
- codec list is "aac,ogg,flc,aif,pcm,mp3"
0.3.0.7
- flac repositionning issue was not handled correctly
- set AccuratePlayPoints to false
0.3.0.6
- 32 bits comparaison correction (volume could be stuck)
- do not set playing state on "buffering" event
- ms_played was set to incorrect value when switching between tracks (track_start_time)
0.3.0.5
- for Windows XP IP_ADD_MULTICAST must be after binding
- do not use WSAPoll() in Windows for XP compatibility
- fail if mDNS searcher cannot be initialized
0.3.0.4
- add aarch64 version
- remove libupnp & libthreadutil
0.3.0.3
- (1) REPOS_TIME was set by mistake, preventing proper repositionning ...
- (1) detect bitrate to not send STMd too early even with stream where duration is wrong (e.g. RadioParadise)
- (2) slimproto_close must join thread, not detach it otherwise other _close function might destroy buffer mutexes
- (2) move to "status" cmd query to have only a single query for all metadata
- (2) remove bitrate usage to send STMd, was not reliable at status or songinfo on RP send the current bitrate
- (2) metadata path and track_has removed
- (3) duration can be taken from "status" as well
0.3.0.2
- mimetype delayed acquisition in output_http is a boolean, relying now on out->mimetype
- when destroying device that was stuck in cli_send_cmd called by sq_notify, then when the sq_wipe was called, cli_mutex was already destroyed when releasing it
- read_line for http server timeout up to 200ms
- forced_mimetypes parameter should use "%s" format string as it can be empty
- misc squeeze2upnp backport
0.3.0.0
- rewrite of most of the core code:
- no use of libupnp webserver anymore
- own HTTP server for fine control
- streaming moved to modified squeezelite part of code
- remove temporary file buffering
- new handling of mDNS discovery for on-the-fly player addition / removal (no more discovery time and removal counts)
- review of all mutex-related issue and various risk of unprotected code
- review of memory leaks (only the SSL remains, which is the same all over execution)
- add possibility to dump players ('dump' & 'dumpall' commmands)
- SSL context is not deleted at every disconnect to avoid memory leaks
- wrong volume local change when mute was set
- (2) cli_send_comment uses timeout in connect (for freebsd)
- (3) mDNS search for group was messed-up
- (5) if STMd is sent early (happens with when ratio player buffer/compression is large, e.g. mp3) services like Deezer close the stream connection because it's idle for too long
- (5) add ogg,aac and aiff
- (5) when missing codec, thru flag must be set otherwise output.c tries to use the encodebuf
- (5) duration and ms_played status acquisition was protected by wrong mutex-related
- (5) in main.c, LOCK_O/UNLOCK_O was empty
0.2.12.1
- build system problem ==> LOAD_FLUSH inconsistency
0.2.12.0
- add a "restart" button
0.2.11.1
- Discovery and exit (-i) could abort without searching
0.2.11.0
- HasDigitalOut =1 so that volume can be fix
0.2.10.1
- update renderer thread cleaned for better exit
- properly stop scan thread
- various fixes
0.2.10.0
- LOAD over LOAD flushed the queue
- remove earlySTMD option
- read_file needed to declare ready_buffering
- Send stop when waiting for media session (a LOAD has been sent)
- (P) do not save config file if it does not already exist
- Volume can be queued
- Volume is double
- Reorganize code for AirConnect compatibility
0.2.9.1.1
- another silly mistake in 32 bits timer comparison :-(
0.2.9.0
- Make the 1.24 FW workaround a runtime parameter (corrected in FW 1.25+)
- Better 32 bits rollover correction
0.2.8.0.2
- clean settings.pm to make it more readable
0.2.8.0.1
- correct timegaps using gettime_ms() to manage 32 bits rollover
0.2.8.0
- Fix for FW 1.24.88047 to stop recever when user stops
0.2.7.4
- Initial server detection should be in slimproto thread, otherwise sq_run_device can block
- When receiving media session, the setmediavolume should cause a wait
- Workaround for FW 1.24.x problem (stop does not stop media session)
- ActiveRemote bound to 0.0.0.0
0.2.7.3
- merge early_STMd modifications
- Update file headers
0.2.7.2
- correct some strings
- merge EARLY_STMD and pacing_size modifications
0.2.7.1
- clean SendARP
0.2.7.0
- set UPnP max HTTP/SOAP content *after* stack initialization
- improve track transition speed by requesting next track from LMS earlier
- big fat cleanup of all old useless squeezelite items (RESAMPLE, DSD, PROCESS, decoder, mode, codecs)
0.2.6.7.1 (not published)
- backport some UPnP compatibility for HTTP transfer (no impact as casting using -2 for transfer mode)
- on Windows, retry sending on CLI command socket as it fails with ENOTCONN sometimes at first send after opening ...
- development versions now have an extra digit to enable auto-update
0.2.6.6
- when payload for device (name or metadata) was containing %s, incorrect string was sent
0.2.6.5
- when using LMS as image proxy, artwork_url must be prefixed with http://<server>:<port>
- when killed by signal, CastStop was given the wrong argument
0.2.6.4
- Queue everything, including media status requests
- SSL and select() usage was broken, use SSL_pending instead ==> makes the playe much more snappy
- (dev-2) clean some code in cast_util.c and castcore.c
- (dev-2) do not queue status request
- (dev-2) wait for exact waitId
- (dev-3) GetMediaStatus was using waitId and not checking MediaSession
0.2.6.3
- do not remove missing player when remove_count is set to 0
- limit sample rate when slimproto sends a rate above max_supported
- in the UI, rename 'default parameters' to 'common parameters'
0.2.6.2
- when IP address of <common> was set, all devices were forced we the same address
- correct XML updating of <name>
- change seek access to maitain same line of code with upnp version
0.2.6.1
- lock state happened when receiver launch as failing
0.2.6.0
- 'pause' command was ignored !!!
- handle CCA bug with mute (level must be changed for unmute to work)
- allow disconnect on poweroff (but not if LMS to "pause" on poweroff)
- filter quick pause/play
- redo connect/ping/disconnect logic to be less aggressive
- (dev-3) lauching receiver must wait for SSL connection, otherwise 1st play is missed
0.2.5.3
- add Linux sparc support (experimental)
0.2.5.2
- re-introduce armv5te with soft floating only
- limit the binary offering to what's supported by the platform
- option to force use of LMS network interface (GUI and -b on command line)
0.2.5.1
- move to cross-compilation chain to solve rpi-1 compatibility
- detect float problem at startup for soft float version (armv5el)
- add Linux/sparc version
0.2.4.2
- Compiling on Wheezy and eglibc 2.13 causes a fail strtod on arm5el (softfloat) when used with GLIB 2.19 (more recent debian) ... no fix yet, need to use statically linked library or armv6hf
- clean armv6 compilation flags
0.2.4.1
- Volume command must be queued otherwise CCV ignores (not CCA) the previous request (could be a LAUNCH)
0.2.4.0
- add <roon_mode> for Roon compatibility (default on and no cli use)
- Roon server can't accept a time spurious time report ==> make sure a mediasession is active
- try to avoid deadlock when responseId is newer than WaitId
- buffer directory properly logged
0.2.3.0
- send corrected time position only if seektime > LMS thread
- remove USE_UPNP option, all is now mDNS
- remove a few uPnP useless code oldies
0.2.2.6
- get_time/set_time and get_metadata were not re-opening CLI socket (testing it before)
0.2.2.5
- too many CLI socket were consumed when all bridges were opened - open on demand and close after 10sec
- volume change in 2 steps: un-muted then set level, otherwise CCA do not unmute properly
0.2.2.4
- When changing IP::PORT, a race condition could lead to use a NULL SSL context and crash
- Volume filtering inverted: ignore commands from LMS that are result of a local change feedback (less than 1s)
- seek offset trace had wrong format (%zu)
0.2.2.2
- when using "songinfo" query, LMS wants a client_id, although documented differently
- max read_wait fixed at 20s
- add pacing option to prevent buffering to be greedy (use <pacing_size)
- cli_wait set at 1s
- (dev-3) Handle PPC byte ordering
- (dev-3) mDNS interface change
- (dev-4) force MAC address creation from UDN for virtual groups
- (dev-4) armv5 is renamed armv5el
- (dev-4) setname was not working when device was powered off
- (dev-4) re-connect if CLI socket is closed
- (dev-5) cli_send_cmd returns immediately in case of socket error (no wait)
- (dev-5) server address is memorized on LMS change
- (dev-6) CLI commands can return empty string !
- (dev-6) path can be NULL in metadata if index is wrong
- (dev-7) cli_cmd parser checks for exact sent string as LMS seems to send garbage at the beginning from time to time
0.2.2.1
- Player name set from LMS are now persistent, no need to set it from the plugin settings
- adding <friendly_name> parameter to keep trace or true player name
- Player auto refresh could be in conflict with external modifications
0.2.2.0
- move <server> parameter from global to <common> (parameter copy for compatibility needs to be removed later)
- fix server switch & rediscovery
- armv6 static build was not listed
0.2.1.0
- if MAC cannot be retrieved, create a fake one from UDN
- force first 2 bytes of MAC to be 0xcc unless <mac_address> is set in config file
- remove <base_mac> parameter
0.2.0.3-dev-1
- in stream thread, endtok static parameter was breaking multi-thread !
- (dev-2) hash32 check for NULL string
0.2.0.2
- Change libupnp to handle AndroidTV request (range 0-1 to try to guess file size)
- Bring back ppc version
- Add x86-64-static version
- Build a proper softfp for armv5
- (dev-3) mdns search was missing some answers ==> causing device to be missed
- (dev-4) detect ip:port change
0.2.0.1
- Duration should not be adjusted when playing a live webradio
- armv6hf version runs on raspberry pi B
- Remove ppc build
- Gathering metadata when scanning was creating usage of a NULL pointer
- mDNS search can be improved by forcing host IP address using <upnp_socket>
- When LMS was scanning, an overflow was happening in metadata gathering
0.2.0.0
- Use mDNS for device detection
- Support grouped devices (appear as an extra player)
- Volume changes are now at device level (not session level)
- Volume commands can ignored when not playing
- Volume changes on the CC are forwarded to LMS, unless device is a group
- Add volume scaling factor (using media session volume for individual players and ratio for group)
- Free device search was missing ;
- Filter volume speed changes
- Reorganize log management
0.1.3.1
- Documentation update on ReplayGain
0.1.3.0
- Backport squeezetiny changes from changes made for squeeze2upnp 0.2.7.0
- armv5 build static and dynamic
- powerpc build
- ReplayGain available for raw audio only (pcm, aif)
- add aif as an accepted codec
- in CastLoad, MediaSession must be reset
- ON/OFF fully cleans any pending response as, in some cases, CC does not respond to a STOP
- Corrected memory leak when no matching codec was found
0.1.2.0
- Always gather metadata from LMS, <send_metadata> only stops sending of coverart, album, artist and title
- <send_metadata> was ignored except for 1st track
0.1.1.2
- When streaming a webradio using wav format, pseudo file size was not set properly
- MAC address parameter was not read properly in config file (was overflowing on <send_icy> parameter)
- Add build date/time to version
0.1.1.1
- Buffer overflow was preventing artwork to be sent (potentially overflow on long metadata even w/o artwork)