summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven C. Dack <sven.c.dack@sky.com>2016-09-07 15:35:14 +0200
committerTimo Rothenpieler <timo@rothenpieler.org>2016-09-07 18:44:10 +0200
commit4aeb7a88ec69aff6490e7f94f5987f7525b7eab7 (patch)
tree18805c09c8145f34e00d3e110e5cd284c2fffb63
parentfa3ecad071aadec810fe7fc8e74865778e477c5e (diff)
avcodec/nvenc: support RGB input
nvenc still encodes as yuv, but does the conversion internally which brings some performance gains. Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
-rw-r--r--libavcodec/nvenc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c
index b335116007..bff204d926 100644
--- a/libavcodec/nvenc.c
+++ b/libavcodec/nvenc.c
@@ -81,6 +81,8 @@ const enum AVPixelFormat ff_nvenc_pix_fmts[] = {
AV_PIX_FMT_P010,
AV_PIX_FMT_YUV444P,
AV_PIX_FMT_YUV444P16,
+ AV_PIX_FMT_0RGB32,
+ AV_PIX_FMT_0BGR32,
#if CONFIG_CUDA
AV_PIX_FMT_CUDA,
#endif
@@ -1032,6 +1034,14 @@ static av_cold int nvenc_alloc_surface(AVCodecContext *avctx, int idx)
ctx->surfaces[idx].format = NV_ENC_BUFFER_FORMAT_YUV444_10BIT;
break;
+ case AV_PIX_FMT_0RGB32:
+ ctx->surfaces[idx].format = NV_ENC_BUFFER_FORMAT_ARGB;
+ break;
+
+ case AV_PIX_FMT_0BGR32:
+ ctx->surfaces[idx].format = NV_ENC_BUFFER_FORMAT_ABGR;
+ break;
+
default:
av_log(avctx, AV_LOG_FATAL, "Invalid input pixel format\n");
return AVERROR(EINVAL);