mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-24 12:09:55 +00:00
avfilter: Factorize the use of norm_qscale in pp7
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
aab74a38b8
commit
4df01d5d44
@ -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…
Reference in New Issue
Block a user