]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/simple_idct.c
avcodec/flacenc: Remove always-true check
[ffmpeg] / libavcodec / simple_idct.c
index 78b29c0fe3e03d8ebee94a3966729f5770e66862..0ef167491a1c7f11301f54b77943a0d2a2609365 100644 (file)
@@ -175,7 +175,8 @@ static inline void idct4col_add(uint8_t *dest, ptrdiff_t line_size, const int16_
 #define R_SHIFT 11
 static inline void idct4row(int16_t *row)
 {
-    int c0, c1, c2, c3, a0, a1, a2, a3;
+    unsigned c0, c1, c2, c3;
+    int a0, a1, a2, a3;
 
     a0 = row[0];
     a1 = row[1];
@@ -236,7 +237,7 @@ void ff_simple_idct44_add(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
     }
 }
 
-void ff_prores_idct(int16_t *block, const int16_t *qmat)
+void ff_prores_idct_10(int16_t *block, const int16_t *qmat)
 {
     int i;
 
@@ -251,3 +252,19 @@ void ff_prores_idct(int16_t *block, const int16_t *qmat)
         idctSparseCol_extrashift_10(block + i);
     }
 }
+
+void ff_prores_idct_12(int16_t *block, const int16_t *qmat)
+{
+    int i;
+
+    for (i = 0; i < 64; i++)
+        block[i] *= qmat[i];
+
+    for (i = 0; i < 8; i++)
+        idctRowCondDC_int16_12bit(block + i*8, 0);
+
+    for (i = 0; i < 8; i++) {
+        block[i] += 8192;
+        idctSparseCol_int16_12bit(block + i);
+    }
+}