Browse code

lavfi: use ff_norm_qscale(), factorize

Stefano Sabatini authored on 2015/01/13 21:00:18
Showing 3 changed files
... ...
@@ -40,7 +40,6 @@
40 40
 #include "libavutil/opt.h"
41 41
 #include "libavutil/pixdesc.h"
42 42
 #include "internal.h"
43
-#include "libavcodec/avcodec.h" //for reference to FF_QSCALE_TYPE
44 43
 #include "vf_fspp.h"
45 44
 
46 45
 #define OFFSET(x) offsetof(FSPPContext, x)
... ...
@@ -80,17 +79,6 @@ static const short custom_threshold[64] = {
80 80
      20,  27,  26,  23,  20,  15,  11,   5
81 81
 };
82 82
 
83
-static inline int norm_qscale(int qscale, int type)
84
-{
85
-    switch (type) {
86
-    case FF_QSCALE_TYPE_MPEG1: return qscale;
87
-    case FF_QSCALE_TYPE_MPEG2: return qscale >> 1;
88
-    case FF_QSCALE_TYPE_H264:  return qscale >> 2;
89
-    case FF_QSCALE_TYPE_VP56:  return (63 - qscale + 2) >> 2;
90
-    }
91
-    return qscale;
92
-}
93
-
94 83
 //This func reads from 1 slice, 1 and clears 0 & 1
95 84
 static void store_slice_c(uint8_t *dst, int16_t *src,
96 85
                           ptrdiff_t dst_stride, ptrdiff_t src_stride,
... ...
@@ -218,7 +206,7 @@ static void filter(FSPPContext *p, uint8_t *dst, uint8_t *src,
218 218
                     if (t < 0) t = 0;                   //t always < width-2
219 219
 
220 220
                     t = qp_store[qy + (t >> qpsh)];
221
-                    t = norm_qscale(t, p->qscale_type);
221
+                    t = ff_norm_qscale(t, p->qscale_type);
222 222
 
223 223
                     if (t != p->prev_q) p->prev_q = t, p->mul_thrmat((int16_t *)(&p->threshold_mtx_noq[0]), (int16_t *)(&p->threshold_mtx[0]), t);
224 224
                     p->column_fidct((int16_t *)(&p->threshold_mtx[0]), block + x * 8, block3 + x * 8, 8); //yes, this is a HOTSPOT
... ...
@@ -229,18 +229,6 @@ static inline void add_block(uint16_t *dst, int linesize, const int16_t block[64
229 229
     }
230 230
 }
231 231
 
232
-// XXX: export the function?
233
-static inline int norm_qscale(int qscale, int type)
234
-{
235
-    switch (type) {
236
-    case FF_QSCALE_TYPE_MPEG1: return qscale;
237
-    case FF_QSCALE_TYPE_MPEG2: return qscale >> 1;
238
-    case FF_QSCALE_TYPE_H264:  return qscale >> 2;
239
-    case FF_QSCALE_TYPE_VP56:  return (63 - qscale + 2) >> 2;
240
-    }
241
-    return qscale;
242
-}
243
-
244 232
 static void filter(SPPContext *p, uint8_t *dst, uint8_t *src,
245 233
                    int dst_linesize, int src_linesize, int width, int height,
246 234
                    const uint8_t *qp_table, int qp_stride, int is_luma, int depth)
... ...
@@ -284,7 +272,7 @@ static void filter(SPPContext *p, uint8_t *dst, uint8_t *src,
284 284
             } else{
285 285
                 const int qps = 3 + is_luma;
286 286
                 qp = qp_table[(FFMIN(x, width - 1) >> qps) + (FFMIN(y, height - 1) >> qps) * qp_stride];
287
-                qp = FFMAX(1, norm_qscale(qp, p->qscale_type));
287
+                qp = FFMAX(1, ff_norm_qscale(qp, p->qscale_type));
288 288
             }
289 289
             for (i = 0; i < count; i++) {
290 290
                 const int x1 = x + offset[i + count - 1][0];
... ...
@@ -32,7 +32,6 @@
32 32
 #include "libavutil/opt.h"
33 33
 #include "libavutil/pixdesc.h"
34 34
 #include "internal.h"
35
-#include "libavcodec/avcodec.h"
36 35
 #include "avfilter.h"
37 36
 
38 37
 #define MAX_LEVEL 8 /* quality levels */
... ...
@@ -181,18 +180,6 @@ static void store_slice_c(uint8_t *dst, const uint16_t *src,
181 181
     }
182 182
 }
183 183
 
184
-static inline int norm_qscale(int qscale, int type)
185
-{
186
-    switch (type) {
187
-    case FF_QSCALE_TYPE_MPEG1: return qscale;
188
-    case FF_QSCALE_TYPE_MPEG2: return qscale >> 1;
189
-    case FF_QSCALE_TYPE_H264:  return qscale >> 2;
190
-    case FF_QSCALE_TYPE_VP56:  return (63 - qscale + 2) >> 2;
191
-    default: av_assert0(0);
192
-    }
193
-    return qscale;
194
-}
195
-
196 184
 static void filter(USPPContext *p, uint8_t *dst[3], uint8_t *src[3],
197 185
                    int dst_stride[3], int src_stride[3], int width,
198 186
                    int height, uint8_t *qp_store, int qp_stride)
... ...
@@ -237,7 +224,7 @@ static void filter(USPPContext *p, uint8_t *dst[3], uint8_t *src[3],
237 237
             for (x = 0; x < (width>>4); x++)
238 238
                 qpsum += qp_store[x + y * qp_stride];
239 239
         }
240
-        p->frame->quality = norm_qscale((qpsum + qpcount/2) / qpcount, p->qscale_type) * FF_QP2LAMBDA;
240
+        p->frame->quality = ff_norm_qscale((qpsum + qpcount/2) / qpcount, p->qscale_type) * FF_QP2LAMBDA;
241 241
     }
242 242
 //    init per MB qscale stuff FIXME
243 243
     p->frame->height = height;