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
733 vpic->pic_fields.bits.idr_pic_flag = (pic->type == PICTURE_TYPE_IDR);733 vpic->pic_fields.bits.idr_pic_flag = (pic->type == PICTURE_TYPE_IDR);
734 vpic->pic_fields.bits.reference_pic_flag = (pic->type != PICTURE_TYPE_B);734 vpic->pic_fields.bits.reference_pic_flag = (pic->type != PICTURE_TYPE_B);
735 735
736 pic->nb_slices = 1;
737
738 return 0;736 return 0;
739}737}
740 738
@@ -758,8 +756,7 @@ static int vaapi_encode_h264_init_slice_params(AVCodecContext *avctx, · 17 unmodified lines
758 sh->nal_unit_header.nal_ref_idc = pic->type != PICTURE_TYPE_B;756 sh->nal_unit_header.nal_ref_idc = pic->type != PICTURE_TYPE_B;
759 }757 }
760 758
761 // Only one slice per frame.759 sh->first_mb_in_slice = slice->block_start;
762 sh->first_mb_in_slice = 0;
763 sh->slice_type = priv->slice_type;760 sh->slice_type = priv->slice_type;
764 761
765 sh->pic_parameter_set_id = pps->pic_parameter_set_id;762 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
780 sh->slice_qp_delta = priv->fixed_qp_idr - (pps->pic_init_qp_minus26 + 26);777 sh->slice_qp_delta = priv->fixed_qp_idr - (pps->pic_init_qp_minus26 + 26);
781 778
782 779
783 vslice->macroblock_address = sh->first_mb_in_slice;780 vslice->macroblock_address = slice->block_start;
784 vslice->num_macroblocks = priv->mb_width * priv->mb_height;781 vslice->num_macroblocks = slice->block_size;
785 782
786 vslice->macroblock_info = VA_INVALID_ID;783 vslice->macroblock_info = VA_INVALID_ID;
787 784
@@ -903,6 +900,8 @@ static const VAAPIEncodeProfile vaapi_encode_h264_profiles[] = { · 115 unmodified lines
903static const VAAPIEncodeType vaapi_encode_type_h264 = {900static const VAAPIEncodeType vaapi_encode_type_h264 = {
904 .profiles = vaapi_encode_h264_profiles,901 .profiles = vaapi_encode_h264_profiles,
905 902
903 .flags = FLAG_SLICE_CONTROL,
904
906 .configure = &vaapi_encode_h264_configure,905 .configure = &vaapi_encode_h264_configure,
907 906
908 .sequence_params_size = sizeof(VAEncSequenceParameterBufferH264),907 .sequence_params_size = sizeof(VAEncSequenceParameterBufferH264),
@@ -978,6 +977,8 @@ static av_cold int vaapi_encode_h264_init(AVCodecContext *avctx) · 69 unmodified lines
978 ctx->surface_width = FFALIGN(avctx->width, 16);977 ctx->surface_width = FFALIGN(avctx->width, 16);
979 ctx->surface_height = FFALIGN(avctx->height, 16);978 ctx->surface_height = FFALIGN(avctx->height, 16);
980 979
980 ctx->slice_block_height = ctx->slice_block_width = 16;
981
981 return ff_vaapi_encode_init(avctx);982 return ff_vaapi_encode_init(avctx);
982}983}
983 984

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