summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/general.texi12
-rw-r--r--libavcodec/amfenc.c4
-rw-r--r--libavcodec/amfenc_h264.c6
-rw-r--r--libavcodec/amfenc_hevc.c6
4 files changed, 20 insertions, 8 deletions
diff --git a/doc/general.texi b/doc/general.texi
index 26919c9..3b73e31 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.
+@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
+@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 f8b6807..89a10ff 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 96e4e95..2c082e9 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 3956b2d..7c9a33a 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",
};
OpenPOWER on IntegriCloud