avfilter: Factorize the use of norm_qscale in pp7

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
pull/101/merge
Arwa Arif 10 years ago committed by Michael Niedermayer
parent aab74a38b8
commit 4df01d5d44
  1. 15
      libavfilter/internal.h
  2. 14
      libavfilter/vf_pp7.c

@ -31,6 +31,7 @@
#include "thread.h"
#include "version.h"
#include "video.h"
#include "libavcodec/avcodec.h"
#define POOL_SIZE 32
typedef struct AVFilterPool {
@ -374,4 +375,18 @@ AVFilterContext *ff_filter_alloc(const AVFilter *filter, const char *inst_name);
*/
void ff_filter_graph_remove_filter(AVFilterGraph *graph, AVFilterContext *filter);
/**
* Normalize the qscale factor
*/
static inline int ff_norm_qscale(int qscale, int type)
{
switch (type) {
case FF_QSCALE_TYPE_MPEG1: return qscale;
case FF_QSCALE_TYPE_MPEG2: return qscale >> 1;
case FF_QSCALE_TYPE_H264: return qscale >> 2;
case FF_QSCALE_TYPE_VP56: return (63 - qscale + 2) >> 2;
}
return qscale;
}
#endif /* AVFILTER_INTERNAL_H */

@ -33,7 +33,6 @@
#include "libavutil/pixdesc.h"
#include "internal.h"
#include "vf_pp7.h"
#include "libavcodec/avcodec.h"
enum mode {
MODE_HARD,
@ -87,17 +86,6 @@ static const int thres[16] = {
N / (SN2 * SN0), N / (SN2 * SN2), N / (SN2 * SN0), N / (SN2 * SN2),
};
static inline int norm_qscale(int qscale, int type)
{
switch (type) {
case FF_QSCALE_TYPE_MPEG1: return qscale;
case FF_QSCALE_TYPE_MPEG2: return qscale >> 1;
case FF_QSCALE_TYPE_H264: return qscale >> 2;
case FF_QSCALE_TYPE_VP56: return (63 - qscale + 2) >> 2;
}
return qscale;
}
static void init_thres2(PP7Context *p)
{
int qp, i;
@ -259,7 +247,7 @@ static void filter(PP7Context *p, uint8_t *dst, uint8_t *src,
qp = p->qp;
else {
qp = qp_store[ (FFMIN(x, width - 1) >> qps) + (FFMIN(y, height - 1) >> qps) * qp_stride];
qp = norm_qscale(qp, p->qscale_type);
qp = ff_norm_qscale(qp, p->qscale_type);
}
for (; x < end; x++) {
const int index = x + y * stride + (8 - 3) * (1 + stride) + 8; //FIXME silly offset

Loading…
Cancel
Save