It's my understanding that the CELT layer of Opus has a maximum input sample rate of 48k, and frequencies above 20k are effectively not encoded. I've been trying to get up to speed on the specification, and studying its operation, but as far as I can infer, there is a fixed set of 21 bands distributed logarithmically to encode DC to 20k. If I were inclined to encode at say, 96k, and pass ultrasonics up to 40k, I suppose I could in theory lie to the encoder about its input rate so it thinks it's 48k, and I could restore its 96k rate after decoding, but obviously this would result in doubling the necessary bit rate. Is there a more efficient way to encode information over 20k without breaking the standard? You may ask, why do you care about ultrasonics? Well, because the intention is to encode once to a file, and play back multiple times, at arbitrary playback speeds, and in some cases, half speed or even lower. This would result in the ultrasonics coming into the audible range, and for certain recordings, it would be preferable to hear them in detail rather than a low pass filtered version. Why use Opus for this? Video games, of course. Memory constraints. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.xiph.org/pipermail/opus/attachments/20130116/5e1a972b/attachment.htm
On Wed, Jan 16, 2013 at 2:45 PM, Corey Shay <cshay892 at gmail.com> wrote:> Why use Opus for this? Video games, of course. Memory > constraints.If you use Opus or any other lossy encoder for this you will violate their perceptual assumptions and get results that sound like crud. A lossy codec (or encoder) could? in theory? be design to work more sanely in this use case, but not for the Opus format (because much of the encoder's behavior is baked into the format for efficiency reasons) and not without substantially compromising the effectiveness of the lossy compression.
On Wed, Jan 16, 2013 at 2:45 PM, Corey Shay <cshay892 at gmail.com> wrote:> If I were inclined to > encode at say, 96k, and pass ultrasonics up to 40k, I suppose I could in > theory lie to the encoder about its input rate so it thinks it's 48k, and I > could restore its 96k rate after decoding, but obviously this would result > in doubling the necessary bit rate.This would also break all the psychoacoustic modelling. The results will be... suboptimal; not as bad a hold music turning into bursts of noise on a cellphone, but not good either.> Is there a more efficient way to encode > information over 20k without breaking the standard?I don't believe so; Opus is designed fairly strictly for distributing audio for humans to listen to, so it's not going to be easily applied to more general problems without deep modification.> You may ask, why do you care about ultrasonics? Well, because the intention > is to encode once to a file, and play back multiple times, at arbitrary > playback speeds, and in some cases, half speed or even lower. This would > result in the ultrasonics coming into the audible range, and for certain > recordings, it would be preferable to hear them in detail rather than a low > pass filtered version. Why use Opus for this? Video games, of course. Memory > constraints.Sure. I'd have thought, though, that everything trying to do this with a general purpose encoder would have the same problem. Eg, games use Vorbis and Vorbis does the same thing (though it's not hardwired into the spec itself, just part of the encoder.) Monty
On 01/16/2013 02:45 PM, Corey Shay wrote:> It's my understanding that the CELT layer of Opus has a maximum input > sample rate of 48k, and frequencies above 20k are effectively not > encoded. I've been trying to get up to speed on the specification, and > studying its operation, but as far as I can infer, there is a fixed > set of 21 bands distributed logarithmically to encode DC to 20k. If I > were inclined to encode at say, 96k, and pass ultrasonics up to 40k, I > suppose I could in theory lie to the encoder about its input rate so > it thinks it's 48k, and I could restore its 96k rate after decoding, > but obviously this would result in doubling the necessary bit rate. Is > there a more efficient way to encode information over 20k without > breaking the standard? > > You may ask, why do you care about ultrasonics? Well, because the > intention is to encode once to a file, and play back multiple times, > at arbitrary playback speeds, and in some cases, half speed or even > lower. This would result in the ultrasonics coming into the audible > range, and for certain recordings, it would be preferable to hear them > in detail rather than a low pass filtered version. Why use Opus for > this? Video games, of course. Memory constraints.I think this is a neat idea, if only to see how the behaviors come out, but I'm still confused why you would need to be able to play back things at different speeds. Do you mind elaborating more on this, please? I am just interested in knowing the applications of this. -- Libre Video http://librevideo.org
Apparently Analagous Threads
- No buffer space available - loses network connectivity
- How to GSSAPI/Kerberos authenticate with Dovecot [formerly Where is krb5.keytab or equivalent?]
- High Sampling Rates
- Apparent Maildir permission issue
- How to GSSAPI/Kerberos authenticate with Dovecot [formerly Where is krb5.keytab or equivalent?]