Message ID | 20201015001625.32832-1-ovchinnikov.dmitrii@gmail.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/5] lavc/amfenc: HWConfig for amf encoder. | expand |
Context | Check | Description |
---|---|---|
andriy/x86_make | success | Make finished |
andriy/x86_make_fate | success | Make fate finished |
Hi! could you please review and accept this patch? It fixes a broken AMF hwaccel pipeline.
On 15/10/2020 01:16, OvchinnikovDmitrii wrote: > --- > libavcodec/amfenc.c | 12 ++++++++++++ > libavcodec/amfenc.h | 4 +++- > libavcodec/amfenc_h264.c | 1 + > libavcodec/amfenc_hevc.c | 1 + > 4 files changed, 17 insertions(+), 1 deletion(-) > > diff --git a/libavcodec/amfenc.c b/libavcodec/amfenc.c > index da0652943d..33f97dd582 100644 > --- a/libavcodec/amfenc.c > +++ b/libavcodec/amfenc.c > @@ -782,3 +782,15 @@ int ff_amf_receive_packet(AVCodecContext *avctx, AVPacket *avpkt) > } > return ret; > } > + > +const AVCodecHWConfigInternal *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, > +}; > \ No newline at end of file Your git client has left a review comment for you. > diff --git a/libavcodec/amfenc.h b/libavcodec/amfenc.h > index 80658c6b2a..06994da543 100644 > --- a/libavcodec/amfenc.h > +++ b/libavcodec/amfenc.h > @@ -27,7 +27,7 @@ > #include "libavutil/fifo.h" > > #include "avcodec.h" > - > +#include "hwconfig.h" > > /** > * AMF trace writer callback class > @@ -117,6 +117,8 @@ typedef struct AmfContext { > int tier; > } AmfContext; > > +extern const AVCodecHWConfigInternal *ff_amfenc_hw_configs[]; > + > /** > * Common encoder initization function > */ > diff --git a/libavcodec/amfenc_h264.c b/libavcodec/amfenc_h264.c > index 7a8029f3b7..622ee85946 100644 > --- a/libavcodec/amfenc_h264.c > +++ b/libavcodec/amfenc_h264.c > @@ -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, > }; > diff --git a/libavcodec/amfenc_hevc.c b/libavcodec/amfenc_hevc.c > index fa12a3a3f6..bb224c5fec 100644 > --- a/libavcodec/amfenc_hevc.c > +++ b/libavcodec/amfenc_hevc.c > @@ -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, > }; > This looks right, but can you clarify the intent behind the hw config cases? (Do you have an ffmpeg command line or other example which is improved by them?) Thanks, - Mark
> > > This looks right, but can you clarify the intent behind the hw config > cases? (Do you have an ffmpeg command line or other example which is > improved by them?) > > Hi! This ticket describes the problem. https://trac.ffmpeg.org/ticket/8953#ticket
On 28/10/2020 23:28, Dmitrii Ovchinnikov wrote: >> >> >> This looks right, but can you clarify the intent behind the hw config >> cases? (Do you have an ffmpeg command line or other example which is >> improved by them?) >> >> Hi! This ticket describes the problem. > https://trac.ffmpeg.org/ticket/8953#ticket I added a proper explanation to the commit message and applied with that. Thanks, - Mark
diff --git a/libavcodec/amfenc.c b/libavcodec/amfenc.c index da0652943d..33f97dd582 100644 --- a/libavcodec/amfenc.c +++ b/libavcodec/amfenc.c @@ -782,3 +782,15 @@ int ff_amf_receive_packet(AVCodecContext *avctx, AVPacket *avpkt) } return ret; } + +const AVCodecHWConfigInternal *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, +}; \ No newline at end of file diff --git a/libavcodec/amfenc.h b/libavcodec/amfenc.h index 80658c6b2a..06994da543 100644 --- a/libavcodec/amfenc.h +++ b/libavcodec/amfenc.h @@ -27,7 +27,7 @@ #include "libavutil/fifo.h" #include "avcodec.h" - +#include "hwconfig.h" /** * AMF trace writer callback class @@ -117,6 +117,8 @@ typedef struct AmfContext { int tier; } AmfContext; +extern const AVCodecHWConfigInternal *ff_amfenc_hw_configs[]; + /** * Common encoder initization function */ diff --git a/libavcodec/amfenc_h264.c b/libavcodec/amfenc_h264.c index 7a8029f3b7..622ee85946 100644 --- a/libavcodec/amfenc_h264.c +++ b/libavcodec/amfenc_h264.c @@ -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, }; diff --git a/libavcodec/amfenc_hevc.c b/libavcodec/amfenc_hevc.c index fa12a3a3f6..bb224c5fec 100644 --- a/libavcodec/amfenc_hevc.c +++ b/libavcodec/amfenc_hevc.c @@ -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, };