On Monday, July 23, 2018 at 3:33:31 PM UTC-7, Timothy B. Terriberry wrote:
> raycarino--- via dev-media wrote:
> > 1. How does a high sample rate decoded at a lower sample rate behave? 
> > Example: will decode(48kHz.ogg 16kHz) === decode(16kHz.ogg, 16kHz), or can 
> > audio artifacts be expected?
> 
> They won't give bit-identical results, but with some hand-waving about 
> the version encoded at 48 kHz having enough extra bits to make sure it 
> maintains the same quality for frequencies in the 0...8 kHz range, they 
> should sound the same. You don't have to worry about aliasing or 
> anything like that. The high-frequency content, if any, in 48kHz.ogg 
> will be removed properly.
> 
> > 2. Similarly, how does a low sample rate decoded at a higher sample rate 
> > behave? Example: will decode(16kHz.ogg, 48kHz) === decode(16kHz.ogg, 
> > 16kHz), or can audio artifacts be expected?
> 
> These should sound the same without any hand-waving.
> 
> In both cases the quality loss from using the decoder API at a different 
> sample rate than used by the encoder API should be smaller than the loss 
> introduced by using lossy compression to begin with. In the first case 
> you will obviously also lose any HF content, but this shouldn't 
> introduce artifacts in what remains.
> 
> > I'm hopeful that decoding with a different sample rate either has no 
> > distortion, or minimal distortion because:
> > (a) Firefox always seems to decode at 48kHz 
> > https://github.com/mozilla/gecko-dev/blob/f822a0b61631cbb38901569e69b4967176314aa8/dom/media/ogg/OpusParser.cpp#L46
> > (b) Chrome also seems to always decode at 48kHz 
> > https://github.com/chromium/chromium/blob/d196d28f53d37bad65feac0c0fb87a3b2c9480e9/remoting/codec/audio_decoder_opus.cc#L25
> 
> "Always use 48 kHz" is a fine approach. The real reason to use lower 
> sampling rates is if you want to run your whole audio pipeline at the 
> lower rate. Sometimes for real-time conferencing that can reduce the 
> processing required for other parts of the pipeline, like the echo 
> canceler, and improve their reliability. On small embedded devices it 
> can avoid wasting memory and cycles and save a separate resampling step 
> if your ADC or DAC aren't going to be run at the higher rate anyway. 
> None of those are of much concern for media playback in a browser.

Thank you so much for all of your help! This all makes sense. All of my 
outstanding questions have been answered.
_______________________________________________
dev-media mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-media

Reply via email to