[opus] OPUS_SET_MAX_BANDWIDTH does not have expected results

Philip Gruebele pgruebele at cox.net
Wed Feb 26 21:03:52 PST 2014


Hi All.

I am seeing the following unexpected behavior with 
OPUS_SET_MAX_BANDWIDTH.  I expect that setting this to 
OPUS_BANDWIDTH_NARROWBAND would give similar results to passing an 8Khz 
sample rate stream, but OPUS_SET_MAX_BANDWIDTH has almost no effect with 
any settings.

My test data has 4Khz bandwidth.  I am testing the opus encoder (latest 
versions) with the following opus_encoder_ctl options: OPUS_SET_VBR=1, 
OPUS_SET_VBR_CONSTRAINT=unconstrained, OPUS_SET_COMPLEXITY=10, 
OPUS_APPLICATION_AUDIO, frame=60ms

I compress 2 separate audio streams which only differ in the sample 
rate.   One is 8Khz and the other is 16Khz.  Both contain identical 4Khz 
bandwidth audio (the 16Khz file is a properly up-sampled copy of the 
8Khz file).  When compressing these, the 16Khz input generates about 
double the opus file size even though the audio content is identical.  I 
found this to be unexpected since I expected VBR mode to care only about 
the incoming audio bandwidth and not the incoming sample rate.

So I tried to use OPUS_SET_MAX_BANDWIDTH=OPUS_BANDWIDTH_NARROWBAND in 
order to explicitly tell opus that even though the stream is 16Khz, the 
stream bandwidth is only 4Khz.  However, this does not change the opus 
file size for the 16Khz stream.  In fact, the OPUS_SET_MAX_BANDWIDTH 
setting really has little effect regardless of which bandwidth I select 
with it.  Is this a bug?  Am I misunderstanding something here?

Basically I will have a 16Khz stream in which the bandwidth will toggle 
between 4 and 8 Khz.  I would like opus to optimally compress this, but 
based on these tests it appears that the vbr compression rate is 
linearly related to the input sample rate even though I expected it to 
be a function of the actual input audio bandwidth. Because of this 
shortcoming I am considering using ogg with opus links, and creating a 
new link every time the bandwidth changes and setting the sample rate to 
be 2x the bandwidth.  This would generate better compressed output but 
is a much more complex solution so any advice would be greatly appreciated.

Cheers
Philip


More information about the opus mailing list