I've now got to the "hybrid rice" coding. One should first read a bunch
of sample indices, of nBits4SamplLoci each, which need special handling
later. However, I can't find any definition of "nBits4SamplLoci" in the
spec.
The number of samples is included in the xll header, and decoded as
(quoting the spec, sec 8.2.1):
tmp = ExtractBits(4);
nSmplInSeg = 1 << tmp;
So my best guess is that nBits4SamplLoci should be the 4 bits assigned to
tmp above; that's the number of bits needed to identify a particular
sample. Is that correct?
And one other thing (which I'll have to get back to later): Can someone
explain briefly how to store the ultimate output of the decoder? I'm not
at all familiar with the buffer handling in libav. For now, I'm going
to store all the samples read in a separate buffer, part of the dca
context,
int xll_sample_buf[1<<15];
I haven't yet looked into the needed crunching on this data for the
decoding, but I'd expect it can mostly be done in place.
For xll, there are two cases:
1. The decoded xll samples are copied directly to the output buffer.
2. The decoded xll samples are only a residual, to be added to the
samples generated by the "core" dca decoder.
I'll postpone case 2 until case 1 is reasonably working.
Regards,
/Niels
--
Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26.
Internet email is subject to wholesale government surveillance.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel