Merge "Seperate the border size for encoder and decoder."
This commit is contained in:
commit
7f30a6f877
@ -85,7 +85,7 @@ int vp9_resize_frame_buffers(VP9_COMMON *cm, int width, int height) {
|
||||
int mi_size;
|
||||
|
||||
if (vp9_realloc_frame_buffer(&cm->post_proc_buffer, width, height, ss_x, ss_y,
|
||||
VP9BORDERINPIXELS, NULL, NULL, NULL) < 0)
|
||||
VP9_DEC_BORDER_IN_PIXELS, NULL, NULL, NULL) < 0)
|
||||
goto fail;
|
||||
|
||||
set_mb_mi(cm, aligned_width, aligned_height);
|
||||
@ -154,7 +154,7 @@ int vp9_alloc_frame_buffers(VP9_COMMON *cm, int width, int height) {
|
||||
for (i = 0; i < cm->fb_count; i++) {
|
||||
cm->fb_idx_ref_cnt[i] = 0;
|
||||
if (vp9_alloc_frame_buffer(&cm->yv12_fb[i], width, height, ss_x, ss_y,
|
||||
VP9BORDERINPIXELS) < 0)
|
||||
VP9_ENC_BORDER_IN_PIXELS) < 0)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -167,7 +167,7 @@ int vp9_alloc_frame_buffers(VP9_COMMON *cm, int width, int height) {
|
||||
}
|
||||
|
||||
if (vp9_alloc_frame_buffer(&cm->post_proc_buffer, width, height, ss_x, ss_y,
|
||||
VP9BORDERINPIXELS) < 0)
|
||||
VP9_ENC_BORDER_IN_PIXELS) < 0)
|
||||
goto fail;
|
||||
|
||||
set_mb_mi(cm, aligned_width, aligned_height);
|
||||
|
@ -32,8 +32,10 @@ static INLINE void vp9_find_mv_refs(const VP9_COMMON *cm, const MACROBLOCKD *xd,
|
||||
mv_ref_list, -1, mi_row, mi_col);
|
||||
}
|
||||
|
||||
#define LEFT_TOP_MARGIN ((VP9BORDERINPIXELS - VP9_INTERP_EXTEND) << 3)
|
||||
#define RIGHT_BOTTOM_MARGIN ((VP9BORDERINPIXELS - VP9_INTERP_EXTEND) << 3)
|
||||
#define LEFT_TOP_MARGIN ((VP9_ENC_BORDER_IN_PIXELS \
|
||||
- VP9_INTERP_EXTEND) << 3)
|
||||
#define RIGHT_BOTTOM_MARGIN ((VP9_ENC_BORDER_IN_PIXELS \
|
||||
- VP9_INTERP_EXTEND) << 3)
|
||||
|
||||
// check a list of motion vectors by sad score using a number rows of pixels
|
||||
// above and a number cols of pixels in the left to select the one with best
|
||||
|
@ -704,7 +704,7 @@ static void apply_frame_size(VP9D_COMP *pbi, int width, int height) {
|
||||
if (vp9_realloc_frame_buffer(get_frame_new_buffer(cm),
|
||||
cm->width, cm->height,
|
||||
cm->subsampling_x, cm->subsampling_y,
|
||||
VP9BORDERINPIXELS, ext_fb,
|
||||
VP9_DEC_BORDER_IN_PIXELS, ext_fb,
|
||||
cm->realloc_fb_cb, cm->user_priv)) {
|
||||
vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
|
||||
"Failed to allocate external frame buffer");
|
||||
@ -712,7 +712,7 @@ static void apply_frame_size(VP9D_COMP *pbi, int width, int height) {
|
||||
} else {
|
||||
vp9_realloc_frame_buffer(get_frame_new_buffer(cm), cm->width, cm->height,
|
||||
cm->subsampling_x, cm->subsampling_y,
|
||||
VP9BORDERINPIXELS, NULL, NULL, NULL);
|
||||
VP9_DEC_BORDER_IN_PIXELS, NULL, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -73,7 +73,7 @@ struct lookahead_ctx * vp9_lookahead_init(unsigned int width,
|
||||
for (i = 0; i < depth; i++)
|
||||
if (vp9_alloc_frame_buffer(&ctx->buf[i].img,
|
||||
width, height, subsampling_x, subsampling_y,
|
||||
VP9BORDERINPIXELS))
|
||||
VP9_ENC_BORDER_IN_PIXELS))
|
||||
goto bail;
|
||||
}
|
||||
return ctx;
|
||||
|
@ -968,7 +968,7 @@ static void alloc_raw_frame_buffers(VP9_COMP *cpi) {
|
||||
if (vp9_realloc_frame_buffer(&cpi->alt_ref_buffer,
|
||||
cpi->oxcf.width, cpi->oxcf.height,
|
||||
cm->subsampling_x, cm->subsampling_y,
|
||||
VP9BORDERINPIXELS, NULL, NULL, NULL))
|
||||
VP9_ENC_BORDER_IN_PIXELS, NULL, NULL, NULL))
|
||||
vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
|
||||
"Failed to allocate altref buffer");
|
||||
}
|
||||
@ -983,14 +983,14 @@ void vp9_alloc_compressor_data(VP9_COMP *cpi) {
|
||||
if (vp9_alloc_frame_buffer(&cpi->last_frame_uf,
|
||||
cm->width, cm->height,
|
||||
cm->subsampling_x, cm->subsampling_y,
|
||||
VP9BORDERINPIXELS))
|
||||
VP9_ENC_BORDER_IN_PIXELS))
|
||||
vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
|
||||
"Failed to allocate last frame buffer");
|
||||
|
||||
if (vp9_alloc_frame_buffer(&cpi->scaled_source,
|
||||
cm->width, cm->height,
|
||||
cm->subsampling_x, cm->subsampling_y,
|
||||
VP9BORDERINPIXELS))
|
||||
VP9_ENC_BORDER_IN_PIXELS))
|
||||
vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
|
||||
"Failed to allocate scaled source buffer");
|
||||
|
||||
@ -1036,14 +1036,14 @@ static void update_frame_size(VP9_COMP *cpi) {
|
||||
if (vp9_realloc_frame_buffer(&cpi->last_frame_uf,
|
||||
cm->width, cm->height,
|
||||
cm->subsampling_x, cm->subsampling_y,
|
||||
VP9BORDERINPIXELS, NULL, NULL, NULL))
|
||||
VP9_ENC_BORDER_IN_PIXELS, NULL, NULL, NULL))
|
||||
vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
|
||||
"Failed to reallocate last frame buffer");
|
||||
|
||||
if (vp9_realloc_frame_buffer(&cpi->scaled_source,
|
||||
cm->width, cm->height,
|
||||
cm->subsampling_x, cm->subsampling_y,
|
||||
VP9BORDERINPIXELS, NULL, NULL, NULL))
|
||||
VP9_ENC_BORDER_IN_PIXELS, NULL, NULL, NULL))
|
||||
vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR,
|
||||
"Failed to reallocate scaled source buffer");
|
||||
|
||||
@ -2552,7 +2552,7 @@ static void scale_references(VP9_COMP *cpi) {
|
||||
vp9_realloc_frame_buffer(&cm->yv12_fb[new_fb],
|
||||
cm->width, cm->height,
|
||||
cm->subsampling_x, cm->subsampling_y,
|
||||
VP9BORDERINPIXELS, NULL, NULL, NULL);
|
||||
VP9_ENC_BORDER_IN_PIXELS, NULL, NULL, NULL);
|
||||
scale_and_extend_frame(ref, &cm->yv12_fb[new_fb]);
|
||||
cpi->scaled_ref_idx[ref_frame - 1] = new_fb;
|
||||
} else {
|
||||
@ -3545,7 +3545,7 @@ int vp9_get_compressed_data(VP9_PTR ptr, unsigned int *frame_flags,
|
||||
vp9_realloc_frame_buffer(get_frame_new_buffer(cm),
|
||||
cm->width, cm->height,
|
||||
cm->subsampling_x, cm->subsampling_y,
|
||||
VP9BORDERINPIXELS, NULL, NULL, NULL);
|
||||
VP9_ENC_BORDER_IN_PIXELS, NULL, NULL, NULL);
|
||||
|
||||
|
||||
for (ref_frame = LAST_FRAME; ref_frame <= ALTREF_FRAME; ++ref_frame) {
|
||||
|
@ -227,7 +227,7 @@ static void temporal_filter_iterate_c(VP9_COMP *cpi,
|
||||
for (mb_row = 0; mb_row < mb_rows; mb_row++) {
|
||||
#if ALT_REF_MC_ENABLED
|
||||
// Source frames are extended to 16 pixels. This is different than
|
||||
// L/A/G reference frames that have a border of 32 (VP9BORDERINPIXELS)
|
||||
// L/A/G reference frames that have a border of 32 (VP9ENCBORDERINPIXELS)
|
||||
// A 6/8 tap filter is used for motion search. This requires 2 pixels
|
||||
// before and 3 pixels after. So the largest Y mv on a border would
|
||||
// then be 16 - VP9_INTERP_EXTEND. The UV blocks are half the size of the
|
||||
|
@ -29,7 +29,7 @@ static void yuvconfig2image(vpx_image_t *img, const YV12_BUFFER_CONFIG *yv12,
|
||||
img->fmt = VPX_IMG_FMT_I420;
|
||||
}
|
||||
img->w = yv12->y_stride;
|
||||
img->h = ALIGN_POWER_OF_TWO(yv12->y_height + 2 * VP9BORDERINPIXELS, 3);
|
||||
img->h = ALIGN_POWER_OF_TWO(yv12->y_height + 2 * VP9_ENC_BORDER_IN_PIXELS, 3);
|
||||
img->d_w = yv12->y_crop_width;
|
||||
img->d_h = yv12->y_crop_height;
|
||||
img->x_chroma_shift = yv12->uv_width < yv12->y_width;
|
||||
|
@ -18,10 +18,11 @@ extern "C" {
|
||||
#include "vpx/vpx_external_frame_buffer.h"
|
||||
#include "vpx/vpx_integer.h"
|
||||
|
||||
#define VP8BORDERINPIXELS 32
|
||||
#define VP9INNERBORDERINPIXELS 96
|
||||
#define VP9BORDERINPIXELS 160
|
||||
#define VP9_INTERP_EXTEND 4
|
||||
#define VP8BORDERINPIXELS 32
|
||||
#define VP9INNERBORDERINPIXELS 96
|
||||
#define VP9_INTERP_EXTEND 4
|
||||
#define VP9_ENC_BORDER_IN_PIXELS 160
|
||||
#define VP9_DEC_BORDER_IN_PIXELS 32
|
||||
|
||||
typedef struct yv12_buffer_config {
|
||||
int y_width;
|
||||
|
Loading…
x
Reference in New Issue
Block a user