lavc/amfenc: Add hardware config metadata

Without this metadata section the ffmpeg utility thinks that the AMF encoder
does not support input from D3D11 and DXVA2 hardware surfaces, causing
hardware pipelines to fail.

Fixes #8953.
This commit is contained in:
OvchinnikovDmitrii 2020-10-15 03:16:21 +03:00 committed by Mark Thompson
parent cd322794ee
commit 2fb764e1f3
4 changed files with 17 additions and 0 deletions

View File

@ -782,3 +782,15 @@ int ff_amf_receive_packet(AVCodecContext *avctx, AVPacket *avpkt)
}
return ret;
}
const AVCodecHWConfigInternal *const ff_amfenc_hw_configs[] = {
#if CONFIG_D3D11VA
HW_CONFIG_ENCODER_FRAMES(D3D11, D3D11VA),
HW_CONFIG_ENCODER_DEVICE(NONE, D3D11VA),
#endif
#if CONFIG_DXVA2
HW_CONFIG_ENCODER_FRAMES(DXVA2_VLD, DXVA2),
HW_CONFIG_ENCODER_DEVICE(NONE, DXVA2),
#endif
NULL,
};

View File

@ -27,6 +27,7 @@
#include "libavutil/fifo.h"
#include "avcodec.h"
#include "hwconfig.h"
/**
@ -117,6 +118,8 @@ typedef struct AmfContext {
int tier;
} AmfContext;
extern const AVCodecHWConfigInternal *const ff_amfenc_hw_configs[];
/**
* Common encoder initization function
*/

View File

@ -392,4 +392,5 @@ AVCodec ff_h264_amf_encoder = {
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.pix_fmts = ff_amf_pix_fmts,
.wrapper_name = "amf",
.hw_configs = ff_amfenc_hw_configs,
};

View File

@ -322,4 +322,5 @@ AVCodec ff_hevc_amf_encoder = {
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
.pix_fmts = ff_amf_pix_fmts,
.wrapper_name = "amf",
.hw_configs = ff_amfenc_hw_configs,
};