[FFmpeg-cvslog] r22383 - trunk/libavcodec/aacsbr.c

alexc subversion
Tue Mar 9 11:26:54 CET 2010


Author: alexc
Date: Tue Mar  9 11:26:54 2010
New Revision: 22383

Log:
aacsbr: Move the e_a calculation from sbr_mapping() to read_sbr_grid().

Modified:
   trunk/libavcodec/aacsbr.c

Modified: trunk/libavcodec/aacsbr.c
==============================================================================
--- trunk/libavcodec/aacsbr.c	Tue Mar  9 11:26:25 2010	(r22382)
+++ trunk/libavcodec/aacsbr.c	Tue Mar  9 11:26:54 2010	(r22383)
@@ -763,6 +763,13 @@ static int read_sbr_grid(AACContext *ac,
     } else
         ch_data->t_q[1] = ch_data->t_env[ch_data->bs_num_env[1]];
 
+    ch_data->e_a[0] = -(ch_data->e_a[1] != ch_data->bs_num_env[0]); // l_APrev
+    ch_data->e_a[1] = -1;
+    if ((ch_data->bs_frame_class & 1) && ch_data->bs_pointer) { // FIXVAR or VARVAR and bs_pointer != 0
+        ch_data->e_a[1] = ch_data->bs_num_env[1] + 1 - ch_data->bs_pointer;
+    } else if ((ch_data->bs_frame_class == 2) && (ch_data->bs_pointer > 1)) // VARFIX and bs_pointer > 1
+        ch_data->e_a[1] = ch_data->bs_pointer - 1;
+
     return 0;
 }
 
@@ -771,6 +778,7 @@ static void copy_sbr_grid(SBRData *dst, 
     dst->bs_freq_res[0] = dst->bs_freq_res[dst->bs_num_env[1]];
     dst->bs_num_env[0]  = dst->bs_num_env[1];
     dst->t_env_num_env_old = dst->t_env[dst->bs_num_env[0]];
+    dst->e_a[0]         = -(dst->e_a[1] != dst->bs_num_env[0]);
 
     //These variables are read from the bitstream and therefore copied
     memcpy(dst->bs_freq_res+1, src->bs_freq_res+1, sizeof(dst->bs_freq_res)-sizeof(*dst->bs_freq_res));
@@ -784,6 +792,7 @@ static void copy_sbr_grid(SBRData *dst, 
     dst->bs_num_noise   = src->bs_num_noise;
     dst->bs_pointer     = src->bs_pointer;
     dst->bs_frame_class = src->bs_frame_class;
+    dst->e_a[1]         = src->e_a[1];
 }
 
 /// Read how the envelope and noise floor data is delta coded
@@ -1464,13 +1473,6 @@ static void sbr_mapping(AACContext *ac, 
 {
     int e, i, m;
 
-    e_a[0] = -(e_a[1] != ch_data->bs_num_env[0]); // l_APrev
-    e_a[1] = -1;
-    if ((ch_data->bs_frame_class & 1) && ch_data->bs_pointer) { // FIXVAR or VARVAR and bs_pointer != 0
-        e_a[1] = ch_data->bs_num_env[1] + 1 - ch_data->bs_pointer;
-    } else if ((ch_data->bs_frame_class == 2) && (ch_data->bs_pointer > 1)) // VARFIX and bs_pointer > 1
-        e_a[1] = ch_data->bs_pointer - 1;
-
     memset(ch_data->s_indexmapped[1], 0, 7*sizeof(ch_data->s_indexmapped[1]));
     for (e = 0; e < ch_data->bs_num_env[1]; e++) {
         const unsigned int ilim = sbr->n[ch_data->bs_freq_res[e + 1]];



More information about the ffmpeg-cvslog mailing list