I've been working for a while to try to improve codecs support in LMS
and recently @philchillbill asked for the possibility to have a
/stream.flac instead of /stream.mp3 so that one can stream lossless to
any HTTP-capable client. I've made a first version, not yet complete but
I was wondering at that occasion about the direction of codecs support
in LMS. I'm talking about where to put *focus* not about removing
support for others. Focus means where we make thinks extra seamless, or
for example we have rules to transforme *everything* into the focused
codecs, no matter what is the source.

Please, if you want to discuss about CPU usage influence on SQ or that
bits are not bits, refrain from answering that post, this would be
wasting everybody's time

Obviously, we can separate the question in two; lossless and lossy.
Let's try with the easy one, lossless. 

FLAC has a good compression ratio, a free & open implementation,
reasonable CPU requirements and can handle 24 bits at "any" sample rate.
It can be streamed as each block is independent, it can be put inside an
Ogg container to have in-band metadata and is widely supported, so flac
is the winner, no debate. 

Things are bit more complex for lossy, although I have a strong
preference there and this is Opus. Opus is very good quality, excellent
compression ratio, fixed output sample rate at 48kHz which is perfect.
It also has a free and open source implementation, reasonable CPU
requirements and (big plus), can be streamed inside an Ogg container as
flac. There is one thing I don't like about it is that (AFAIK) it is not
streamable independently (in blocks), as mp3/flac are. It needs a header
to be added at the beginning of every playback. Still, I think the
future of lossy is opus, so that would be my preference.

I did not mention that before, but mp3 is a dead dish, IMHO. Now, maybe
here we need a second player and I was thinking of aac as a necessary
evil. It has the benefit of being streamable in ADTS frames and seems to
be adopted a lot (YT content is always a good indicator). Now, I don't
like it; it is not free, it consumes a lot of CPU, there is no good open
implementation. I know there is faad2, but it it so CPU & stack
expensive that I gave up trying to port it on squeezelite-esp32. I also
don't like aac for the other encapsulation method which is mp4

I personally dislike a lot mp4 as it is cumbersome, designed by a
committee (a camel) where people doing the spec were obviously on the
side of the source, not destination. As the result, they had fun with
lot of permutations and combinations to do the a lot/the same things
(it' s like dash/mpd IMHO) as the source can always decide what it likes
where the poor destination, which is usually the most resource limited
has to support every option!

So, I'm a bit hesitant on lossy, is this opus only or opus + aac, aac
being the unpleasant uncle at family dinners.

It's all about choices, so thoughts?



LMS 8.2 on Odroid-C4 - *SqueezeAMP!*, 5xRadio, 5xBoom, 2xDuet, 1xTouch,
1xSB3. Sonos PLAY:3, PLAY:5, Marantz NR1603, Foobar2000, ShairPortW,
2xChromecast Audio, Chromecast v1 and v2, Squeezelite on Pi,  Yamaha
WX-010, AppleTV 4, Airport Express, GGMM E5, RivaArena 1 & 3
------------------------------------------------------------------------
philippe_44's Profile: http://forums.slimdevices.com/member.php?userid=17261
View this thread: http://forums.slimdevices.com/showthread.php?t=114590

_______________________________________________
discuss mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/discuss

Reply via email to