[FFmpeg-devel] [PATCH] avcodec/aacdec: add support for AAC SBR with 960 frame length

Matthias Walliczek matthias at walliczek.de
Sat May 20 17:34:34 EEST 2023


On 20.05.2023 16:17, Lynne wrote:

> Yeah, no, this patch is far from complete.
> I have a more complete and correct patch I was working on which had a minor issue I didn't get around to fixing.
> I'll see if I have missed changing a constant that you haven't missed.

Your patch looks definitely more complete - but I think there is one 
change missing:

@@ -1190,16 +1191,20 @@ static void sbr_qmf_analysis(AVFloatDSPContext 
*dsp, AVTXContext *mdct,
                               av_tx_fn mdct_fn,
  #endif /* USE_FIXED */
                               SBRDSPContext *sbrdsp, const INTFLOAT 
*in, INTFLOAT *x,
-                             INTFLOAT z[320], INTFLOAT W[2][32][32][2], 
int buf_idx)
+                             INTFLOAT z[320], INTFLOAT W[2][32][32][2], 
int buf_idx,
+                             int frame_length_short)
  {
      int i;
  #if USE_FIXED
      int j;
  #endif
-    memcpy(x    , x+1024, (320-32)*sizeof(x[0]));
-    memcpy(x+288, in,         1024*sizeof(x[0]));
-    for (i = 0; i < 32; i++) { // numTimeSlots*RATE = 16*2 as 960 
sample frames
-                               // are not supported
+    const int frameLength = frame_length_short ? 960 : 1024;
+    const int numTimeSlots = frame_length_short ? 15 : 16;
+
+    memcpy(x    , x+frameLength, (320-32)*sizeof(x[0]));
+    memcpy(x+288, in,         frameLength*sizeof(x[0]));

The adaptation of the memcpy to the changed framelength.

Best regards,
   Matthias



More information about the ffmpeg-devel mailing list