Thanks for looking into things like this. Streaming 24-bit FLAC seems like a great idea.
P.S. Rather than resorting to something esoteric like plugging in an old AM radio, perhaps you could use a more prevalent audio process like dithering (maybe even with noise shaping) to produce non-zero frames - assuming your hack continues to be necessary. Depending upon the source of your audio, there's a slight chance that dithering would be beneficial anyway. Brian Willoughby Sound Consulting On Dec 1, 2010, at 01:28, David Richards wrote: > I am streaming FLAC. 24bit no less, and its fantastic. The future I > would like to live in, is one where lossless music is streamed and > heard by people other than myself. > > It is generally not possible to stream flac correctly with the current > libflac 1.2.1, unless your into epic kludges. There is at-least one > issue in libflac, and issues in decoding clients such as VLC, mplayer > and totem. > > The good news is that one can hackfix libflac on the server side and > produce a valid stream that VLC and mplayer can take in without issue. > Totem seems to have other issues I have not investigated. > > There seems to be two problems conspiring together. Both have to do > with silence. Even though what we really want to do is listen to music > or someone yapping, silence manages to be very important, be it a few > second in a song or long periods of dead air. Problem number one that > when libflac is pumping out silent subframes, the ogg pages are never > getting flushed out, because they are so small. So until there is some > noise or the page is full, the client decoder is left hanging. Then > when it starts decoding again, its decoding silence, and thus falls > far behind in the stream, probably confusing itself and disconnecting. > Problem number two, is even if you flush these little guys.. the > clients still get confused, especially if there is more than one per > page. > > The epic kludge solution is to just never let there be any perfect > silence, not even for a few ms, plug in an old am radio and crank it > to just barely audible and add that to the stream. > > The hackfix, is to disable constant subframes, and flush any packet > less than say 700 bytes, otherwise use pageout as normal. > > The sustainable solution would probably be to add an option to libflac > to force flush the stream after X number of samples, and then fix all > of the clients. Then live the dream of streaming lossless audio. _______________________________________________ Flac-dev mailing list [email protected] http://lists.xiph.org/mailman/listinfo/flac-dev
