I have a developer who will cover AMF integration on regular basis (together with me). He starts tomorrow and will be up to date soon. I will ask him to cleanup the things you mentioned if you will not submit the changes first. He is on BCC for now. Thanks, Mikhail
> -----Original Message----- > From: libav-devel [mailto:libav-devel-boun...@libav.org] On Behalf Of Diego > Biurrun > Sent: February 4, 2018 9:09 AM > To: libav development <libav-devel@libav.org> > Subject: Re: [libav-devel] Add HW H.264 and HEVC encoding for AMD GPUs > based on AMF SDK > > Do we have coverage for this on FATE? I'll send a bunch of patches for AMF > shortly. > > On Wed, Jan 03, 2018 at 12:55:53PM -0500, Mikhail Mironov wrote: > > --- a/configure > > +++ b/configure > > @@ -231,6 +231,7 @@ External library support: > > > > The following libraries provide various hardware acceleration features: > > + --enable-amf AMF video encoding code [auto] > > --enable-cuda Nvidia CUDA (dynamically linked) > > --enable-cuvid Nvidia CUVID video decode acceleration > > --enable-d3d11va Microsoft Direct3D 11 video acceleration [auto] > > That's a copy and paste error, amf is not autodetected, it needs to be > enabled explicitly. > > > @@ -2238,6 +2240,7 @@ > wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" > > > > # hardware-accelerated codecs > > +amf_deps_any="dlopen LoadLibrary" > > nvenc_deps_any="libdl LoadLibrary" > > omx_deps="libdl pthreads" > > omx_rpi_select="omx" > > @@ -4573,6 +4578,11 @@ for func in $MATH_FUNCS; do > > > > # these are off by default, so fail if requested and not available > > + > > +enabled amf && > > + check_cpp_condition "AMF/core/Version.h" \ > > + "(AMF_VERSION_MAJOR << 48 | AMF_VERSION_MINOR << 32 | > AMF_VERSION_RELEASE << 16 | AMF_VERSION_BUILD_NUM) >= > 0x0001000400040001" || > > + disable amf > > See the comment just above the line you added. You need to fail (i.e. call the > die() function), not just disable AMF. > > > --- /dev/null > > +++ b/libavcodec/amfenc.c > > @@ -0,0 +1,608 @@ > > +static int amf_copy_buffer(AVCodecContext *avctx, AVPacket *pkt, > > +AMFBuffer *buffer) { > > + //if ((ret = ff_alloc_packet2(avctx, pkt, size, 0)) < 0) { > > + if (ret = ff_alloc_packet(pkt, size)) { > > commented-out cruft > > > --- /dev/null > > +++ b/libavcodec/amfenc.h > > @@ -0,0 +1,158 @@ > > + > > +#ifndef AVCODEC_AMFENC_H > > +#define AVCODEC_AMFENC_H > > + > > +#include <AMF/core/Factory.h> > > + > > +#include <AMF/components/VideoEncoderVCE.h> > > +#include <AMF/components/VideoEncoderHEVC.h> > > + > > +#include "libavutil/fifo.h" > > + > > +#include "config.h" > > +#include "avcodec.h" > > config.h is not used in this header; it's better to move it elsewhere. > > > +/** > > +* AMF encoder context > > +*/ > > +typedef struct AmfContext { > > + AVClass *avclass; > > + // access to AMF runtime > > + amf_handle library; ///< handle to DLL library > > + AMFFactory *factory; ///< pointer to AMF factory > > + AMFDebug *debug; ///< pointer to AMF debug interface > > + AMFTrace *trace; ///< pointer to AMF trace interface > > + > > + amf_uint64 version; ///< version of AMF runtime > > + AmfTraceWriter tracer; ///< AMF writer registered with AMF > > + AMFContext *context; ///< AMF context > > + //encoder > > + AMFComponent *encoder; ///< AMF encoder object > > + amf_bool eof; ///< flag indicating EOF happened > > + AMF_SURFACE_FORMAT format; ///< AMF surface format > > + > > + AVBufferRef *hw_device_ctx; ///< pointer to HW accelerator > (decoder) > > + AVBufferRef *hw_frames_ctx; ///< pointer to HW accelerator > (frame allocator) > > +} AmfContext; > > + > > +/** > > +* Common encoder initization function */ int > > +ff_amf_encode_init(AVCodecContext *avctx); > > +/** > > +* Common encoder termination function */ int > > +ff_amf_encode_close(AVCodecContext *avctx); > > + > > +/** > > +* Ecoding one frame - common function for all AMF encoders */ int > > +ff_amf_send_frame(AVCodecContext *avctx, const AVFrame *frame); int > > +ff_amf_receive_packet(AVCodecContext *avctx, AVPacket *avpkt); > > Most of these comments are redundant and pointless. > > Diego > _______________________________________________ > libav-devel mailing list > libav-devel@libav.org > https://lists.libav.org/mailman/listinfo/libav-devel _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel