ref: 6b7d221ca6be5eb27dccafec1f77b5d15d3d7aa6
parent: 3a210cae432b105b24f1a3c50c2698dfddb8d765
author: angiebird <angiebird@google.com>
date: Wed Oct 9 10:42:57 EDT 2019
Add FRAME_INFO into VP9_COMP Change-Id: Ibc804f2420113010013c04dc005b02dfebdfda8a
--- a/vp9/common/vp9_onyxc_int.h
+++ b/vp9/common/vp9_onyxc_int.h
@@ -254,6 +254,34 @@
int lf_row;
} VP9_COMMON;
+typedef struct {
+ int frame_width;
+ int frame_height;
+ int render_frame_width;
+ int render_frame_height;
+ int mi_rows;
+ int mi_cols;
+ int mb_rows;
+ int mb_cols;
+ int num_mbs;
+ vpx_bit_depth_t bit_depth;
+} FRAME_INFO;
+
+static INLINE void init_frame_info(FRAME_INFO *frame_info,
+ const VP9_COMMON *cm) {
+ frame_info->frame_width = cm->width;
+ frame_info->frame_height = cm->height;
+ frame_info->render_frame_width = cm->render_width;
+ frame_info->render_frame_height = cm->render_height;
+ frame_info->mi_cols = cm->mi_cols;
+ frame_info->mi_rows = cm->mi_rows;
+ frame_info->mb_cols = cm->mb_cols;
+ frame_info->mb_rows = cm->mb_rows;
+ frame_info->num_mbs = cm->MBs;
+ frame_info->bit_depth = cm->bit_depth;
+ // TODO(angiebird): Figure out how to get subsampling_x/y here
+}
+
static INLINE YV12_BUFFER_CONFIG *get_buf_frame(VP9_COMMON *cm, int index) {
if (index < 0 || index >= FRAME_BUFFERS) return NULL;
if (cm->error.error_code != VPX_CODEC_OK) return NULL;
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -2196,6 +2196,8 @@
cpi->force_update_segmentation = 0;
init_config(cpi, oxcf);
+ init_frame_info(&cpi->frame_info, cm);
+
vp9_rc_init(&cpi->oxcf, oxcf->pass, &cpi->rc);
cm->current_video_frame = 0;
--- a/vp9/encoder/vp9_encoder.h
+++ b/vp9/encoder/vp9_encoder.h
@@ -514,6 +514,7 @@
} KMEANS_DATA;
typedef struct VP9_COMP {
+ FRAME_INFO frame_info;
QUANTS quants;
ThreadData td;
MB_MODE_INFO_EXT *mbmi_ext_base;