[opus] Strange behavior with OGG packets?

Drew Allen bitllama at google.com
Thu May 18 19:19:41 UTC 2017


Hello all,

I'm currently in the process of implementing a mixing matrix into the
header of OPUS files for the proposed channel mapping 3 seen here:
https://tools.ietf.org/html/draft-ietf-codec-ambisonics-03#section-3.2

My implementation simply replaces writing the stream mapping char array
with the Q15 col-wise matrix vals described in the above document.

I'm able to write/read matrices of 4x4 and 9x9 and encode->decode first and
second order just fine, but writing larger matrices causes what seems to be
some sort of packet corruption. The OpusHead packet is never found, but in
it's place we have a packet at b_o_s=256 (which is where OpusHead usually
lives), but the byte size is reported to be 0 and e_o_s=0 as well. (This is
generated by parsing the packets via ogg's *ogg_stream_packetout* function.
It appears a matrix larger than 7x16 causes this issue. (The matrix values
are all signed short vals, so >224 bytes seems to fail.

I'm not very familiar with ogg internals so any advice would be greatly
appreciated! Thanks so much! :)

Cheers,
Drew
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.xiph.org/pipermail/opus/attachments/20170518/6b1edbee/attachment.html>


More information about the opus mailing list