-
Notifications
You must be signed in to change notification settings - Fork 17
/
CHANGELOG
1333 lines (1052 loc) · 52.2 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
- better fix for sonos master detection
3.3.8
- Some Sonos might really assign self-master which was making them move to slave at 2nd discovery turn
3.3.7
- change OggFlac library detection
- fix f-up build
3.3.6
- fix stream/ogg 32 bits len when inverting
3.3.5
- use updated libflac with chaining enabled
3.3.4
- clarify use of index in sq_get_metadata
- 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_duraiton 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
- UpnpResolveURL needs one extra byte if RelURL parameters does not start with a '/'
- 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
- elapsed accrued time should not be reset upon SET_TRACK but when expected track is detected
- send_backlog always send the requested bytes, not just what has been actually sent!!!
- fix some logs syntax
- force gapped transition when duration is 0 b/c some players (Sonos) won't use nextURI when a webradio-like one ends by lack of HTTP data
- 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)
- allow icy on every codec, just provide interval, let user config and requesting player decide
- alternate getting of TransportInfo and PositionInfo (increase polling speed)
- wake timer always fast when on (it's not polling timer)
- never gap tracks in roon mode (duration is always 0 in that mode)
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.14
- copy needle on mimetype check, to make sure it works when using mimetype wildcard
3.0.13
- When sink is empty, don't search for catch-all options
3.0.12
- memory leak in Sink (ahah) parsing
- when player timeout's, use its DescDocURL, not the UpdateData which is NULL...
3.0.11
- refactor ProtocolInfo parsing and improve + cleanup old code
- add mimetype application/ogg as authorized option for ogg
3.0.10
- DescDoc memory leak
3.0.9
- when player don't respond to UPnP discovery, keep them as long as their DescDoc can be downloaded
3.0.8
- auto mode ICY only used if metadata is valid
3.0.7
- 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.6
- only use device's STOPPED state for timeout but reset it at every STOP
3.0.5
- maximize ICY-able formats
3.0.4
- LastSeen is in seconds not millisec so when stoping to play, player would get removed
- allow ogg as part of ICY-enabled codecs
3.0.3
- change device removal logic: remove it
* in any state if there is socket fatal error (or)
* in any state there are too many consecutive UPnP action errors (or)
* when stopped and it has not responsed after timeout (unless timeout is -1)
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
- send accept-range header in HEAD and 416 cases
- fix range in 216 when not enougn data in cache
- use force_aac instead of mp4 which means that alc must be removed manually if required
- change cache -C by -A
- add -C <codec>,...<codec> on command line
- change mp3 default rate to 224 and aac to 160
- tweak flac ratio and only use 20% headroom for content-length estimate
- fix flac processing level could use 24 bits when receiving format with sample_size set
- don't use auto mode if player does not support flac
- try to handle players that start by probing toward end of file to guess duration (fb2k, mp3 only)
- lingering could be missed if output_fill finished together with obuf (add a state)
- add "automatic" HTTP length
- add 'auto' mode
- add cache option
- estimate content-length when needed for length 0
- duration not set to 0 at first flow call
- "enable_mp4" renamed "mp4"
- finalize refactor of handle_http and make it aligne to spotconnect
- mdnssvc stopping eats all CPU in busy loop in Windows (select can't have all null's)
2.5.1
- fix SET_SERVER bug (wrong variadic sent)
- DLNA_ORG.OP should be 01 as we allow some seeking (let some players pause)
- add "enable_mp4" option for players that don't properly support mp4 files (alc/aac) with no content-length
2.5.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.4.4
- previous version had a miss build
- change a bit some logs
- fix UPnP alternate searches
- fix options string for mimetype when re-encode is done to raw
2.4.3
- updated libraries with more memory leaks fixed
2.4.2
- fix some memory leaks
- FreeBSD name seems to have changed
2.4.1
- updated libcodecs
2.4.0
- in OGG mode, fix memory leaks
- add AAC re-encoding using faac
- accept 'flc' or 'flac' for mode
- ORG_PN for AAC is AAC_ADTS
- remove codec's extension in stream URI
2.3.2
- kd_dump fix
2.3.1
- upon UPnP socket error, remove player at next update, don't need to wait timeout especially when playing
2.3.0
- option <custom_discovery> to add non-standard UPnP queries
- maybe a fix why some server or name were never updated (XML_UpdateNode bug)
- display interface upon startup
2.2.3
- 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.2
- update various libraries
2.2.1
- fix vorbis & opus end of stream
- new icy mode (used for cast version)
2.1.23
- proper clip in Vorbis raw Ogg mode (unused in this version)
- end of decode compatible with raw Ogg mode
2.1.22
- fix opus and vorbis failing to play with very large VorbisComment (artwork)
2.1.21
- remove need of libmvec for x86_64 linux (libc "--disable-libmvec" and compiler with "-fno-fast-math")
2.1.20
- use new libpupnp that fixes giant memory leak
2.1.19
- move back to delaying STMd (30s by default)
2.1.18
- release
2.1.17.1
- increase discovery & auto-renewal timeouts which seems to improve stability a lot
2.1.17
- libupnp should disable blocking connection (too many jobs)
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
- release
2.1.13.6
- missed nextURI fixed by a LMS "next" request rather an UPnP request
2.1.13.5
- delayed stream log fix
2.1.13.4
- don't disable "binding" when XML file does not exist
2.1.13.3
- try to delay stream_sock to NextURI's HTTP request
2.1.13.1
- don't call track_info if no track found
2.1.13.1
- remove wait_underrun option which is too similar to no gapless. Still need to figure out what was the impact for HQPlayer
- when missing duration, request next track immediately at end of decoding
2.1.13
- release
2.1.12.11
- fix group volume
- remove PauseVolume (un-needed since plugin avoid volume to be set to 0 pause - too bad for Roon)
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.6
- remove "forced" mimetype test
2.1.12.5
- fix once for all the TCPWindow size issue with Windows
- cleanup notify/callback and use variadic
- cleanup notify/callback and use variadic
2.1.12.2
- move back to original stream 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
- fix underrun logic
2.1.12.1
- detect iface name
- use SO_KEEPALIVE and SO_RCVBUF
- better SSL handling in streaming thread
2.1.12
- fix strings.txt
- 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.8
- sourceforge sha issue
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
- always move to next streaming in slimproto
2.1.4
- wrong PR
2.1.3
- speed moderation (test version)
2.1.2
- link for Windows users about VCREDIST
2.1.1
- release
2.1.0.0
- no more "next_delay" but instead wait until UPnP player requests track to start LMS streaming
2.0.7.3
- don't use debug dll's
2.0.7.2 (P)
- incomplete backport of log improvments
2.0.7.1
- glibc is really static (-nss)
- give a bit of love to log window
2.0.7
- use non-debug dll's
2.0.6
- universal binaries for MacOS
- option to stop when pausing radio streams
2.0.5
- add armv6
2.0.4
- update libmdns
2.0.3
- add arm64 for M1
2.0.2
- copy of airupnp config code was causing players to be added all the time
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
- fix protocolinfo all matches
- remove TCP_NODELAY for last chunk
1.82.1
- accept protocolinfo with all match
- use TCP_NODELAY to send last chunk
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
- no trace when offset is 0
- check codecs looks for audio/<codec> or audio/x-<codec> explicitely
1.81.0
- do an HTPP 200 on non-satisfiable range
1.80.4
- wakeup from long sleep timer when start playing to detect play activity faster
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
- tweaks settings UI
1.80.0
- add "null" encode mode
1.71.0
- increase max sample rate
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.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
- fix repeating stream (RP)
- enable icy for SONOS when repeating
1.62.2
- fix profile's URL
1.62.1
- do not use special http mode or respond with ranges to HEAD method
1.62.0
- disable Sonos mode with icy
1.61.0
- autostart and use static helper by default
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.5
- reset icy flag between tracks
1.50.4
- better error message when UPnP cannot bind socket
1.50.3
- minor info-bubble correction for image resizing
1.50.2
- again a $^%!@ build error - this is painful
1.50.1
- fix the infamous "HASH()" that appeared in some empty fields
1.50.0
- add option to set coverart resolution
1.49.15
- do not gather trackinfo unless playing is confirmed
- on pause, do not restore volume if ignore volume was set
- add mute management with negative volumes
1.49.13
- fix sslsym 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. This does not work for Sonos as ICY can only happen on webradio
1.49.10
- Sonos returns a different URI than the one given for aac streams (replace x-rincon...::// by aac://)
1.49.9
- order correctly STMu & STMd
- STREAM_DELAY is now a runtime parameter
- move back CLI buffer to 4kB (allocated)
1.49.8
- handle players with spaces in ProtocolInfo
1.49.7
- delay STMd with STMs, not STMu!!!!!!!!!!!!!
1.49.6
- delay STMd by one cycle when STMu is required as well (Sonos)
1.49.5
- must force Squeezebox2 to be loaded
1.49.4
- recurse in hasOutputChannels
1.49.3
- (P) remove "outputChannels" option from audio settings
1.49.2
- silence CheckAndLock utility when device is NULL
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
- gapless option should offer an empty as well to allow default settings
1.47.0
- openssl dynamic load compatible with 1.1.x
1.45.3
- improving alac style while verifying code
1.45.1
- remove un-necessary "buffer" variable in alac.c
- guarantee alac writebuf size
1.45.0
- aac buffer wrap only when needed
- don't remove player that is currently playing
1.44.6
- $*%&@! static version name !!!
1.44.5
- alac stock decoder does not have aarch64 flag for endianness
1.44.4
- bump 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.10
- 'wav' codec was missing in HELO message
1.40.9
- don't do WAV/AIFF header checking in Roon mode
1.40.8
- deal with crappy UPnP player that responds malformed XMLGetFirstDocument
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.4
- linearize streambuf for large needed atoms crossing boundary or give-up
1.40.3
- no need to flatten pcm header
- stsz box can be really big, need to increase streambuf
1.40.2
- bytes_per_frame must be in a context!
1.40.1
- stop pcm decoder when bytes < bytes_per_frame
- set bytes_per_frame in new_stream only
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 UPnPBridge
1.30.0
- add OggFlac
1.28.0
- Reflect UPnP player name change to LMS, unless LMS has set its own name
1.27.0
- search for mediarenderer:2 as well (x2 number of searches)
1.26.1
- protect a few XMLFirstItem search against faulty players that return NULL
1.26.0
- increase LMS max version
1.25.1
- tabulate volume conversion
1.25.0
- do not delete Sonos context when group is created to manage volume
- volume is now a double to allow scaling in groups
- do not use mute anymore when paused, let volume go to 0 and then restore it
1.20.2
- use correct 'os' and 'osName' for freebsd
1.20.1
- offer freebsd helper as well
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
- 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
- Add back removal timeout
- (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.1
- add libeay.dll and ssleay.dll to the package
1.15.0
- add SSL support
1.14.1
- add time counter offset for players (Sonos) which reset elapsed time when icy data is received
- remove some unused code/data (BusyDrop)
1.14.0
- add 'E' tag parameter to get the browse url
1.13.1
- continuing SoundTouch saga ... player might not always reach duration, so need to add a timeout when close to end of track
- 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) add <nudge> parameter for Bose player to force a "next" when tracktime is > duration + nudge
- (1) crossfade all we can at every step (don't need the whole fade buffer) and make room for process
- (2) remove <nudge> and replace it by accept_nexturi == 2 to force gapped and stop when overtime
- (3) add accept_nexturi -1 (stop and nudge) and 2 (next) for Bose and faulty devices
- (4) go back to 'force' mode where play is enforced when overtime is detected
- (5) wait 2s before playing next in 'force' mode
- (6) undo (5)
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 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
- (3) detect URI change missed to nudge gapless players
- (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) some clients (foobar2000 > 1.4.x) opens 2 sockets immediately and do a GET on both, then close the first one. That causes it to fail if some bytes have already been sent. In case of simple re-opening (not the CC or SOnos mode), reset the obuf pointer at the beginning. This should work as the obuf uses a large STUB which garantees that new data are not written unless at least the STUB amount has been sent to player
1.10.0
- remove sleep timers for conditions
1.9.2
- move all strings from basic.html to strings.txt
- when getprotocolinfo fails, return an empty string to allow player creation
1.9.1
- disable icy metadata when no send metadata disabled
- add icy mode 2 to send only text, no artwork
- use translation from strings.txt for Yes/No
1.8.3
- (1) xml_GetFirstItem descends through list until it finds something
- (2) return NULL not "" in xml_GetFirstItem when nothing found
- (2) remove range-request
1.8.2
- (1) move Roon Mode to squeezelite config size as Roon does report LMS version 7.7.5 but does not have tha AIFF header issue
- (1) fake MAC was set to "cc" instead of "bb"
- (2) cleanup profiles.xml
- (2) set range-request to none, although some client still require ranges
- (2) set optional sample rate, sample size, channels and size in DIDL-lite
- (2) get channel from metadata
- (2) hidden 'c' parameter
- (2) add <stream_length> -2 which sets length only for PCM (when known)
1.8.0
- (1) add DSD support in thru mode
1.7.6
- Search for available HTTP port must be 2x MAX_PLAYERS
- QueueFlush correction
1.7.5
- Move mutex and cli_mutex creation/deletion out of the slimprot 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
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
- (1) add battery information
- (2) if ICY send is partial, do not try to send audio data
- (3) test that Resp is not NULL before checking for ExInfo
1.6.3
- getsockoption for SO_REUSEPORT was resetting parameter
1.6.2
- do not send any volume unless a real command has been sent by LMS
- full cross-compiling
1.6.1
- CODECS flags to allow compilation in thru mode only
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 (noy in the select/accept waiting loop)
1.5.0
- add alac support
1.4.0
- tail mode moved to obuf
- obuf size fixed to 3MB with 2MB for tail
- Sonos HTTP mode used for pause was not working (USER-AGENT changed)
1.3.2
- renderer index could be captured from a previous track in case of fast play/stop/play sessions
1.3.1
- flac compression level was not used from mode parameter
1.3.0
- get cli port from server
1.2.2
- only check codecs with UPnP capabilities in thru mode
- 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
- raw mode is tried (if enabled) in pcm mode even with incomplete sample size & rate by sending 'http-get:*:*' in UPnP header and send sending
the audio/L... with HTTP header. Sample size & rate are "guessed" from metadata, so might not work all the time
1.1.2
- (skipped 1.1.1)
- re-encode mode for flac is named 'flc', not 'flac'
1.1.0
- add MP3 re-encoding
- icy artwork removes ' - ' when no artist
- reduce icy interval to 16384
- forced_mimetypes was not used for checking codecs
- fade-in/out was not working properly for short tracks in flow mode
- transferMode.dlna.org has wrong case
- shorter wait in select() if obuf has space and there is data to proceed
- faulty player timing pushed to SQ_TIME to hide from slimproto
- when ICY metadata was set, header string was not released
- improve settings UI
- ICY metadata addition moved to output_thread so that obuf only contains data (needed when a HTTP close/open happens)
- check mp3 sample rate & bitrate consitency
- 24 bits packed processing as incorrect when a single frame was available or less than 2 frames were available in target
- only one extra mimetype was taken into account
1.0.1
- (1-2) start full icy metadata at the very begining ot HTTP response
- re-activate artwork sending in icy metadata
1.0.0
- full processing mode with flow
- send STMd in case of streaming error (0 bytes)
- many bug fixes
0.3.0.9
- pcm format was not inserting rate & channel when it was missing in ProtocolInfo
- (3) handling of < 0 sample rates
0.3.0.8
- set STREAM_DELAY to 15s
- fix 24 bits replay gain
- codec list is "flc,aif,pcm,mp3"
0.3.0.7
- set AccuratePlayPoints to false
0.3.0.6
- 32 bits comparaison correction (volume could be stuck)
0.3.0.5
- add aarch64 version
0.3.0.4
- (1) slimproto_close must join thread, not detach it otherwise other _close function might destroy buffer mutexes
- (1) move to "status" cmd query to have only a single query for all metadata
- (1) metadata path and track_has removed
- (2) duration can be taken from "status" as well
0.3.0.3
- device with no ServiceURL caused a NULL access while searching fro NextTRansportInfo
- when ProtocolInfo was not found, friendlyName memory was not released
0.3.0.2
- mimetype delayed acquisition in output_http is a boolean, relying now on out->mimetype
- dlna features is a function call instead of a field in output structure (a bit cleaner)
- 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
0.3.0.1
- forced_mimetypes parameter should use "%s" format string as it can be empty
- (P) Misc correction in help strings
- ProtocolInfo parsing was crashing if sink was ending by a serie of ','
- More liberal parsing of raw PCM (audio/Lxx)
- Need to respond to getContentFeatures.dlna.org (pretty ugly patch)
0.3.0.0
- rewrite of most of the core code:
- no use of libupnp webserver anymore
- own HTTP server for fine control (only -1 and -3 mode now)
- streaming moved to modified squeezelite part of code
- remove temporary file buffering
- add <forced_mimetypes> to allow format that are not normally authorized by player (i.e flac or aac)
- use proprietary Sonos format when streaming froma mp3/aac radio ==> icy works
- new handling of UPnP 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
- add possibility to dump players ('dump' & 'dumpall' commmands)
- cli_send_comment uses timeout in connect (for freebsd)
- (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
- (6) while streaming, HTTP server shall not close connection if socket read ready but no data is received
- (7) roll back to (5)
- (7) do not add HTTP header "Accept-Range: none"
0.2.15.1
- correct memory leak is isMater and GetGroupVolume
- no more wait loop for GetProtocolInfo, make it a sync call
0.2.15.0
- add a "restart" button
- always remove a player when BYEBYE is received
0.2.14.3
- default name is zone name for Sonos device
0.2.14.2
- proper elimination of slave Sonos devices (including surroung setup)
0.2.14.0
- detect Sonos groups and do not add slaves
- add Sonos groups volume
0.2.13.0
- HasDigitalOut =1 so that volume can be blocked
- small code cleaning
0.2.15.5
- update renderer thread cleaned for better exit
- memory leaks correction
- code cleaning
0.2.12.4
- remove earlySTMD option
- read_file needed to declare ready_buffering
- (P) do not save config file if it does not already exist
- another silly mistake in 32 bits timer comparison :-(
- clean UPnPinitialize
- only send metadata if requested, even for live broadcast
- cleanup code to be closer to AirConnect
- Reset state to UNKNOWN only when needed, otherwise a fake STOP is detected on slow players
0.2.12.3
- correct timegaps using gettime_ms() to manage 32 bits rollover
- clean settings.pm to make it more readable
0.2.12.2
- Initial server detection should be in slimproto thread, otherwise sq_run_device can block
0.2.12.1
- When a players sends BYE-BYE, set missing counter to 0 to make sure it will be removed at next search
- Update file headers
- do not try to add flac header when "reserved" bit is set (TIDAL)
- early_STMD is now a runtime configuration
- correct some strings
- TIDAL does not work when long HTTP streaming pause, use pacing_size only with *live* streams to avoid them (showed more frequently with EARLY_STMD)
- clean SendARP
- when renewal fail, race condition could occur if player was destroyed
- manually renew subscription when auto-renewal fails
- make sure MAC is unique across devices
0.2.12.0
- set UPnP max HTTP/SOAP content *after* stack initialization
- always gap remote stream to avoid large buffer to be created
- renaming a few variables for better clarity
- optimize nextURI usage by requesting next track much earlier
- solve problem when SetNextURI arrives too late by using <min_gapless>
- Big fat cleanup of all old useless squeezelite items (RESAMPLE, DSD, PROCESS, decoder, mode, codecs)
0.2.11.3 <not published>
- ICY update url built correctly when using imageproxy
- add "_safe mode" and "_normal mode" to profiles.xml
- reset ExpectStop only when receiving a "PLAYING" state confirm
- allow "stop" from remote to stop LMS (will not work in the last 5 seconds of playback)
- when fake size HTTP length is required (Sonos), stop the player from trying to re-open the file once it has all been sent
- 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.11.2
- When using LMS as image proxy, artwork_url must be prefixed with http://<server>:<port>
0.2.11.1
- When player properly disconnects (sends a bye-bye) event, it was not removed from list
0.2.11.0
- <stream_length> enhanced to support HTTP mode by codec
- update profile.xml for Sonos using the above
0.2.10.7
- do not remove missing player when remove_count is set to 0
- limit sample rate when slimproto sends a rate above max_supported