[Libva] [PATCH 3/3] HEVC: encoder_utils: Fixes for packed slice header generation.

Zhao, Yakui yakui.zhao at intel.com
Mon May 25 18:39:20 PDT 2015


On Thu, 2015-05-21 at 19:46 -0600, sreerenj.balachandran at intel.com
wrote:
> From: Sreerenj Balachandran <sreerenj.balachandran at intel.com>
> 
> -- Write no_output_of_prior_pics_flag to bitstream header for IRAP pictures
> -- The slice_temporal_mvp_enabled_flag should only presnt in non-IDR frames.
> -- Write collocated_from_l0_flag to bitstream header for B slice.
> -- The max_num_merge_cand should be 5 - MaxNumMergeCand

Good catch.

This looks good to me.


> ---
>  src/i965_encoder_utils.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/src/i965_encoder_utils.c b/src/i965_encoder_utils.c
> index 0b7df4c..28c705e 100644
> --- a/src/i965_encoder_utils.c
> +++ b/src/i965_encoder_utils.c
> @@ -968,7 +968,9 @@ static void slice_rbsp(avc_bitstream *bs,
>          avc_bitstream_put_ui(bs, 0, 1);
>      }
>  
> -    /* no_output_of_prior_pics_flag. This doesn't exist on TRAIL_N */
> +    /* no_output_of_prior_pics_flag */
> +    if (pic_param->pic_fields.bits.idr_pic_flag)
> +        avc_bitstream_put_ui(bs, 1, 1);
>  
>      /* slice_pic_parameter_set_id */
>      avc_bitstream_put_ue(bs, 0);
> @@ -1034,10 +1036,7 @@ static void slice_rbsp(avc_bitstream *bs,
>          }
>  
>          /* long term reference present flag. unpresent */
> -        if (seq_param->seq_fields.bits.sps_temporal_mvp_enabled_flag)
> -        {
> -            avc_bitstream_put_ui(bs, slice_param->slice_fields.bits.slice_temporal_mvp_enabled_flag, 1);
> -        }
> +
>          /* sample adaptive offset enabled flag */
>          if (seq_param->seq_fields.bits.sample_adaptive_offset_enabled_flag)
>          {
> @@ -1062,9 +1061,10 @@ static void slice_rbsp(avc_bitstream *bs,
>              /* slice_temporal_mvp_enabled_flag. */
>              if (slice_param->slice_fields.bits.slice_temporal_mvp_enabled_flag)
>              {
> +                if (slice_param->slice_type == HEVC_SLICE_B)
> +                    avc_bitstream_put_ui(bs, slice_param->slice_fields.bits.collocated_from_l0_flag, 1);
>                  /*
> -                * TBD: Add the collocated_l0_ref_flag and
> -                * collocated_ref_idx.
> +                * TBD: Add the collocated_ref_idx.
>                  */
>              }
>              if (((pic_param->pic_fields.bits.weighted_pred_flag) &&
> @@ -1076,7 +1076,7 @@ static void slice_rbsp(avc_bitstream *bs,
>                  * add the weighted table
>                  */
>              }
> -            avc_bitstream_put_ue(bs, slice_param->max_num_merge_cand);
> +            avc_bitstream_put_ue(bs, 5 - slice_param->max_num_merge_cand);
>          }
>          /* slice_qp_delta */
>          avc_bitstream_put_ue(bs, slice_param->slice_qp_delta);




More information about the Libva mailing list