[opus] [EXTERNAL] Re: Developing OPUS on TI CC3220
Rodriguez, Vince
vince.rodriguez at ti.com
Fri Feb 23 15:47:38 UTC 2018
Thanks Jean-Marc,
I was able to get both encode and decode working the CC3220 device! But for bi-directional communication, I need decode and encode to occur in less time than the frame size I’m sending (20 ms).
Currently decode takes 16~22 ms and encode is ~13 ms. What is the best way to try to reduce this time? Also, unsure why encode is taking less time than decode...
I've also noticed if I change my encoder to silk only, I get a Heap overflow... I have dynamically allocated a heap for the codec, got the size using the api and used encode init so that the memory is allocated to my created heap. I have 30k currently in heap, since the return of get size was ~25 kB. This seems to happen when I change the application as well. :/
Currently here is how I am setting up my encoder:
int size = opus_encoder_get_size(1);
sOpusEnc = Memory_alloc(OpusHeap,size,NULL,NULL);
//
// sOpusEnc = opus_encoder_create(16000,
// 1,
// OPUS_APPLICATION_VOIP, &i32error);
i32error = opus_encoder_init(sOpusEnc, 16000, 1, OPUS_APPLICATION_RESTRICTED_LOWDELAY);
opus_encoder_ctl(sOpusEnc, OPUS_SET_BITRATE(16000));
opus_encoder_ctl(sOpusEnc, OPUS_SET_VBR(1));
opus_encoder_ctl(sOpusEnc, OPUS_SET_VBR_CONSTRAINT(0));
opus_encoder_ctl(sOpusEnc, OPUS_SET_COMPLEXITY(0));
opus_encoder_ctl(sOpusEnc, OPUS_SET_INBAND_FEC(0));
opus_encoder_ctl(sOpusEnc, OPUS_SET_FORCE_CHANNELS(1));//Mono
opus_encoder_ctl(sOpusEnc, OPUS_SET_PACKET_LOSS_PERC(0));
opus_encoder_ctl(sOpusEnc, OPUS_SET_LSB_DEPTH(16)
);
opus_encoder_ctl(sOpusEnc,
OPUS_SET_EXPERT_FRAME_DURATION(OPUS_FRAMESIZE_20_MS));
opus_encoder_ctl(sOpusEnc, OPUS_SET_FORCE_MODE(MODE_CELT_ONLY));
Thanks again for your help!
VR
-----Original Message-----
From: Jean-Marc Valin [mailto:jmvalin at jmvalin.ca]
Sent: Tuesday, February 20, 2018 6:23 PM
To: Rodriguez, Vince; opus at xiph.org
Subject: Re: [EXTERNAL] Re: [opus] Developing OPUS on TI CC3220
On 02/20/2018 06:48 PM, Rodriguez, Vince wrote:
> I am trying to get the library to build without using the pseudostack
> define, and use either VAR_ARRAYS or ALLOC, but it seems the global
> stack is not defined.
Not sure what you mean here. If your compiler supports C99 VLAs, then by all means just define VAR_ARRAYS and you're good to go. If not, the second best option is alloca(), which you can use by defining USE_ALLOCA. If your compiler supports alloca() and USE_ALLOCA doesn't work, then you may need to make minor tweaks to celt/stack_alloc.h. Do not use NONTHREADSAFE_PSEUDOSTACK unless all other options fail.
Cheers,
Jean-Marc
> -----Original Message----- From: Jean-Marc Valin
> [mailto:jmvalin at jmvalin.ca] Sent: Tuesday, February 20, 2018 5:40 PM
> To: Rodriguez, Vince; opus at xiph.org<mailto:opus at xiph.org> Subject: [EXTERNAL] Re: [opus]
> Developing OPUS on TI CC3220
>
> Hi Vince,
>
> Normally, Opus should work fine on the CC3220, though real-time
> encoding may be a bit tight depending on what configuration you
> choose. You'll probably want to configure with --enable-fixed-point
> and --disable-float-api (or define FIXED_POINT and DISABLE_FLOAT_API
> if you don't use autoconf).
>
> The encoder has a bunch of run-time settings that you may want to set,
> depending on your application. These include bitrate, complexity
> (probably a low setting for that that chip), and bitrate management
> (CBR/VBR/CVBR).
>
> In the end, aside from the complexity requirements, you should need to
> do anything special to get Opus running on your chip.
>
> Cheers,
>
> Jean-Marc
>
> On 02/20/2018 05:46 PM, Rodriguez, Vince wrote:
>> I'm looking to try to port a Opus Decoder and Encoder onto the TI
>> CC3220SF (http://www.ti.com/product/CC3220) device. Currently, I have
>> successfully been able to get the decode working for a .ogg file
>> saved locally to the serial flash. My end goal is bidirectional audio
>> using OPUS between two devices. While looking into the documentation
>> for the Encoder, I was not sure what the best step forward would be
>> in trying to enable this streaming application.
>>
>>
>>
>> Can someone give me a little guidance on how to properly setup the
>> encoder for streaming applications, and if I need to do anything
>> special to ensure the encoder works correctly on an ARM M4 (not
>> Floating point) MCU?
>>
>>
>>
>> Thanks!
>>
>>
>>
>> *Vince Rodriguez*
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________ opus mailing list
>> opus at xiph.org<mailto:opus at xiph.org> http://lists.xiph.org/mailman/listinfo/opus
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.xiph.org/pipermail/opus/attachments/20180223/edc7ebbd/attachment.html>
More information about the opus
mailing list