Abstract frames_left to AV1_PRIMARY
Moved frames_left from AV1_COMP to AV1_PRIMARY.
Change-Id: Id4a71e71f612915ba0a829fcc068b66669195537
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index 7f29e4b..7c19b1ef 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -2073,8 +2073,8 @@
priv->oxcf.use_highbitdepth =
(ctx->init_flags & AOM_CODEC_USE_HIGHBITDEPTH) ? 1 : 0;
- priv->ppi =
- av1_create_primary_compressor(&priv->pkt_list.head, *num_lap_buffers);
+ priv->ppi = av1_create_primary_compressor(&priv->pkt_list.head,
+ *num_lap_buffers, &priv->oxcf);
if (!priv->ppi) return AOM_CODEC_MEM_ERROR;
#if !CONFIG_REALTIME_ONLY
@@ -2453,7 +2453,7 @@
aom_codec_cx_pkt_t pkt;
// decrement frames_left counter
- cpi->frames_left = AOMMAX(0, cpi->frames_left - 1);
+ cpi->ppi->frames_left = AOMMAX(0, cpi->ppi->frames_left - 1);
if (ctx->oxcf.save_as_annexb) {
// B_PRIME (add TU size)
size_t tu_size = ctx->pending_cx_data_sz;
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 55706b1..fc96127 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -841,7 +841,8 @@
}
AV1_PRIMARY *av1_create_primary_compressor(
- struct aom_codec_pkt_list *pkt_list_head, int num_lap_buffers) {
+ struct aom_codec_pkt_list *pkt_list_head, int num_lap_buffers,
+ AV1EncoderConfig *oxcf) {
AV1_PRIMARY *volatile const ppi = aom_memalign(32, sizeof(AV1_PRIMARY));
if (!ppi) return NULL;
av1_zero(*ppi);
@@ -850,6 +851,8 @@
ppi->lap_enabled = num_lap_buffers > 0;
ppi->output_pkt_list = pkt_list_head;
ppi->b_calculate_psnr = CONFIG_INTERNAL_STATS;
+ ppi->frames_left = oxcf->input_cfg.limit;
+
return ppi;
}
@@ -904,8 +907,6 @@
cpi->oxcf.gf_cfg.lag_in_frames = lap_lag_in_frames;
}
- cpi->frames_left = cpi->oxcf.input_cfg.limit;
-
av1_rc_init(&cpi->oxcf, oxcf->pass, &cpi->rc);
// For two pass and lag_in_frames > 33 in LAP.
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index b7e2248..c0aa406 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -2116,6 +2116,11 @@
* Calculates PSNR on each frame when set to 1.
*/
int b_calculate_psnr;
+
+ /*!
+ * Number of frames left to be encoded, is 0 if limit is not set.
+ */
+ int frames_left;
} AV1_PRIMARY;
/*!
@@ -2702,11 +2707,6 @@
uint8_t *consec_zero_mv;
/*!
- * Number of frames left to be encoded, is 0 if limit is not set.
- */
- int frames_left;
-
- /*!
* Block size of first pass encoding
*/
BLOCK_SIZE fp_block_size;
@@ -2802,7 +2802,8 @@
STATS_BUFFER_CTX *stats_buf_context);
struct AV1_PRIMARY *av1_create_primary_compressor(
- struct aom_codec_pkt_list *pkt_list_head, int num_lap_buffers);
+ struct aom_codec_pkt_list *pkt_list_head, int num_lap_buffers,
+ AV1EncoderConfig *oxcf);
void av1_remove_compressor(AV1_COMP *cpi);
diff --git a/av1/encoder/pass2_strategy.c b/av1/encoder/pass2_strategy.c
index 6c97bf0..a2d17c1 100644
--- a/av1/encoder/pass2_strategy.c
+++ b/av1/encoder/pass2_strategy.c
@@ -2160,12 +2160,13 @@
(int)av1_lookahead_depth(cpi->ppi->lookahead, cpi->compressor_stage);
if (lookahead_size <
av1_lookahead_pop_sz(cpi->ppi->lookahead, cpi->compressor_stage)) {
- assert(IMPLIES(cpi->oxcf.pass != 0 && cpi->frames_left > 0,
- lookahead_size == cpi->frames_left));
+ assert(IMPLIES(cpi->oxcf.pass != 0 && cpi->ppi->frames_left > 0,
+ lookahead_size == cpi->ppi->frames_left));
cpi->rc.frames_to_key = AOMMIN(cpi->rc.frames_to_key, lookahead_size);
- } else if (cpi->frames_left > 0) {
+ } else if (cpi->ppi->frames_left > 0) {
// Correct frames to key based on limit
- cpi->rc.frames_to_key = AOMMIN(cpi->rc.frames_to_key, cpi->frames_left);
+ cpi->rc.frames_to_key =
+ AOMMIN(cpi->rc.frames_to_key, cpi->ppi->frames_left);
}
}