[opus] running at 44.1K but with standard frame sizes

Marc Lindahl marc at bowery.com
Fri Jun 14 17:15:08 PDT 2013


Thanks for the answers Benjamin…

On Jun 14, 2013, at 8:05 PMEDT, Benjamin Schwartz wrote:

> I have flexibility in the frame sizes of the unencoded audio, and packet sizes on the RF link.
> 
> This implies that you don't have a very tight latency constraint, so you can afford to run a resampler.
> 

I assume the resample costs CPU cycles… the RX is battery powered, I'd just as soon avoid it if possible…

I will have situations where I need to shave every mS of latency, but others where I want to optimize link bandwidth instead.

> My conclusion is that I could set up Opus for 48K (stereo), and in reality run it at 44.1K, as long as I use stock frame sizes, and it would be fine.
> 
> In general we recommend that users _not_ do this.  Instead, we recommend that you use a high-quality resampler, and use standard Opus at 48 kHz.  Unless you have an extreme latency constraint, that will likely result in the best quality per bit.
> 
> The only issue I can think of is any of the perceptual stuff will be off by -8%, e.g. crossover/mask frequencies, etc.  Or is that true?
> 
> Yep, that's true ... and since Opus lowpasses at 20 kHz, if you run it at 44.1 you will always be lowpassing at 18 kHz, and you will never get grade-A quality no matter how many bits you spend.

Ah yes, it low passes below Nyquist, so that's a thing.  Though, 18KHz might be acceptable.

>  
> And with Opus_custom is all that stuff recalculated?
> 
> Yes, opus_custom adjusts its model to match the specified samplerate and frame size.

So if one keeps the frame size stock (e.g. 480 samples, etc.) would it minimized the adjustments it makes?

>  
> If I do need to go to opus_custom, it seems that it's still best to use the stock frame sizes, true?
> 
> opus_custom's compression performance is not heavily tested or optimized.  If you're trying to get maximum quality, you should stick with stock Opus at 48kHz.

Is the custom a total different code path for the compression?  

I figured it was just doing some buffering to get standard frame sizes, and recalculating e.g. lowpass Fc…?

In other words, if I'm reading what you're saying, if you invoke custom, but then set it up for 48K and a standard frame size (and all other identical settings to normal), you will get a worse result, for some reason?

thanks,
Marc

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/opus/attachments/20130614/496e53a6/attachment.htm 


More information about the opus mailing list