h264encoder: sps and pps settings
authorWind Yuan <feng.yuan@intel.com>
Fri, 15 Mar 2013 08:52:51 +0000 (16:52 +0800)
committerWind Yuan <feng.yuan@intel.com>
Fri, 22 Mar 2013 01:59:17 +0000 (09:59 +0800)
gst-libs/gst/vaapi/gstvaapiencoder_h264.c

index 6e6d92e..0ff96d7 100644 (file)
@@ -803,7 +803,7 @@ set_sequence_parameters(
 
   /*sequence field values*/
   seq_param->seq_fields.value = 0;
-  seq_param->seq_fields.bits.chroma_format_idc = 1;
+  //seq_param->seq_fields.bits.chroma_format_idc = 1;
   seq_param->seq_fields.bits.frame_mbs_only_flag = 1;
   seq_param->seq_fields.bits.mb_adaptive_frame_field_flag = FALSE;
   seq_param->seq_fields.bits.seq_scaling_matrix_present_flag = FALSE;
@@ -815,7 +815,6 @@ set_sequence_parameters(
   seq_param->seq_fields.bits.pic_order_cnt_type = 0;
   seq_param->seq_fields.bits.log2_max_pic_order_cnt_lsb_minus4 =
         seq_param->seq_fields.bits.log2_max_frame_num_minus4 + 1;
-  seq_param->seq_fields.bits.delta_pic_order_always_zero_flag = TRUE;
 
   priv->max_frame_num =
       1<<(seq_param->seq_fields.bits.log2_max_frame_num_minus4 + 4);
@@ -826,12 +825,15 @@ set_sequence_parameters(
   seq_param->bit_depth_chroma_minus8 = 0;
 
   /* not used if pic_order_cnt_type == 0 */
-  seq_param->num_ref_frames_in_pic_order_cnt_cycle = 0;
-  seq_param->offset_for_non_ref_pic = 0;
-  seq_param->offset_for_top_to_bottom_field = 0;
-  memset(seq_param->offset_for_ref_frame,
+  if (seq_param->seq_fields.bits.pic_order_cnt_type == 1) {
+    seq_param->seq_fields.bits.delta_pic_order_always_zero_flag = TRUE;
+    seq_param->num_ref_frames_in_pic_order_cnt_cycle = 0;
+    seq_param->offset_for_non_ref_pic = 0;
+    seq_param->offset_for_top_to_bottom_field = 0;
+    memset(seq_param->offset_for_ref_frame,
          0,
          sizeof(seq_param->offset_for_ref_frame));
+  }
 
   if (height_in_mbs*16 - ENCODER_HEIGHT(encoder)) {
     seq_param->frame_cropping_flag = 1;
@@ -957,7 +959,8 @@ set_picture_parameters(
   pic_param->pic_fields.bits.weighted_pred_flag = FALSE;
   pic_param->pic_fields.bits.weighted_bipred_idc = 0;
   pic_param->pic_fields.bits.constrained_intra_pred_flag = 0;
-  pic_param->pic_fields.bits.transform_8x8_mode_flag = TRUE; /* enable 8x8 */
+  pic_param->pic_fields.bits.transform_8x8_mode_flag =
+      (encoder->profile >= H264_PROFILE_HIGH); /* enable 8x8 */
   pic_param->pic_fields.bits.deblocking_filter_control_present_flag = TRUE; /* enable debloking */
   pic_param->pic_fields.bits.redundant_pic_cnt_present_flag = FALSE;
   /* bottom_field_pic_order_in_frame_present_flag */