Changes between Initial Version and Version 1 of Ticket #8066, comment 14


Ignore:
Timestamp:
May 5, 2020, 3:19:19 PM (6 years ago)
Author:
Lynne

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #8066, comment 14

    initial v1  
    44
    55Having said that, I would like to point out that, in the real world, where mixing and sub-frame-sample-offsets happen, sterile cascading tests could potentially give highly misleading results, especially with good encoders like libopus.
    6 The performance of cascading encoders depends highly on whether each decoded frame is given sample-aligned to the encoder. Even a small alignment difference for each successive encode can ruin the result. For example, if a transient AAC frame (1024 samples, split into 8 smaller transforms) is given to an encoder with a 64-sample offset, the block boundary of each smaller decoded transform, where most MDCT codec artifacts happen, will be in the middle of the encoder's frame. Which, if it decides to encode as a transient (very possible, given the artifacts increase the energy) will produce very annoyinh results after no more than 5-6 encodes, regardless of the bitrate.
     6The performance of cascading encoders depends highly on whether each decoded frame is given sample-aligned to the encoder. Even a small alignment difference for each successive encode can ruin the result. For example, if a transient AAC frame (1024 samples, split into 8 smaller transforms) is given to an encoder with a 64-sample offset, the block boundary of each smaller decoded transform, where most MDCT codec artifacts happen, will be in the middle of the encoder's frame. Which, if it decides to encode as a transient (very possible, given the artifacts increase the energy) will produce very annoying results after no more than 5-6 encodes, regardless of the bitrate.
    77Coincidences like that happen and are somewhat out of your control, unless you like to inject discontinuities and latency into your stream and assume frame sizes.
    88As for Opus, it uses 120-sample overlaps on 960-sample frames, rather than the AAC's 512-samples at 1024 frames. With such a low amount of overlap (1/4 less compared to AAC), there are even higher artifacts at the frame boundary, even with non-transient frames (Opus too splits transient frames into 8 smaller transforms), and even worse, it does TF switching (recombines/uncombines smaller transforms) which is highly sensitives towards the signal (and artifacts), so Opus really benefits from "cheating". Thankfully, some of this can be kept under control due to its lossless signalling of band energy levels (so low-frequency artifacts can overwhelm the signal acceptably).