History

vaapi_encode_h264: Enable multiple-slice support

Mark Thompson committed 8 years ago

Commit a769e721 parent 29816e21 file · +7 −6Browse files

Unified · Split

libavcodec/vaapi_encode_h264.c+7−6
@@ -733,8 +733,6 @@ static int vaapi_encode_h264_init_picture_params(AVCodecContext *avctx, · 732 unmodified lines
733733 vpic->pic_fields.bits.idr_pic_flag = (pic->type == PICTURE_TYPE_IDR);
734734 vpic->pic_fields.bits.reference_pic_flag = (pic->type != PICTURE_TYPE_B);
735735
736− pic->nb_slices = 1;
737−
738736 return 0;
739737 }
740738
@@ -758,8 +756,7 @@ static int vaapi_encode_h264_init_slice_params(AVCodecContext *avctx, · 17 unmodified lines
758756 sh->nal_unit_header.nal_ref_idc = pic->type != PICTURE_TYPE_B;
759757 }
760758
761− // Only one slice per frame.
762− sh->first_mb_in_slice = 0;
759+ sh->first_mb_in_slice = slice->block_start;
763760 sh->slice_type = priv->slice_type;
764761
765762 sh->pic_parameter_set_id = pps->pic_parameter_set_id;
@@ -780,8 +777,8 @@ static int vaapi_encode_h264_init_slice_params(AVCodecContext *avctx, · 14 unmodified lines
780777 sh->slice_qp_delta = priv->fixed_qp_idr - (pps->pic_init_qp_minus26 + 26);
781778
782779
783− vslice->macroblock_address = sh->first_mb_in_slice;
784− vslice->num_macroblocks = priv->mb_width * priv->mb_height;
780+ vslice->macroblock_address = slice->block_start;
781+ vslice->num_macroblocks = slice->block_size;
785782
786783 vslice->macroblock_info = VA_INVALID_ID;
787784
@@ -903,6 +900,8 @@ static const VAAPIEncodeProfile vaapi_encode_h264_profiles[] = { · 115 unmodified lines
903900 static const VAAPIEncodeType vaapi_encode_type_h264 = {
904901 .profiles = vaapi_encode_h264_profiles,
905902
903+ .flags = FLAG_SLICE_CONTROL,
904+
906905 .configure = &vaapi_encode_h264_configure,
907906
908907 .sequence_params_size = sizeof(VAEncSequenceParameterBufferH264),
@@ -978,6 +977,8 @@ static av_cold int vaapi_encode_h264_init(AVCodecContext *avctx) · 69 unmodified lines
978977 ctx->surface_width = FFALIGN(avctx->width, 16);
979978 ctx->surface_height = FFALIGN(avctx->height, 16);
980979
980+ ctx->slice_block_height = ctx->slice_block_width = 16;
981+
981982 return ff_vaapi_encode_init(avctx);
982983 }
983984

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t