@paul background: Have my own format in the making, which is TLV-alike in that it's a RIFF(64) dialect, and metadata tags like your frequency and location encoding need to be handled in a more general way (I'd like to encapsulate a sensible subset, maybe all of GR3's PMT, and the most useful sigMF annotations).
We might want to sit down at some point, after all this plays out, and think about a compressed container format. I picked @rygorous's brain on high-compression for complex numbers …
@funkylab word!
I published it because I'm using it a lot locally, but if this winds up sparking some useful convos that turn into something a few of us make more broadly useful I'd be excited!
I've played a lot with compressing IQ with some mixed but interesting results. It's fantastic for generated IQ, rx'd IQ has been a lot more miss than hit. The float complex types compress best. Old versions of ARF had a bit flag on the byte order that would pack 12 bit IQ samples (pluto, ettus)
@paul re: recorded vs generated IQ: Well, true entropy :)
compression methodoligically, for float it might make sense to first simply go for conversion from I,Q to |z|, arg(z) and going block float on |z| and very simple linear predictive + adaptive error representation on arg(z); or maybe just LPC for the complex values as they are.