ambisonics in an ogg opus container agenda
play

Ambisonics in an Ogg Opus Container Agenda Ambisonics Foundations - PowerPoint PPT Presentation

Ambisonics in an Ogg Opus Container Agenda Ambisonics Foundations Adding Ambisonics to Opus Mappings Calculations Opus function calls Agenda Ambisonics Foundations Adding Ambisonics to Opus Mappings


  1. Ambisonics in an Ogg Opus Container

  2. Agenda ● Ambisonics Foundations ● Adding Ambisonics to Opus ● Mappings ● Calculations ● Opus function calls

  3. Agenda ● Ambisonics Foundations ● Adding Ambisonics to Opus ● Mappings ● Calculations ● Opus function calls

  4. First order Approximation

  5. = + + +

  6. 1st order 3rd order Reality 4 channels 16 channels

  7. Chrome

  8. Agenda ● Ambisonics Foundations ● Adding Ambisonics to Opus ● Mappings ● Calculations ● Opus function calls

  9. Channel Mappings ● Ambisonics Opus Channel Mapping 2 & 3 ● A demuxer implementation encountering Channel Mapping Family 2 or Family 3 MUST interpret the Opus stream as containing ambisonics

  10. General Channel Mapping for 2 & 3 ● Allowed numbers of channels: (1 + n) 2 + 2j for n = 0...14 and j = 0 or 1 n denotes the ambisonic order j denotes separate non-diegetic (non-head-tracked) stereo stream ● Channels can be zeroed-out to support ‘mixed-order’ ambisonics

  11. Channel Mapping 2 & 3 Representation ● Order of Ambisonics Channel Number (ACN) ACN = n * (n + 1) + m for order n and degree m; followed by 2 optional channels of non-diegetic stereo indexed (L, R) ● Ambisonic channels are expected to be normalized with Schmidt Semi-Normalization (SN3D)

  12. Coding Details Channel Mapping 2 ● Variable bit rate allocation ● More bits in the ‘W’ (Omnidirectional) Channel

  13. KEY U = encoder input streams Coding Details X = encoded/decoded channels, Channel Mapping 3 S = decoder output streams C = num. of input/output channels K = num. of streams + num. of coupled streams A = mixing matrix D = demixing matrix (stored in header) encoder decoder

  14. Channel Mapping Tables ● Mapping 2 uses Mapping 1’s Mapping Table 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+ | Stream Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Coupled Count | Demixing Matrix : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Channel Mapping Family 3’s Mapping Table

  15. Proposed Opus API Changes Encoding & Decoding Channel Mapping 2 OpusMSEncoder * opus_multistream_surround_encoder_create(..., mapping_family = 2, ...); OpusMSDecoder * opus_multistream_surround_decoder_create(...);

  16. Proposed Opus API Changes Encoding & Decoding Channel Mapping 3 OpusAmbEncoder * opus_ambisonics_surround_encoder_create(..., mapping_family = 3, (out)MappingMatrix *demixing_matrix); or OpusAmbEncoder * opus_ambisonics_encoder_create(..., mapping_family = 3, (in)MappingMatrix *mixing_matrix); OpusAmbDecoder * opus_ambisonics_decoder_create(..., (in)MappingMatrix *demixing_matrix);

  17. Questions

  18. Comparison of Results Vorbis Opus Opus 4:3 Vorbis Opus Opus 4:3 VisQol @ 192kbps VisQol @ 128kbps Directivity Opus 128kbps Opus 4:3 128kbps Opus 192kbps Opus 4:3 192kbps

Recommend


More recommend