OSDN Git Service

svct: Save the current slice type per layer
authorXiang, Haihao <haihao.xiang@intel.com>
Mon, 24 Oct 2016 04:49:40 +0000 (12:49 +0800)
committerSean V Kelley <seanvk@posteo.de>
Mon, 24 Oct 2016 22:46:08 +0000 (15:46 -0700)
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>
src/gen6_mfc.h
src/gen6_mfc_common.c

index e68c5c5..bc3465f 100644 (file)
@@ -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;
index a38c6d0..62fe8cf 100644 (file)
@@ -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