3 |
* XVID MPEG-4 VIDEO CODEC |
* XVID MPEG-4 VIDEO CODEC |
4 |
* - Postprocessing header - |
* - Postprocessing header - |
5 |
* |
* |
6 |
* Copyright(C) 2003 Michael Militzer <isibaar@xvid.org> |
* Copyright(C) 2003-2010 Michael Militzer <isibaar@xvid.org> |
7 |
* |
* |
8 |
* This program is free software ; you can redistribute it and/or modify |
* This program is free software ; you can redistribute it and/or modify |
9 |
* it under the terms of the GNU General Public License as published by |
* it under the terms of the GNU General Public License as published by |
38 |
#define MAX_SHIFT 1024 |
#define MAX_SHIFT 1024 |
39 |
#define MAX_RES (MAX_NOISE - MAX_SHIFT) |
#define MAX_RES (MAX_NOISE - MAX_SHIFT) |
40 |
|
|
41 |
|
#define DERING_STRENGTH 2 |
42 |
|
|
43 |
typedef struct { |
typedef struct { |
44 |
int8_t xvid_thresh_tbl[511]; |
int8_t xvid_thresh_tbl[511]; |
45 |
uint8_t xvid_abs_tbl[511]; |
uint8_t xvid_abs_tbl[511]; |
49 |
int prev_quant; |
int prev_quant; |
50 |
} XVID_POSTPROC; |
} XVID_POSTPROC; |
51 |
|
|
52 |
|
typedef struct |
53 |
|
{ |
54 |
|
pthread_t handle; /* thread's handle */ |
55 |
|
|
56 |
|
XVID_POSTPROC *tbls; |
57 |
|
IMAGE * img; |
58 |
|
const MACROBLOCK * mbs; |
59 |
|
|
60 |
|
int stride; |
61 |
|
int start_x; |
62 |
|
int stop_x; |
63 |
|
int start_y; |
64 |
|
int stop_y; |
65 |
|
int mb_stride; |
66 |
|
int flags; |
67 |
|
} SMPDeblock; |
68 |
|
|
69 |
void |
void |
70 |
image_postproc(XVID_POSTPROC *tbls, IMAGE * img, int edged_width, |
image_postproc(XVID_POSTPROC *tbls, IMAGE * img, int edged_width, |
71 |
const MACROBLOCK * mbs, int mb_width, int mb_height, int mb_stride, |
const MACROBLOCK * mbs, int mb_width, int mb_height, int mb_stride, |
72 |
int flags, int frame_num, int bvop); |
int flags, int brightness, int frame_num, int bvop, int threads); |
73 |
|
|
74 |
void deblock8x8_h(XVID_POSTPROC *tbls, uint8_t *img, int stride, int quant); |
void deblock8x8_h(XVID_POSTPROC *tbls, uint8_t *img, int stride, int quant, int dering); |
75 |
void deblock8x8_v(XVID_POSTPROC *tbls, uint8_t *img, int stride, int quant); |
void deblock8x8_v(XVID_POSTPROC *tbls, uint8_t *img, int stride, int quant, int dering); |
76 |
|
|
77 |
void init_postproc(XVID_POSTPROC *tbls); |
void init_postproc(XVID_POSTPROC *tbls); |
78 |
void init_noise(XVID_POSTPROC *tbls); |
void init_noise(XVID_POSTPROC *tbls); |
80 |
|
|
81 |
void add_noise(XVID_POSTPROC * tbls, uint8_t *dst, uint8_t *src, int stride, int width, int height, int shiftptr, int quant); |
void add_noise(XVID_POSTPROC * tbls, uint8_t *dst, uint8_t *src, int stride, int width, int height, int shiftptr, int quant); |
82 |
|
|
83 |
|
|
84 |
|
typedef void (IMAGEBRIGHTNESS) (uint8_t * dst, |
85 |
|
int stride, |
86 |
|
int width, |
87 |
|
int height, |
88 |
|
int offset); |
89 |
|
typedef IMAGEBRIGHTNESS *IMAGEBRIGHTNESS_PTR; |
90 |
|
|
91 |
|
extern IMAGEBRIGHTNESS_PTR image_brightness; |
92 |
|
|
93 |
|
IMAGEBRIGHTNESS image_brightness_c; |
94 |
|
IMAGEBRIGHTNESS image_brightness_mmx; |
95 |
|
IMAGEBRIGHTNESS image_brightness_sse2; |
96 |
|
|
97 |
#endif |
#endif |