mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
avcodec/vaapi_encode_vp9: fix > 4k encode fail issue
This patch will fix following command: ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -i input.264 \ -vf 'scale_vaapi=w=7680:h=4096' -c:v vp9_vaapi output.ivf Max width of a vp9 tile is 4096. If the source frame > 4096, we need split to multiple tiles. Reviewed-by: Limin Wang <lance.lmwang@gmail.com> Signed-off-by: Zhang yuankun <yuankunx.zhang@intel.com> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
This commit is contained in:
parent
dd7c0bc4f9
commit
db901276c0
@ -31,6 +31,7 @@
|
||||
|
||||
#define VP9_MAX_QUANT 255
|
||||
|
||||
#define VP9_MAX_TILE_WIDTH 4096
|
||||
|
||||
typedef struct VAAPIEncodeVP9Picture {
|
||||
int slot;
|
||||
@ -82,10 +83,17 @@ static int vaapi_encode_vp9_init_picture_params(AVCodecContext *avctx,
|
||||
VAAPIEncodeVP9Picture *hpic = pic->priv_data;
|
||||
VAEncPictureParameterBufferVP9 *vpic = pic->codec_picture_params;
|
||||
int i;
|
||||
int num_tile_columns;
|
||||
|
||||
vpic->reconstructed_frame = pic->recon_surface;
|
||||
vpic->coded_buf = pic->output_buffer;
|
||||
|
||||
// Maximum width of a tile in units of superblocks is MAX_TILE_WIDTH_B64(64)
|
||||
// So the number of tile columns is related to the width of the picture.
|
||||
// We set the minimum possible number for num_tile_columns as default value.
|
||||
num_tile_columns = (vpic->frame_width_src + VP9_MAX_TILE_WIDTH - 1) / VP9_MAX_TILE_WIDTH;
|
||||
vpic->log2_tile_columns = num_tile_columns == 1 ? 0 : av_log2(num_tile_columns - 1) + 1;
|
||||
|
||||
switch (pic->type) {
|
||||
case PICTURE_TYPE_IDR:
|
||||
av_assert0(pic->nb_refs == 0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user