#define AOMINNERBORDERINPIXELS 96
#endif // CONFIG_EXT_PARTITION
#define AOM_INTERP_EXTEND 4
-#define AOM_ENC_BORDER_IN_PIXELS 160
-#define AOM_DEC_BORDER_IN_PIXELS 160
+
+// TODO(jingning): Use unified inter predictor for encoder and
+// decoder during the development process. Revisit the frame border
+// to improve the decoder performance.
+#define AOM_BORDER_IN_PIXELS 160
typedef struct yv12_buffer_config {
int y_width;
img->range = yv12->color_range;
img->bit_depth = 8;
img->w = yv12->y_stride;
- img->h = ALIGN_POWER_OF_TWO(yv12->y_height + 2 * AOM_ENC_BORDER_IN_PIXELS, 3);
+ img->h = ALIGN_POWER_OF_TWO(yv12->y_height + 2 * AOM_BORDER_IN_PIXELS, 3);
img->d_w = yv12->y_crop_width;
img->d_h = yv12->y_crop_height;
img->r_w = yv12->render_width;
static const qprofile_type nuq[QUANT_PROFILES][QUANT_RANGES][COEF_BANDS] = {
{ {
{ { 64, 128, 128 }, 8 }, // dc, band 0
- { { 64, 128, 128 }, 10 }, // band 1
+ { { 64, 128, 128 }, 10 }, // band 1
{ { 64, 128, 128 }, 12 }, // band 2
{ { 72, 128, 128 }, 14 }, // band 3
{ { 76, 128, 128 }, 16 }, // band 4
},
{
{ { 64, 128, 128 }, 4 }, // dc, band 0
- { { 64, 128, 128 }, 6 }, // band 1
- { { 64, 128, 128 }, 8 }, // band 2
+ { { 64, 128, 128 }, 6 }, // band 1
+ { { 64, 128, 128 }, 8 }, // band 2
{ { 64, 128, 128 }, 10 }, // band 3
{ { 72, 128, 128 }, 12 }, // band 4
{ { 80, 128, 128 }, 14 } // band 5
{
{ { 64, 128, 128 }, 4 }, // dc, band 0
{ { 64, 128, 128 }, 6 }, // band 1
- { { 64, 128, 128 }, 8 }, // band 2
+ { { 64, 128, 128 }, 8 }, // band 2
{ { 64, 128, 128 }, 10 }, // band 3
{ { 72, 128, 128 }, 12 }, // band 4
{ { 80, 128, 128 }, 14 } // band 5
{
{ { 64, 128, 128 }, 4 }, // dc, band 0
{ { 64, 128, 128 }, 6 }, // band 1
- { { 64, 128, 128 }, 8 }, // band 2
+ { { 64, 128, 128 }, 8 }, // band 2
{ { 64, 128, 128 }, 10 }, // band 3
{ { 72, 128, 128 }, 12 }, // band 4
{ { 80, 128, 128 }, 14 } // band 5
#if CONFIG_AOM_HIGHBITDEPTH
cm->use_highbitdepth,
#endif
- AOM_DEC_BORDER_IN_PIXELS, cm->byte_alignment, NULL, NULL, NULL) < 0)
+ AOM_BORDER_IN_PIXELS, cm->byte_alignment, NULL, NULL, NULL) < 0)
aom_internal_error(&cm->error, AOM_CODEC_MEM_ERROR,
"Failed to allocate tmp restoration buffer");
#if CONFIG_AOM_HIGHBITDEPTH
cm->use_highbitdepth,
#endif
- AOM_DEC_BORDER_IN_PIXELS, cm->byte_alignment,
+ AOM_BORDER_IN_PIXELS, cm->byte_alignment,
&pool->frame_bufs[cm->new_fb_idx].raw_frame_buffer, pool->get_fb_cb,
pool->cb_priv)) {
unlock_buffer_pool(pool);
#if CONFIG_AOM_HIGHBITDEPTH
cm->use_highbitdepth,
#endif
- AOM_DEC_BORDER_IN_PIXELS, cm->byte_alignment,
+ AOM_BORDER_IN_PIXELS, cm->byte_alignment,
&pool->frame_bufs[cm->new_fb_idx].raw_frame_buffer, pool->get_fb_cb,
pool->cb_priv)) {
unlock_buffer_pool(pool);
#if CONFIG_AOM_HIGHBITDEPTH
cm->use_highbitdepth,
#endif
- AOM_ENC_BORDER_IN_PIXELS, cm->byte_alignment,
- NULL, NULL, NULL))
+ AOM_BORDER_IN_PIXELS, cm->byte_alignment, NULL,
+ NULL, NULL))
aom_internal_error(&cm->error, AOM_CODEC_MEM_ERROR,
"Failed to allocate altref buffer");
}
#if CONFIG_AOM_HIGHBITDEPTH
cm->use_highbitdepth,
#endif
- AOM_ENC_BORDER_IN_PIXELS, cm->byte_alignment,
- NULL, NULL, NULL))
+ AOM_BORDER_IN_PIXELS, cm->byte_alignment, NULL,
+ NULL, NULL))
aom_internal_error(&cm->error, AOM_CODEC_MEM_ERROR,
"Failed to allocate last frame buffer");
#if CONFIG_AOM_HIGHBITDEPTH
cm->use_highbitdepth,
#endif
- AOM_ENC_BORDER_IN_PIXELS, cm->byte_alignment,
- NULL, NULL, NULL))
+ AOM_BORDER_IN_PIXELS, cm->byte_alignment, NULL,
+ NULL, NULL))
aom_internal_error(&cm->error, AOM_CODEC_MEM_ERROR,
"Failed to allocate last frame deblocked buffer");
#endif // CONFIG_LOOP_RESTORATION
#if CONFIG_AOM_HIGHBITDEPTH
cm->use_highbitdepth,
#endif
- AOM_ENC_BORDER_IN_PIXELS, cm->byte_alignment,
- NULL, NULL, NULL))
+ AOM_BORDER_IN_PIXELS, cm->byte_alignment, NULL,
+ NULL, NULL))
aom_internal_error(&cm->error, AOM_CODEC_MEM_ERROR,
"Failed to allocate scaled source buffer");
#if CONFIG_AOM_HIGHBITDEPTH
cm->use_highbitdepth,
#endif
- AOM_ENC_BORDER_IN_PIXELS, cm->byte_alignment,
- NULL, NULL, NULL))
+ AOM_BORDER_IN_PIXELS, cm->byte_alignment, NULL,
+ NULL, NULL))
aom_internal_error(&cm->error, AOM_CODEC_MEM_ERROR,
"Failed to allocate scaled last source buffer");
}
#if CONFIG_AOM_HIGHBITDEPTH
cm->use_highbitdepth,
#endif
- (AOM_ENC_BORDER_IN_PIXELS << 3),
+ (AOM_BORDER_IN_PIXELS << 3),
cm->byte_alignment, NULL, NULL, NULL))
aom_internal_error(&cm->error, AOM_CODEC_MEM_ERROR,
"Failed to allocate up-sampled frame buffer");
new_fb_ptr = &pool->frame_bufs[new_fb];
if (force_scaling || new_fb_ptr->buf.y_crop_width != cm->width ||
new_fb_ptr->buf.y_crop_height != cm->height) {
- if (aom_realloc_frame_buffer(&new_fb_ptr->buf, cm->width, cm->height,
- cm->subsampling_x, cm->subsampling_y,
- cm->use_highbitdepth,
- AOM_ENC_BORDER_IN_PIXELS,
- cm->byte_alignment, NULL, NULL, NULL))
+ if (aom_realloc_frame_buffer(
+ &new_fb_ptr->buf, cm->width, cm->height, cm->subsampling_x,
+ cm->subsampling_y, cm->use_highbitdepth, AOM_BORDER_IN_PIXELS,
+ cm->byte_alignment, NULL, NULL, NULL))
aom_internal_error(&cm->error, AOM_CODEC_MEM_ERROR,
"Failed to allocate frame buffer");
scale_and_extend_frame(ref, &new_fb_ptr->buf, MAX_MB_PLANE,
new_fb_ptr->buf.y_crop_height != cm->height) {
if (aom_realloc_frame_buffer(&new_fb_ptr->buf, cm->width, cm->height,
cm->subsampling_x, cm->subsampling_y,
- AOM_ENC_BORDER_IN_PIXELS,
- cm->byte_alignment, NULL, NULL, NULL))
+ AOM_BORDER_IN_PIXELS, cm->byte_alignment,
+ NULL, NULL, NULL))
aom_internal_error(&cm->error, AOM_CODEC_MEM_ERROR,
"Failed to allocate frame buffer");
scale_and_extend_frame(ref, &new_fb_ptr->buf, MAX_MB_PLANE);
#if CONFIG_AOM_HIGHBITDEPTH
cm->use_highbitdepth,
#endif
- (AOM_ENC_BORDER_IN_PIXELS << 3),
+ (AOM_BORDER_IN_PIXELS << 3),
cm->byte_alignment, NULL, NULL, NULL))
aom_internal_error(&cm->error, AOM_CODEC_MEM_ERROR,
"Failed to allocate up-sampled frame buffer");
#if CONFIG_AOM_HIGHBITDEPTH
cm->use_highbitdepth,
#endif
- AOM_ENC_BORDER_IN_PIXELS, cm->byte_alignment,
- NULL, NULL, NULL))
+ AOM_BORDER_IN_PIXELS, cm->byte_alignment, NULL,
+ NULL, NULL))
aom_internal_error(&cm->error, AOM_CODEC_MEM_ERROR,
"Failed to allocate frame buffer");
ctx->buf = calloc(depth, sizeof(*ctx->buf));
if (!ctx->buf) goto bail;
for (i = 0; i < depth; i++)
- if (aom_alloc_frame_buffer(
- &ctx->buf[i].img, width, height, subsampling_x, subsampling_y,
+ if (aom_alloc_frame_buffer(&ctx->buf[i].img, width, height, subsampling_x,
+ subsampling_y,
#if CONFIG_AOM_HIGHBITDEPTH
- use_highbitdepth,
+ use_highbitdepth,
#endif
- AOM_ENC_BORDER_IN_PIXELS, legacy_byte_alignment))
+ AOM_BORDER_IN_PIXELS, legacy_byte_alignment))
goto bail;
}
return ctx;
#if CONFIG_AOM_HIGHBITDEPTH
use_highbitdepth,
#endif
- AOM_ENC_BORDER_IN_PIXELS, 0))
+ AOM_BORDER_IN_PIXELS, 0))
return 1;
aom_free_frame_buffer(&buf->img);
buf->img = new_img;
(mode_mv[NEARMV][ref_frame].as_int == INVALID_MV)));
}
-#define LEFT_TOP_MARGIN ((AOM_ENC_BORDER_IN_PIXELS - AOM_INTERP_EXTEND) << 3)
-#define RIGHT_BOTTOM_MARGIN \
- ((AOM_ENC_BORDER_IN_PIXELS - AOM_INTERP_EXTEND) << 3)
+#define LEFT_TOP_MARGIN ((AOM_BORDER_IN_PIXELS - AOM_INTERP_EXTEND) << 3)
+#define RIGHT_BOTTOM_MARGIN ((AOM_BORDER_IN_PIXELS - AOM_INTERP_EXTEND) << 3)
// TODO(jingning): this mv clamping function should be block size dependent.
static INLINE void clamp_mv2(MV *mv, const MACROBLOCKD *xd) {