]> git.sesse.net Git - x264/blobdiff - common/dct.c
Fix printing of SEI header with VBV + ABR
[x264] / common / dct.c
index 07af94f809a853f5c61976a22dbf2bbe3243171d..3917510c9b3fbbcf43db6f67304e71a6763dc7bb 100644 (file)
@@ -38,16 +38,13 @@ int x264_dct8_weight2_zigzag[2][64];
 static void dct4x4dc( int16_t d[16] )
 {
     int16_t tmp[16];
-    int s01, s23;
-    int d01, d23;
-    int i;
 
-    for( i = 0; i < 4; i++ )
+    for( int i = 0; i < 4; i++ )
     {
-        s01 = d[i*4+0] + d[i*4+1];
-        d01 = d[i*4+0] - d[i*4+1];
-        s23 = d[i*4+2] + d[i*4+3];
-        d23 = d[i*4+2] - d[i*4+3];
+        int s01 = d[i*4+0] + d[i*4+1];
+        int d01 = d[i*4+0] - d[i*4+1];
+        int s23 = d[i*4+2] + d[i*4+3];
+        int d23 = d[i*4+2] - d[i*4+3];
 
         tmp[0*4+i] = s01 + s23;
         tmp[1*4+i] = s01 - s23;
@@ -55,12 +52,12 @@ static void dct4x4dc( int16_t d[16] )
         tmp[3*4+i] = d01 + d23;
     }
 
-    for( i = 0; i < 4; i++ )
+    for( int i = 0; i < 4; i++ )
     {
-        s01 = tmp[i*4+0] + tmp[i*4+1];
-        d01 = tmp[i*4+0] - tmp[i*4+1];
-        s23 = tmp[i*4+2] + tmp[i*4+3];
-        d23 = tmp[i*4+2] - tmp[i*4+3];
+        int s01 = tmp[i*4+0] + tmp[i*4+1];
+        int d01 = tmp[i*4+0] - tmp[i*4+1];
+        int s23 = tmp[i*4+2] + tmp[i*4+3];
+        int d23 = tmp[i*4+2] - tmp[i*4+3];
 
         d[i*4+0] = ( s01 + s23 + 1 ) >> 1;
         d[i*4+1] = ( s01 - s23 + 1 ) >> 1;
@@ -72,16 +69,13 @@ static void dct4x4dc( int16_t d[16] )
 static void idct4x4dc( int16_t d[16] )
 {
     int16_t tmp[16];
-    int s01, s23;
-    int d01, d23;
-    int i;
 
-    for( i = 0; i < 4; i++ )
+    for( int i = 0; i < 4; i++ )
     {
-        s01 = d[i*4+0] + d[i*4+1];
-        d01 = d[i*4+0] - d[i*4+1];
-        s23 = d[i*4+2] + d[i*4+3];
-        d23 = d[i*4+2] - d[i*4+3];
+        int s01 = d[i*4+0] + d[i*4+1];
+        int d01 = d[i*4+0] - d[i*4+1];
+        int s23 = d[i*4+2] + d[i*4+3];
+        int d23 = d[i*4+2] - d[i*4+3];
 
         tmp[0*4+i] = s01 + s23;
         tmp[1*4+i] = s01 - s23;
@@ -89,12 +83,12 @@ static void idct4x4dc( int16_t d[16] )
         tmp[3*4+i] = d01 + d23;
     }
 
-    for( i = 0; i < 4; i++ )
+    for( int i = 0; i < 4; i++ )
     {
-        s01 = tmp[i*4+0] + tmp[i*4+1];
-        d01 = tmp[i*4+0] - tmp[i*4+1];
-        s23 = tmp[i*4+2] + tmp[i*4+3];
-        d23 = tmp[i*4+2] - tmp[i*4+3];
+        int s01 = tmp[i*4+0] + tmp[i*4+1];
+        int d01 = tmp[i*4+0] - tmp[i*4+1];
+        int s23 = tmp[i*4+2] + tmp[i*4+3];
+        int d23 = tmp[i*4+2] - tmp[i*4+3];
 
         d[i*4+0] = s01 + s23;
         d[i*4+1] = s01 - s23;
@@ -106,13 +100,10 @@ static void idct4x4dc( int16_t d[16] )
 static inline void pixel_sub_wxh( int16_t *diff, int i_size,
                                   uint8_t *pix1, int i_pix1, uint8_t *pix2, int i_pix2 )
 {
-    int y, x;
-    for( y = 0; y < i_size; y++ )
+    for( int y = 0; y < i_size; y++ )
     {
-        for( x = 0; x < i_size; x++ )
-        {
+        for( int x = 0; x < i_size; x++ )
             diff[x + y*i_size] = pix1[x] - pix2[x];
-        }
         pix1 += i_pix1;
         pix2 += i_pix2;
     }
@@ -122,16 +113,15 @@ static void sub4x4_dct( int16_t dct[16], uint8_t *pix1, uint8_t *pix2 )
 {
     int16_t d[16];
     int16_t tmp[16];
-    int i;
 
     pixel_sub_wxh( d, 4, pix1, FENC_STRIDE, pix2, FDEC_STRIDE );
 
-    for( i = 0; i < 4; i++ )
+    for( int i = 0; i < 4; i++ )
     {
-        const int s03 = d[i*4+0] + d[i*4+3];
-        const int s12 = d[i*4+1] + d[i*4+2];
-        const int d03 = d[i*4+0] - d[i*4+3];
-        const int d12 = d[i*4+1] - d[i*4+2];
+        int s03 = d[i*4+0] + d[i*4+3];
+        int s12 = d[i*4+1] + d[i*4+2];
+        int d03 = d[i*4+0] - d[i*4+3];
+        int d12 = d[i*4+1] - d[i*4+2];
 
         tmp[0*4+i] =   s03 +   s12;
         tmp[1*4+i] = 2*d03 +   d12;
@@ -139,12 +129,12 @@ static void sub4x4_dct( int16_t dct[16], uint8_t *pix1, uint8_t *pix2 )
         tmp[3*4+i] =   d03 - 2*d12;
     }
 
-    for( i = 0; i < 4; i++ )
+    for( int i = 0; i < 4; i++ )
     {
-        const int s03 = tmp[i*4+0] + tmp[i*4+3];
-        const int s12 = tmp[i*4+1] + tmp[i*4+2];
-        const int d03 = tmp[i*4+0] - tmp[i*4+3];
-        const int d12 = tmp[i*4+1] - tmp[i*4+2];
+        int s03 = tmp[i*4+0] + tmp[i*4+3];
+        int s12 = tmp[i*4+1] + tmp[i*4+2];
+        int d03 = tmp[i*4+0] - tmp[i*4+3];
+        int d12 = tmp[i*4+1] - tmp[i*4+2];
 
         dct[i*4+0] =   s03 +   s12;
         dct[i*4+1] = 2*d03 +   d12;
@@ -184,17 +174,16 @@ static int sub4x4_dct_dc( uint8_t *pix1, uint8_t *pix2 )
 
 static void sub8x8_dct_dc( int16_t dct[4], uint8_t *pix1, uint8_t *pix2 )
 {
-    int d0, d1, d2, d3;
     dct[0] = sub4x4_dct_dc( &pix1[0], &pix2[0] );
     dct[1] = sub4x4_dct_dc( &pix1[4], &pix2[4] );
     dct[2] = sub4x4_dct_dc( &pix1[4*FENC_STRIDE+0], &pix2[4*FDEC_STRIDE+0] );
     dct[3] = sub4x4_dct_dc( &pix1[4*FENC_STRIDE+4], &pix2[4*FDEC_STRIDE+4] );
 
     /* 2x2 DC transform */
-    d0 = dct[0] + dct[1];
-    d1 = dct[2] + dct[3];
-    d2 = dct[0] - dct[1];
-    d3 = dct[2] - dct[3];
+    int d0 = dct[0] + dct[1];
+    int d1 = dct[2] + dct[3];
+    int d2 = dct[0] - dct[1];
+    int d3 = dct[2] - dct[3];
     dct[0] = d0 + d1;
     dct[2] = d2 + d3;
     dct[1] = d0 - d1;
@@ -205,15 +194,13 @@ static void add4x4_idct( uint8_t *p_dst, int16_t dct[16] )
 {
     int16_t d[16];
     int16_t tmp[16];
-    int x, y;
-    int i;
 
-    for( i = 0; i < 4; i++ )
+    for( int i = 0; i < 4; i++ )
     {
-        const int s02 =  dct[0*4+i]     +  dct[2*4+i];
-        const int d02 =  dct[0*4+i]     -  dct[2*4+i];
-        const int s13 =  dct[1*4+i]     + (dct[3*4+i]>>1);
-        const int d13 = (dct[1*4+i]>>1) -  dct[3*4+i];
+        int s02 =  dct[0*4+i]     +  dct[2*4+i];
+        int d02 =  dct[0*4+i]     -  dct[2*4+i];
+        int s13 =  dct[1*4+i]     + (dct[3*4+i]>>1);
+        int d13 = (dct[1*4+i]>>1) -  dct[3*4+i];
 
         tmp[i*4+0] = s02 + s13;
         tmp[i*4+1] = d02 + d13;
@@ -221,12 +208,12 @@ static void add4x4_idct( uint8_t *p_dst, int16_t dct[16] )
         tmp[i*4+3] = s02 - s13;
     }
 
-    for( i = 0; i < 4; i++ )
+    for( int i = 0; i < 4; i++ )
     {
-        const int s02 =  tmp[0*4+i]     +  tmp[2*4+i];
-        const int d02 =  tmp[0*4+i]     -  tmp[2*4+i];
-        const int s13 =  tmp[1*4+i]     + (tmp[3*4+i]>>1);
-        const int d13 = (tmp[1*4+i]>>1) -  tmp[3*4+i];
+        int s02 =  tmp[0*4+i]     +  tmp[2*4+i];
+        int d02 =  tmp[0*4+i]     -  tmp[2*4+i];
+        int s13 =  tmp[1*4+i]     + (tmp[3*4+i]>>1);
+        int d13 = (tmp[1*4+i]>>1) -  tmp[3*4+i];
 
         d[0*4+i] = ( s02 + s13 + 32 ) >> 6;
         d[1*4+i] = ( d02 + d13 + 32 ) >> 6;
@@ -235,9 +222,9 @@ static void add4x4_idct( uint8_t *p_dst, int16_t dct[16] )
     }
 
 
-    for( y = 0; y < 4; y++ )
+    for( int y = 0; y < 4; y++ )
     {
-        for( x = 0; x < 4; x++ )
+        for( int x = 0; x < 4; x++ )
             p_dst[x] = x264_clip_uint8( p_dst[x] + d[y*4+x] );
         p_dst += FDEC_STRIDE;
     }
@@ -264,22 +251,22 @@ static void add16x16_idct( uint8_t *p_dst, int16_t dct[16][16] )
  ****************************************************************************/
 
 #define DCT8_1D {\
-    const int s07 = SRC(0) + SRC(7);\
-    const int s16 = SRC(1) + SRC(6);\
-    const int s25 = SRC(2) + SRC(5);\
-    const int s34 = SRC(3) + SRC(4);\
-    const int a0 = s07 + s34;\
-    const int a1 = s16 + s25;\
-    const int a2 = s07 - s34;\
-    const int a3 = s16 - s25;\
-    const int d07 = SRC(0) - SRC(7);\
-    const int d16 = SRC(1) - SRC(6);\
-    const int d25 = SRC(2) - SRC(5);\
-    const int d34 = SRC(3) - SRC(4);\
-    const int a4 = d16 + d25 + (d07 + (d07>>1));\
-    const int a5 = d07 - d34 - (d25 + (d25>>1));\
-    const int a6 = d07 + d34 - (d16 + (d16>>1));\
-    const int a7 = d16 - d25 + (d34 + (d34>>1));\
+    int s07 = SRC(0) + SRC(7);\
+    int s16 = SRC(1) + SRC(6);\
+    int s25 = SRC(2) + SRC(5);\
+    int s34 = SRC(3) + SRC(4);\
+    int a0 = s07 + s34;\
+    int a1 = s16 + s25;\
+    int a2 = s07 - s34;\
+    int a3 = s16 - s25;\
+    int d07 = SRC(0) - SRC(7);\
+    int d16 = SRC(1) - SRC(6);\
+    int d25 = SRC(2) - SRC(5);\
+    int d34 = SRC(3) - SRC(4);\
+    int a4 = d16 + d25 + (d07 + (d07>>1));\
+    int a5 = d07 - d34 - (d25 + (d25>>1));\
+    int a6 = d07 + d34 - (d16 + (d16>>1));\
+    int a7 = d16 - d25 + (d34 + (d34>>1));\
     DST(0) =  a0 + a1     ;\
     DST(1) =  a4 + (a7>>2);\
     DST(2) =  a2 + (a3>>1);\
@@ -292,21 +279,20 @@ static void add16x16_idct( uint8_t *p_dst, int16_t dct[16][16] )
 
 static void sub8x8_dct8( int16_t dct[64], uint8_t *pix1, uint8_t *pix2 )
 {
-    int i;
     int16_t tmp[64];
 
     pixel_sub_wxh( tmp, 8, pix1, FENC_STRIDE, pix2, FDEC_STRIDE );
 
 #define SRC(x) tmp[x*8+i]
 #define DST(x) tmp[x*8+i]
-    for( i = 0; i < 8; i++ )
+    for( int i = 0; i < 8; i++ )
         DCT8_1D
 #undef SRC
 #undef DST
 
 #define SRC(x) tmp[i*8+x]
 #define DST(x) dct[x*8+i]
-    for( i = 0; i < 8; i++ )
+    for( int i = 0; i < 8; i++ )
         DCT8_1D
 #undef SRC
 #undef DST
@@ -321,22 +307,22 @@ static void sub16x16_dct8( int16_t dct[4][64], uint8_t *pix1, uint8_t *pix2 )
 }
 
 #define IDCT8_1D {\
-    const int a0 =  SRC(0) + SRC(4);\
-    const int a2 =  SRC(0) - SRC(4);\
-    const int a4 = (SRC(2)>>1) - SRC(6);\
-    const int a6 = (SRC(6)>>1) + SRC(2);\
-    const int b0 = a0 + a6;\
-    const int b2 = a2 + a4;\
-    const int b4 = a2 - a4;\
-    const int b6 = a0 - a6;\
-    const int a1 = -SRC(3) + SRC(5) - SRC(7) - (SRC(7)>>1);\
-    const int a3 =  SRC(1) + SRC(7) - SRC(3) - (SRC(3)>>1);\
-    const int a5 = -SRC(1) + SRC(7) + SRC(5) + (SRC(5)>>1);\
-    const int a7 =  SRC(3) + SRC(5) + SRC(1) + (SRC(1)>>1);\
-    const int b1 = (a7>>2) + a1;\
-    const int b3 =  a3 + (a5>>2);\
-    const int b5 = (a3>>2) - a5;\
-    const int b7 =  a7 - (a1>>2);\
+    int a0 =  SRC(0) + SRC(4);\
+    int a2 =  SRC(0) - SRC(4);\
+    int a4 = (SRC(2)>>1) - SRC(6);\
+    int a6 = (SRC(6)>>1) + SRC(2);\
+    int b0 = a0 + a6;\
+    int b2 = a2 + a4;\
+    int b4 = a2 - a4;\
+    int b6 = a0 - a6;\
+    int a1 = -SRC(3) + SRC(5) - SRC(7) - (SRC(7)>>1);\
+    int a3 =  SRC(1) + SRC(7) - SRC(3) - (SRC(3)>>1);\
+    int a5 = -SRC(1) + SRC(7) + SRC(5) + (SRC(5)>>1);\
+    int a7 =  SRC(3) + SRC(5) + SRC(1) + (SRC(1)>>1);\
+    int b1 = (a7>>2) + a1;\
+    int b3 =  a3 + (a5>>2);\
+    int b5 = (a3>>2) - a5;\
+    int b7 =  a7 - (a1>>2);\
     DST(0, b0 + b7);\
     DST(1, b2 + b5);\
     DST(2, b4 + b3);\
@@ -349,20 +335,18 @@ static void sub16x16_dct8( int16_t dct[4][64], uint8_t *pix1, uint8_t *pix2 )
 
 static void add8x8_idct8( uint8_t *dst, int16_t dct[64] )
 {
-    int i;
-
     dct[0] += 32; // rounding for the >>6 at the end
 
 #define SRC(x)     dct[x*8+i]
 #define DST(x,rhs) dct[x*8+i] = (rhs)
-    for( i = 0; i < 8; i++ )
+    for( int i = 0; i < 8; i++ )
         IDCT8_1D
 #undef SRC
 #undef DST
 
 #define SRC(x)     dct[i*8+x]
 #define DST(x,rhs) dst[i + x*FDEC_STRIDE] = x264_clip_uint8( dst[i + x*FDEC_STRIDE] + ((rhs) >> 6) );
-    for( i = 0; i < 8; i++ )
+    for( int i = 0; i < 8; i++ )
         IDCT8_1D
 #undef SRC
 #undef DST
@@ -378,9 +362,8 @@ static void add16x16_idct8( uint8_t *dst, int16_t dct[4][64] )
 
 static void inline add4x4_idct_dc( uint8_t *p_dst, int16_t dc )
 {
-    int i;
     dc = (dc + 32) >> 6;
-    for( i = 0; i < 4; i++, p_dst += FDEC_STRIDE )
+    for( int i = 0; i < 4; i++, p_dst += FDEC_STRIDE )
     {
         p_dst[0] = x264_clip_uint8( p_dst[0] + dc );
         p_dst[1] = x264_clip_uint8( p_dst[1] + dc );
@@ -399,8 +382,7 @@ static void add8x8_idct_dc( uint8_t *p_dst, int16_t dct[4] )
 
 static void add16x16_idct_dc( uint8_t *p_dst, int16_t dct[16] )
 {
-    int i;
-    for( i = 0; i < 4; i++, dct += 4, p_dst += 4*FDEC_STRIDE )
+    for( int i = 0; i < 4; i++, dct += 4, p_dst += 4*FDEC_STRIDE )
     {
         add4x4_idct_dc( &p_dst[ 0], dct[0] );
         add4x4_idct_dc( &p_dst[ 4], dct[1] );
@@ -537,12 +519,11 @@ void x264_dct_init( int cpu, x264_dct_function_t *dctf )
 
 void x264_dct_init_weights( void )
 {
-    int i, j;
-    for( j=0; j<2; j++ )
+    for( int j = 0; j < 2; j++ )
     {
-        for( i=0; i<16; i++ )
+        for( int i = 0; i < 16; i++ )
             x264_dct4_weight2_zigzag[j][i] = x264_dct4_weight2_tab[ x264_zigzag_scan4[j][i] ];
-        for( i=0; i<64; i++ )
+        for( int i = 0; i < 64; i++ )
             x264_dct8_weight2_zigzag[j][i] = x264_dct8_weight2_tab[ x264_zigzag_scan8[j][i] ];
     }
 }
@@ -707,11 +688,10 @@ static int zigzag_sub_8x8_field( int16_t level[64], const uint8_t *p_src, uint8_
 
 static void zigzag_interleave_8x8_cavlc( int16_t *dst, int16_t *src, uint8_t *nnz )
 {
-    int i,j;
-    for( i=0; i<4; i++ )
+    for( int i = 0; i < 4; i++ )
     {
         int nz = 0;
-        for( j=0; j<16; j++ )
+        for( int j = 0; j < 16; j++ )
         {
             nz |= src[i+j*4];
             dst[i*16+j] = src[i+j*4];