[FFmpeg-cvslog] Merge commit '34c113335b53d83ed343de49741f0823aa1f8cc6'

Mark Thompson git at videolan.org
Wed Jan 17 01:27:14 EET 2018


ffmpeg | branch: master | Mark Thompson <sw at jkqxz.net> | Tue Jan 16 23:25:27 2018 +0000| [3895fce26ec7f6d2b1642f96ecaddede6521228e] | committer: Mark Thompson

Merge commit '34c113335b53d83ed343de49741f0823aa1f8cc6'

* commit '34c113335b53d83ed343de49741f0823aa1f8cc6':
  Add support for H.264 and HEVC hardware encoding for AMD GPUs based on AMF SDK

Most of this was already present from 9ea6607d294526688ab1b1342cb36ee159683e88,
this just applies some minor fixups and adds the general documentation.

Merged-by: Mark Thompson <sw at jkqxz.net>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3895fce26ec7f6d2b1642f96ecaddede6521228e
---

 doc/general.texi         | 12 ++++++++++++
 libavcodec/amfenc.c      |  4 ++--
 libavcodec/amfenc_h264.c |  6 +++---
 libavcodec/amfenc_hevc.c |  6 +++---
 4 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/doc/general.texi b/doc/general.texi
index 26919c9287..3b73e31310 100644
--- a/doc/general.texi
+++ b/doc/general.texi
@@ -225,6 +225,18 @@ The dispatcher is open source and can be downloaded from
 with the @code{--enable-libmfx} option and @code{pkg-config} needs to be able to
 locate the dispatcher's @code{.pc} files.
 
+ at section AMD VCE
+
+FFmpeg can use the AMD Advanced Media Framework library for accelerated H.264
+and HEVC encoding on VCE enabled hardware under Windows.
+
+To enable support you must obtain the AMF framework header files from
+ at url{https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git}.
+
+Create an @code{AMF/} directory in the system include path.
+Copy the contents of @code{AMF/amf/public/include/} into that directory.
+Then configure FFmpeg with @code{--enable-amf}.
+
 
 @chapter Supported File Formats, Codecs or Features
 
diff --git a/libavcodec/amfenc.c b/libavcodec/amfenc.c
index f8b68070ae..89a10ff253 100644
--- a/libavcodec/amfenc.c
+++ b/libavcodec/amfenc.c
@@ -157,7 +157,7 @@ static int amf_init_context(AVCodecContext *avctx)
     AmfContext         *ctx = avctx->priv_data;
     AMF_RESULT          res = AMF_OK;
 
-    // confugure AMF logger
+    // configure AMF logger
     // the return of these functions indicates old state and do not affect behaviour
     ctx->trace->pVtbl->EnableWriter(ctx->trace, AMF_TRACE_WRITER_DEBUG_OUTPUT, ctx->log_to_dbg != 0 );
     if (ctx->log_to_dbg)
@@ -414,7 +414,7 @@ static int amf_copy_buffer(AVCodecContext *avctx, AVPacket *pkt, AMFBuffer *buff
     return 0;
 }
 
-// amfenc API implmentation
+// amfenc API implementation
 int ff_amf_encode_init(AVCodecContext *avctx)
 {
     AmfContext     *ctx = avctx->priv_data;
diff --git a/libavcodec/amfenc_h264.c b/libavcodec/amfenc_h264.c
index 96e4e952da..2c082e93bd 100644
--- a/libavcodec/amfenc_h264.c
+++ b/libavcodec/amfenc_h264.c
@@ -361,7 +361,6 @@ static av_cold int amf_encode_init_h264(AVCodecContext *avctx)
 static const AVCodecDefault defaults[] = {
     { "refs",       "-1"  },
     { "aspect",     "0"   },
-    { "sar",        "0"   },
     { "qmin",       "-1"  },
     { "qmax",       "-1"  },
     { "b",          "2M"  },
@@ -376,7 +375,7 @@ static const AVClass h264_amf_class = {
     .option = options,
     .version = LIBAVUTIL_VERSION_INT,
 };
-//TODO declare as HW encoder when available
+
 AVCodec ff_h264_amf_encoder = {
     .name           = "h264_amf",
     .long_name      = NULL_IF_CONFIG_SMALL("AMD AMF H.264 Encoder"),
@@ -389,7 +388,8 @@ AVCodec ff_h264_amf_encoder = {
     .priv_data_size = sizeof(AmfContext),
     .priv_class     = &h264_amf_class,
     .defaults       = defaults,
-    .capabilities   = AV_CODEC_CAP_DELAY,
+    .capabilities   = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE,
     .caps_internal  = FF_CODEC_CAP_INIT_CLEANUP,
     .pix_fmts       = ff_amf_pix_fmts,
+    .wrapper_name   = "amf",
 };
diff --git a/libavcodec/amfenc_hevc.c b/libavcodec/amfenc_hevc.c
index 3956b2d178..7c9a33ab33 100644
--- a/libavcodec/amfenc_hevc.c
+++ b/libavcodec/amfenc_hevc.c
@@ -295,7 +295,6 @@ static av_cold int amf_encode_init_hevc(AVCodecContext *avctx)
 static const AVCodecDefault defaults[] = {
     { "refs",       "-1"  },
     { "aspect",     "0"   },
-    { "sar",        "0"   },
     { "b",          "2M"  },
     { "g",          "250" },
     { "slices",     "1"   },
@@ -307,7 +306,7 @@ static const AVClass hevc_amf_class = {
     .option = options,
     .version = LIBAVUTIL_VERSION_INT,
 };
-//TODO declare as HW encoder when available
+
 AVCodec ff_hevc_amf_encoder = {
     .name           = "hevc_amf",
     .long_name      = NULL_IF_CONFIG_SMALL("AMD AMF HEVC encoder"),
@@ -320,7 +319,8 @@ AVCodec ff_hevc_amf_encoder = {
     .priv_data_size = sizeof(AmfContext),
     .priv_class     = &hevc_amf_class,
     .defaults       = defaults,
-    .capabilities   = AV_CODEC_CAP_DELAY,
+    .capabilities   = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE,
     .caps_internal  = FF_CODEC_CAP_INIT_CLEANUP,
     .pix_fmts       = ff_amf_pix_fmts,
+    .wrapper_name   = "amf",
 };


======================================================================

diff --cc doc/general.texi
index 26919c9287,0c92761a49..3b73e31310
--- a/doc/general.texi
+++ b/doc/general.texi
@@@ -225,8 -237,17 +225,20 @@@ The dispatcher is open source and can b
  with the @code{--enable-libmfx} option and @code{pkg-config} needs to be able to
  locate the dispatcher's @code{.pc} files.
  
+ @section AMD VCE
+ 
 -Libav can use the AMD Advanced Media Framework library for accelerated H.264 and HEVC encoding on VCE enabled hardware under Windows.
++FFmpeg can use the AMD Advanced Media Framework library for accelerated H.264
++and HEVC encoding on VCE enabled hardware under Windows.
+ 
 -To enable support you must obtain the AMF framework header files from @url{https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git}.
++To enable support you must obtain the AMF framework header files from
++ at url{https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git}.
+ 
+ Create an @code{AMF/} directory in the system include path.
+ Copy the contents of @code{AMF/amf/public/include/} into that directory.
 -Then Configure Libav with @code{--enable-amf}.
++Then configure FFmpeg with @code{--enable-amf}.
++
  
 - at chapter Supported File Formats and Codecs
 + at chapter Supported File Formats, Codecs or Features
  
  You can use the @code{-formats} and @code{-codecs} options to have an exhaustive list.
  



More information about the ffmpeg-cvslog mailing list