-
Notifications
You must be signed in to change notification settings - Fork 12
/
CHANGELOG
1037 lines (783 loc) · 31.7 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
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
3.3.9
- change OggFlac library detection
- fix f-up builds
3.3.8
- $!%@ compilation flag
3.3.7
- fix stream/ogg 32 bits len when inverting
3.3.6
- fix flac when using old libflac.dll (which should not happen for us)
- bad build
3.3.5
- use updated libflac with chaining enabled
- check MetaData is not NULL in CastLoad
3.3.4
- clarify use of index in sq_get_metadata
- for CC, duration is not in metadata but at the root
- use LIVE when duration is 0
- add <time> in metadata recurring queries (not uses for now)
- note: duration in metadata is what's left of full segment
3.3.3
- remove repeating and use live_duration insted so that duration is always full stream length while live_duraton is the "fake" (segment) duration
- send_backlog always return requested bytes, no need to verify "sent"
3.3.2
- fix ogg streaming metadata parsing for USE_LIBOGG and not (protect against multiplexed streams and avoid build-up)
- use setlocale() so that atof does not fail on '.'
3.3.1
- when slimproto has a 404 on a webradio, LMS keeps sending strms again and again without flush or quit. That's fine for streamer
and decoder who just restart but the output threads where accumulating. So release them all if we have no space left. If this
happens a few times before we have exhausted output_threads, next successful track transition or a flush will terminate others.
3.3.0
- only re-acquire state on "play" action completion (not stop/pause). Fake stop will be created otherwise
- on renderer reported stop, only terminate output_http_thread if it's lingering
- send_backlog always send the requested bytes, not just what has been actually sent!!!
- fix some logs syntax
- in Roon mode, force next_delay to 0
- don't accept full (Range 0- or nothing) GET request in output_thread when lingering (see above, when closing a webradio-like stream)
- wake timer always fast when on (it's not polling timer)
3.2.0
- playtime might be over what LMS claimed in metadata, so make a signed comparison to send STMd
- if remote closes socket before output_thread lingers, it was blocked in running state
- when new track started, forced lower index output_thread to exit anyway (don't linger when not needed)
- add "cancelled" flag to output_thread so that it an be set w/o joining
- index are always integer
- increase usable output threads to 5
- full refactoring of flac_thru to allow frame counter adjustement on seek
- when player failed but responds to download, reset error counter as well
3.1.1
- don't block in ov_read callbacks unless it's for headers
3.1.0
- reduce some output_thread timers to speed-up joining when lingering
- try to find a stopped output thread and if none, stop the oldest lingering one
- more detailed output thread logs
- lingering status must be reset upon exit otherwise output_start might still try to join
- add ogg (vorbis/opus) metadata forwarding
- protect output_start with mutex as a process can exit lingering right after we have selected it and try to join...
3.0.9
- copy needle on mimetype check, to make sure it works when using mimetype wildcard
3.0.8
- refactor ProtocolInfo parsing and improve + cleanup old code
- add mimetype application/ogg as authorized option for ogg
3.0.7
- when player don't respond to mDNS search, keep them as long as they respond to ping
3.0.6
- auto mode ICY only used if metadata is valid
3.0.5
- add all ogg containers (vorbis, opus and flac) to thru in auto mode with live streams
- for icy, vorbis is 'o' not 'v'
3.0.4
- maximize ICY-able formats
3.0.3
- allow ogg as part of ICY-enabled codecs
3.0.2
- 'q' and 'f' in slimproto have always been inverted
- try to handle 'f' as LMS expects, i.e. just cancel the streaming track
3.0.1
- handle special HTTP case when range's offset is total cache
- add mp4 direct support and "force_aac" option and "-4" command line
- send accept-range header in HEAD and 416 cases
- fix range in 216 when not enougn data in cache
- add -C <codec>,...<codec> on command line
- change mp3 default rate to 224 and aac to 160
- fix flac processing level could use 24 bits when receiving format with sample_size set
- add cache option
- estimate content-length when needed for length 0
- duration not set to 0 at first flow call
- finalize refactor of handle_http and make it aligned to spotconnect
- mdnssvc stopping eats all CPU in busy loop in Windows (select can't have all null's)
2.4.1
- eliminate unsupported codecs in thru mode
- take into account CODECS_STRICT rule
2.4.0
- refactor output_http entirely
- add command line -g to set HTTP content-length
- use -c instead of -o
- fix live metadata memory leak
- fix aac end of encode memory leak
2.3.4
- previous version had a miss build
2.3.3
- updated libraries with more memory leaks fixed
2.3.2
- fix some memory leaks
- FreeBSD name seems to have changed
2.3.1
- update libcodecs
2.3.0
- in OGG mode, fix memory leaks
- add AAC re-encoding using faac
- accept 'flc' or 'flac' for mode
2.2.10
- update libs (kd_dump fix)
2.2.9
- revert exclusion of devices based on netmask
- display interface upon startup
2.2.8
- json_pack with "so" does not require object's ref to be decremented
2.2.7
- in opus & vorbis direct decode mode, don't end before DISCONNECT and streambuf empty
- fix sync loop (build-up issue) in vorbis & opus direct decode
- more storage options
2.2.6
- SHA shit
2.2.5
- update openssl to 1.1.1u
2.2.4
- check for expired devices out of mDNS loopback as well
- fix timeout logical negation error
2.2.3
- fix netmask endianness which created false expiries
2.2.2
- mDNS empty rounds
2.2.1.1
- remove group's special volume scale factor (was probably an ancien CC bug)
- mediavolume (scaling) factor is now 1 by default
2.2.1
- fix vorbis and opus end of track
- new metadata update mode in flow
2.2.0.2
- make sure <%s> is not misinterpreted
2.2.0.1
- fix 1st track metadata not appearing
2.2.0
- add custom receiver to update metadata on the fly (credit Erwan)
- fix change opus & vorbis large metadata issue that can cause playback to fail
2.1.16
- don't delay stream in flow mode
2.1.15
- delayed stream sock should only be sent once, if codec has not been acquired
2.1.14
- delay stream_sock to HTTP request for 2nd and further track to allow idle HTTP request
2.1.13
- release
2.1.12.11
- fix muting by using a more basic option (no un-mute detection, just use volume)
2.1.12.10
- detect LMS mute correction
2.1.12.9
- no fade-in/out at all on plugin or helper
2.1.12.8
-potential build error
2.1.12.7
- fix some variadic mistakes
2.1.12.5
- fix once for all the TCPWindow size issue with Windows
2.12.12.4
- add some mute possibility
2.1.12.3
- use volume feeback for group player as well
- cleanup notify/callback functions (use variadic)
2.1.12.2
- move back to original streal as throttle can't work because client must send a FIN when server did send one
and throttle would prevent that to happen in time, creating a TIME_WAIT event and a RST frame on Windows
2.1.12.1
- use SO_KEEPALIVE and SO_RCVBUF
- better SSL handling in streaming thread
2.1.12
- ensure throttling does not go overboard
- fix mixed unsigned upconversion issue
2.1.11
- don't hold streambuf mutex during sleep
2.1.10
- move throttle down to stream thread
2.1.7
- add NextURI "underrun" mode for problematic players
- make sure we don't go below throttle threshold in one run
2.1.6
- restore selection of binaries
2.1.5
- move to next track immediately in slimproto
2.1.2
- link to vcredist
2.1.1
- release
2.1.0.0
- don't use next_delay but wait for player to GET the track before streaming from LMS
2.0.6.3
- don't use debug dll's
2.0.6.2
- missing upnp backport wrt https metadata
2.0.6.1
- add MacOS universal binaries
- glibc is really static (-nss)
- give log window a bit of love
2.0.6
- add armv6
2.0.5
- update mdnssd
2.0.4
- update libmdns (no unicast & compliant mode)
2.0.3
- fix mdns service discovery queries
- add arm64 for M1
2.0.2
- update mdnsd that was binding to a specific port for no reason
2.0.1
- new compîlers to allow glibc starting 2.23
- mips is bigendian by default
2.0.0
- new build backend
- iface can be used for binding
- many small changes...
1.82.2
- do not change xml loglevel when set from command line
1.82.0
- just align with UPnP
1.81.3
- output_http thread should wait for new_stream to be unset not for track_start as the latter can be missed if gain_and_fade is called while we sleep
1.81.2 (NP)
- align with UPnP
1.81.1
- update to nanopb 4.x
1.81.0
- do an HTPP 200 on non-satisfiable range (UPnP issue more likely)
1.80.4
- wakeup from long sleep timer when start playing to detect play activity faster (more a UPnP thing)
1.80.3
- mp3 mimetype is audio/mpeg
- mimetypes audio/x-... where mishandled when setting "bridge-NN." extension
1.80.2
- add proper opus DLLs
1.80.1
- tweak settings UI
1.80.0
- add "null" transcoding mode to send silence low bitrate mp3 frames
1.71.0
- remove REPOS_TIME flag as it is understood why it is needed for flac
- (P) add freebsd
1.70.0
- always release obuf when exiting output_thread
- abort current output thread when codec/process start fails
- add flac_header type 3 where sample_count is adjusted based on first frame index
- increase max sample rate
1.64.2
- add freebsd version
1.64.1
- (P) callbackargs is an array
1.64.0
- (P) don't fade-out on pause (no zero volume)
1.63.1
- incorrect test to set duration to 0
1.63.0
- do not use special http mode or respond with ranges to HEAD method
- fix repeating stream (RP)
1.62.0
- align squeezetiny with UPnP
1.61.0
- autorun by default and use static version
1.60.0
- refactor metadata handling, including removing need for 'E' tag (always use artwork_url seems fine now) and associated special query
1.50.2
- mdns fix for blank name field
1.50.1
- again a $^%!@ build error - this is painful
1.50.0
- align squeezetiny with UPnP (include coveart resizing parameter - hidden)
1.49.13
- fix sslsym.c macros that were still incorrect
1.49.12
- rebuild
1.49.11
- allow ICY for repeating streams as some BBC channels use repeating for programs and ICY inside for titles
1.49.9
- order correctly STMu & STMd
- STREAM_DELAY is now a runtime parameter
- move back CLI buffer to 4kB (allocated)
1.49.6
- delay STMd by one cycle when STMu is required as well (for Sonos, so just backported to keep versions identical)
1.49.4
- must require Squeezebox2 to be loaded
1.49.3
- recurse in hasOutputChannels
1.49.2
- (P) remove "outputChannels" option from audio settings
1.49.1
- SNI must be w/o any leading space or trailing garbage now that LMS excludes port
1.49.0
- switch flac for main set
- set estimated flac number of samples based on duration (when possible)
1.48.1
- HTTP mode -2 was not sending content-length for large files
- make kd_add a variadic
1.48.0
- less aggressive CLI timeout
1.47.0
- openssl dynamic load compatible with 1.1.x
1.46.4
- printf extra parameter cleanup
- address valgrind complaints
- LOG_INFO cleanup
1.46.3
- improving alac style while verifying code
1.46.1
- remove un-necessary "buffer" variable in alac.c
- guarantee alac writebuf size
1.46.0
- allow volume feedback management
1.45.0
- aac buffer wrap only when needed
- don't remove player that is still in cast connected state
1.44.6
- $*%&@! static version name !!!
1.44.5
- alac stock decoder does not have aarch64 flag for endianness
1.44.4
- bumper version number
1.44.3
- ports were missing when using LMS interface (use -b)
- cosmetic issues in Settings' UI
1.44.2
- fix migration of 1.44.0
1.44.1
- just a fake increment
1.44.0
- tweak below fix
- change "upnp_socket" for "binding"
- by default, HTTP server are not using UPnP port, unless specified
1.43.1
- %&@!* of Linux does not handle sscanf with %[^:]:%u when the first string is empty
1.43.0
- add '-o' on command line
1.42.1
- server discovry response was truncated and CLIP was missing
1.42.0
- SSL flags in stream_s
- consolidation with other bridges
1.41.0
- try SSL when plain fails on non 443
1.40.8 (NP)
- Roon mode consistency in shared squeezetiny (unused)
1.40.7
- when searching for mad sync, verify that next frame is valid
1.40.6
- do not block commands in off mode if we are still playing (volume ramp up/down)
1.40.5
- linearize streambuf for large needed atoms crossing boundary or give-up
1.40.4
- no need to flatten pcm header
- stsz box can be really big, need to increase streambuf
1.40.3
- bytes_per_frame must be in a context!
1.40.2
- stop pcm decoder when bytes < bytes_per_frame
- set bytes_per_frame in new_stream only
1.40.1
- 'alc' was missing in default codecs list
1.40.0
- add 'wav' codec support
- add WAV and AIF header parser in PCM
1.31.0
- global model_name can be set (only on command line using -M) and default to CastBridge
1.30.0
- add OggFlac
1.22.0
- Forward Google player name change to LMS except when LMS has set a different name
1.21.1
- clear SSL context on shutdown
1.21.0
- Increase LMS max version
1.20.2
- just bump up version
1.20.1
- tabulate volume conversion
- improve mDNS searches
1.20.0
- add opus decoder
- change vorbis codec min input
- vorbis does not exit on no frame decoded
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