[opus] [PATCH] Support for Ambisonics

Jean-Marc Valin jmvalin at jmvalin.ca
Tue Mar 20 16:20:55 UTC 2018


On 03/20/2018 11:51 AM, Drew Allen wrote:
> Just to confirm, I would use opeint_* for all the
> OpusGenericEncoder-related functions?

Correct. Or you can also use oge_ if you like. Just don't use something
that starts with an underscore.


> On Tue, Mar 20, 2018 at 8:38 AM Jean-Marc Valin <jmvalin at jmvalin.ca
> <mailto:jmvalin at jmvalin.ca>> wrote:
> 
>     Hi Mark, Drew,
> 
>     On 03/20/2018 02:40 AM, Mark Harris wrote:
>     > + int _oge_use_projection(int channel_mapping);
>     >
>     > These functions are part of libopusenc, so I'd expect them to have an
>     > ope prefix like the other functions in the libopusenc library.
> 
>     I'd like to avoid using the ope_ prefix for functions that's aren't in
>     the public API. Right now there are other functions with a leading
>     underscore, so we'll have to fix them as well (not in this patch of
>     course). Maybe an "opeint_" prefix would do the job here (unless anyone
>     has a better idea)?
> 
>     > +int ope_encoder_deferred_init_with_mapping(OggOpusEnc *enc, int
>     > family, int streams,
>     >      int coupled_streams, const unsigned char *mapping) {
>     >    int ret;
>     >    int i;
>     >
>     > This code is allowing family 253 for a deferred init, but does not
>     > create a projection encoder in that case, so it looks like it will
>     > fail when writing the id header since it won't be able to get the
>     > demixing matrix.  It should probably not be allowing family 253 here.
> 
>     Actually, in the case of ope_encoder_deferred_init_with_mapping(), I
>     think it's probably best to just keep the existing code (not use
>     wrappers), since that function cannot be used by the projection encoder
>     at all.
> 
>             Jean-Marc
> 
> 
>     >  - Mark
>     >
>     >
>     > On Mon, Mar 19, 2018 at 3:00 PM, Drew Allen <bitllama at google.com
>     <mailto:bitllama at google.com>> wrote:
>     >> Hi Jean-Marc,
>     >>
>     >> I've modified my patches for libopus and libopusenc based on your
>     >> suggestions.
>     >>
>     >> Cheers,
>     >> Drew
>     >>
>     >> On Mon, Mar 19, 2018 at 2:05 PM Jean-Marc Valin
>     <jmvalin at jmvalin.ca <mailto:jmvalin at jmvalin.ca>> wrote:
>     >>>
>     >>> Hi Drew,
>     >>>
>     >>> I think the libopusenc patch is better, but there's still a few
>     issues
>     >>> left:
>     >>> 1) The static MAX_PACKET_BUFFER_SIZE value is still problematic
>     because
>     >>> if you link libopusenc with a new version of libopus that supports
>     >>> higher order projection or just more projection channels for
>     order 3,
>     >>> then you will overflow the buffer. I think what you'd want is a
>     >>> _ope_opus_header_get_size() call that would return how large the
>     header
>     >>> *actually* is. Then you can use that value instead of
>     >>> MAX_PACKET_BUFFER_SIZE in init_stream()
>     >>> 2) I think the remaining if()s in ope_encoder_ctl() can also be
>     removed
>     >>> by adding another ctl() macro (like _oge_ctl()) with an extra
>     argument.
>     >>> In the case of OPUS_MULTISTREAM_GET_ENCODER_STATE_REQUEST, you can
>     >>> simply use _oge_ctl(enc->st,
>     >>> OPUS_MULTISTREAM_GET_ENCODER_STATE(stream_id, value))
>     >>> 3) On libopus itself, why "#define OPUS_HAVE_OPUS_PROJECTION_H 9000"
>     >>> instead of just "#define OPUS_HAVE_OPUS_PROJECTION_H"?
>     >>>
>     >>> Cheers,
>     >>>
>     >>>         Jean-Marc
>     >>>
>     >>> On 03/19/2018 02:53 PM, Drew Allen wrote:
>     >>>>
>     >>>> On Mon, Mar 19, 2018 at 11:52 AM Drew Allen
>     <bitllama at google.com <mailto:bitllama at google.com>
>     >>>> <mailto:bitllama at google.com <mailto:bitllama at google.com>>> wrote:
>     >>>>
>     >>>>     Hello all,
>     >>>>
>     >>>>     Sorry for the delay (got really sick last week).
>     >>>>
>     >>>>     Attached are updated patches for libopus, libopusenc,
>     opusfile and
>     >>>>     opus-tools.
>     >>>>
>     >>>>     Note that the patches for libopusenc, opusfile and
>     opus-tools are
>     >>>>     dependent on the patch for libopus.
>     >>>>
>     >>>>     Please let me know if you have any additional followup
>     comments or
>     >>>>     questions.
>     >>>>
>     >>>>     Cheers,
>     >>>>     Drew
>     >>>>
>     >>>>
>     >>>>
>     >>>> _______________________________________________
>     >>>> opus mailing list
>     >>>> opus at xiph.org <mailto:opus at xiph.org>
>     >>>> http://lists.xiph.org/mailman/listinfo/opus
>     >>>>
>     >>
>     >>
>     >> _______________________________________________
>     >> opus mailing list
>     >> opus at xiph.org <mailto:opus at xiph.org>
>     >> http://lists.xiph.org/mailman/listinfo/opus
>     >>
> 


More information about the opus mailing list