summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiang, Haihao <haihao.xiang@intel.com>2016-10-24 12:49:40 +0800
committerXiang, Haihao <haihao.xiang@intel.com>2016-10-31 10:00:08 +0800
commitb8d932033752a0a886568b127cc6c8be2c7e1a90 (patch)
tree4cd1f26552b1dafd2a62080aefc2ddd277ec051d
parentad5869ffafad3d569930706a74807e2bce7e44dd (diff)
svct: Save the current slice type per layer
Use the right previous slice type to estimate a QP for next frame in the same layer Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com> Reviewed-by: Sean V Kelley <seanvk@posteo.de> (cherry picked from commit 36003e66b46bdb740813c021fe61dcd5538f1e11)
-rw-r--r--src/gen6_mfc.h1
-rw-r--r--src/gen6_mfc_common.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/src/gen6_mfc.h b/src/gen6_mfc.h
index e68c5c5..bc3465f 100644
--- a/src/gen6_mfc.h
+++ b/src/gen6_mfc.h
@@ -234,6 +234,7 @@ struct gen6_mfc_context
double bits_per_frame[MAX_TEMPORAL_LAYERS];
double qpf_rounding_accumulator[MAX_TEMPORAL_LAYERS];
int bits_prev_frame[MAX_TEMPORAL_LAYERS];
+ int prev_slice_type[MAX_TEMPORAL_LAYERS];
double saved_bps;
double saved_fps;
diff --git a/src/gen6_mfc_common.c b/src/gen6_mfc_common.c
index a38c6d0..62fe8cf 100644
--- a/src/gen6_mfc_common.c
+++ b/src/gen6_mfc_common.c
@@ -228,6 +228,9 @@ int intel_mfc_brc_postpack(struct encode_state *encode_state,
mfc_context->brc.bits_prev_frame[curr_frame_layer_id] = frame_bits;
frame_bits = mfc_context->brc.bits_prev_frame[next_frame_layer_id];
+ mfc_context->brc.prev_slice_type[curr_frame_layer_id] = slicetype;
+ slicetype = mfc_context->brc.prev_slice_type[next_frame_layer_id];
+
if (encoder_context->layer.num_layers < 2 || encoder_context->layer.size_frame_layer_ids == 0)
factor = 1.0;
else