Miscellaneous changes in mfqe and postproc modules
Adds logic to disable mfqe for the first frame after a configuration change such as change in resolution. Also adds some missing if CONFIG_POSTPROC macro checks. Change-Id: If29053dad50b676bd29189ab7f9fe250eb5d30b3
This commit is contained in:
parent
fd9df44a05
commit
66ba79f5fb
@ -41,9 +41,11 @@ void vp8_de_alloc_frame_buffers(VP8_COMMON *oci)
|
|||||||
vp8_yv12_de_alloc_frame_buffer(&oci->yv12_fb[i]);
|
vp8_yv12_de_alloc_frame_buffer(&oci->yv12_fb[i]);
|
||||||
|
|
||||||
vp8_yv12_de_alloc_frame_buffer(&oci->temp_scale_frame);
|
vp8_yv12_de_alloc_frame_buffer(&oci->temp_scale_frame);
|
||||||
|
#if CONFIG_POSTPROC
|
||||||
vp8_yv12_de_alloc_frame_buffer(&oci->post_proc_buffer);
|
vp8_yv12_de_alloc_frame_buffer(&oci->post_proc_buffer);
|
||||||
if (oci->post_proc_buffer_int_used)
|
if (oci->post_proc_buffer_int_used)
|
||||||
vp8_yv12_de_alloc_frame_buffer(&oci->post_proc_buffer_int);
|
vp8_yv12_de_alloc_frame_buffer(&oci->post_proc_buffer_int);
|
||||||
|
#endif
|
||||||
|
|
||||||
vpx_free(oci->above_context);
|
vpx_free(oci->above_context);
|
||||||
vpx_free(oci->mip);
|
vpx_free(oci->mip);
|
||||||
@ -96,6 +98,7 @@ int vp8_alloc_frame_buffers(VP8_COMMON *oci, int width, int height)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if CONFIG_POSTPROC
|
||||||
if (vp8_yv12_alloc_frame_buffer(&oci->post_proc_buffer, width, height, VP8BORDERINPIXELS) < 0)
|
if (vp8_yv12_alloc_frame_buffer(&oci->post_proc_buffer, width, height, VP8BORDERINPIXELS) < 0)
|
||||||
{
|
{
|
||||||
vp8_de_alloc_frame_buffers(oci);
|
vp8_de_alloc_frame_buffers(oci);
|
||||||
@ -104,6 +107,9 @@ int vp8_alloc_frame_buffers(VP8_COMMON *oci, int width, int height)
|
|||||||
|
|
||||||
oci->post_proc_buffer_int_used = 0;
|
oci->post_proc_buffer_int_used = 0;
|
||||||
|
|
||||||
|
vpx_memset(&oci->postproc_state, 0, sizeof(oci->postproc_state));
|
||||||
|
#endif
|
||||||
|
|
||||||
oci->mb_rows = height >> 4;
|
oci->mb_rows = height >> 4;
|
||||||
oci->mb_cols = width >> 4;
|
oci->mb_cols = width >> 4;
|
||||||
oci->MBs = oci->mb_rows * oci->mb_cols;
|
oci->MBs = oci->mb_rows * oci->mb_cols;
|
||||||
|
@ -92,11 +92,13 @@ typedef struct VP8Common
|
|||||||
int fb_idx_ref_cnt[NUM_YV12_BUFFERS];
|
int fb_idx_ref_cnt[NUM_YV12_BUFFERS];
|
||||||
int new_fb_idx, lst_fb_idx, gld_fb_idx, alt_fb_idx;
|
int new_fb_idx, lst_fb_idx, gld_fb_idx, alt_fb_idx;
|
||||||
|
|
||||||
YV12_BUFFER_CONFIG post_proc_buffer;
|
|
||||||
YV12_BUFFER_CONFIG temp_scale_frame;
|
YV12_BUFFER_CONFIG temp_scale_frame;
|
||||||
|
|
||||||
|
#if CONFIG_POSTPROC
|
||||||
|
YV12_BUFFER_CONFIG post_proc_buffer;
|
||||||
YV12_BUFFER_CONFIG post_proc_buffer_int;
|
YV12_BUFFER_CONFIG post_proc_buffer_int;
|
||||||
int post_proc_buffer_int_used;
|
int post_proc_buffer_int_used;
|
||||||
|
#endif
|
||||||
|
|
||||||
FRAME_TYPE last_frame_type; /* Save last frame's frame type for motion search. */
|
FRAME_TYPE last_frame_type; /* Save last frame's frame type for motion search. */
|
||||||
FRAME_TYPE frame_type;
|
FRAME_TYPE frame_type;
|
||||||
|
@ -693,7 +693,7 @@ static void constrain_line (int x0, int *x1, int y0, int *y1, int width, int hei
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if CONFIG_POSTPROC
|
||||||
int vp8_post_proc_frame(VP8_COMMON *oci, YV12_BUFFER_CONFIG *dest, vp8_ppflags_t *ppflags)
|
int vp8_post_proc_frame(VP8_COMMON *oci, YV12_BUFFER_CONFIG *dest, vp8_ppflags_t *ppflags)
|
||||||
{
|
{
|
||||||
int q = oci->filter_level * 10 / 6;
|
int q = oci->filter_level * 10 / 6;
|
||||||
@ -716,6 +716,7 @@ int vp8_post_proc_frame(VP8_COMMON *oci, YV12_BUFFER_CONFIG *dest, vp8_ppflags_t
|
|||||||
dest->y_height = oci->Height;
|
dest->y_height = oci->Height;
|
||||||
dest->uv_height = dest->y_height / 2;
|
dest->uv_height = dest->y_height / 2;
|
||||||
oci->postproc_state.last_base_qindex = oci->base_qindex;
|
oci->postproc_state.last_base_qindex = oci->base_qindex;
|
||||||
|
oci->postproc_state.last_frame_valid = 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -746,6 +747,7 @@ int vp8_post_proc_frame(VP8_COMMON *oci, YV12_BUFFER_CONFIG *dest, vp8_ppflags_t
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ((flags & VP8D_MFQE) &&
|
if ((flags & VP8D_MFQE) &&
|
||||||
|
oci->postproc_state.last_frame_valid &&
|
||||||
oci->current_video_frame >= 2 &&
|
oci->current_video_frame >= 2 &&
|
||||||
oci->base_qindex - oci->postproc_state.last_base_qindex >= 10)
|
oci->base_qindex - oci->postproc_state.last_base_qindex >= 10)
|
||||||
{
|
{
|
||||||
@ -785,6 +787,7 @@ int vp8_post_proc_frame(VP8_COMMON *oci, YV12_BUFFER_CONFIG *dest, vp8_ppflags_t
|
|||||||
vp8_yv12_copy_frame_ptr(oci->frame_to_show, &oci->post_proc_buffer);
|
vp8_yv12_copy_frame_ptr(oci->frame_to_show, &oci->post_proc_buffer);
|
||||||
oci->postproc_state.last_base_qindex = oci->base_qindex;
|
oci->postproc_state.last_base_qindex = oci->base_qindex;
|
||||||
}
|
}
|
||||||
|
oci->postproc_state.last_frame_valid = 1;
|
||||||
|
|
||||||
if (flags & VP8D_ADDNOISE)
|
if (flags & VP8D_ADDNOISE)
|
||||||
{
|
{
|
||||||
@ -1171,3 +1174,4 @@ int vp8_post_proc_frame(VP8_COMMON *oci, YV12_BUFFER_CONFIG *dest, vp8_ppflags_t
|
|||||||
dest->uv_height = dest->y_height / 2;
|
dest->uv_height = dest->y_height / 2;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
@ -19,6 +19,7 @@ struct postproc_state
|
|||||||
int last_noise;
|
int last_noise;
|
||||||
char noise[3072];
|
char noise[3072];
|
||||||
int last_base_qindex;
|
int last_base_qindex;
|
||||||
|
int last_frame_valid;
|
||||||
DECLARE_ALIGNED(16, char, blackclamp[16]);
|
DECLARE_ALIGNED(16, char, blackclamp[16]);
|
||||||
DECLARE_ALIGNED(16, char, whiteclamp[16]);
|
DECLARE_ALIGNED(16, char, whiteclamp[16]);
|
||||||
DECLARE_ALIGNED(16, char, bothclamp[16]);
|
DECLARE_ALIGNED(16, char, bothclamp[16]);
|
||||||
|
@ -5058,7 +5058,6 @@ int vp8_get_compressed_data(VP8_COMP *cpi, unsigned int *frame_flags, unsigned l
|
|||||||
double frame_psnr;
|
double frame_psnr;
|
||||||
YV12_BUFFER_CONFIG *orig = cpi->Source;
|
YV12_BUFFER_CONFIG *orig = cpi->Source;
|
||||||
YV12_BUFFER_CONFIG *recon = cpi->common.frame_to_show;
|
YV12_BUFFER_CONFIG *recon = cpi->common.frame_to_show;
|
||||||
YV12_BUFFER_CONFIG *pp = &cm->post_proc_buffer;
|
|
||||||
int y_samples = orig->y_height * orig->y_width ;
|
int y_samples = orig->y_height * orig->y_width ;
|
||||||
int uv_samples = orig->uv_height * orig->uv_width ;
|
int uv_samples = orig->uv_height * orig->uv_width ;
|
||||||
int t_samples = y_samples + 2 * uv_samples;
|
int t_samples = y_samples + 2 * uv_samples;
|
||||||
@ -5082,7 +5081,9 @@ int vp8_get_compressed_data(VP8_COMP *cpi, unsigned int *frame_flags, unsigned l
|
|||||||
cpi->total_v += vp8_mse2psnr(uv_samples, 255.0, ve);
|
cpi->total_v += vp8_mse2psnr(uv_samples, 255.0, ve);
|
||||||
cpi->total_sq_error += sq_error;
|
cpi->total_sq_error += sq_error;
|
||||||
cpi->total += frame_psnr;
|
cpi->total += frame_psnr;
|
||||||
|
#if CONFIG_POSTPROC
|
||||||
{
|
{
|
||||||
|
YV12_BUFFER_CONFIG *pp = &cm->post_proc_buffer;
|
||||||
double frame_psnr2, frame_ssim2 = 0;
|
double frame_psnr2, frame_ssim2 = 0;
|
||||||
double weight = 0;
|
double weight = 0;
|
||||||
|
|
||||||
@ -5133,6 +5134,7 @@ int vp8_get_compressed_data(VP8_COMP *cpi, unsigned int *frame_flags, unsigned l
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cpi->b_calculate_ssimg)
|
if (cpi->b_calculate_ssimg)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user