From fa3ecad071aadec810fe7fc8e74865778e477c5e Mon Sep 17 00:00:00 2001 From: Timo Rothenpieler Date: Wed, 7 Sep 2016 18:15:22 +0200 Subject: [PATCH] avcodec/nvenc: correctly set inputPitch --- libavcodec/nvenc.c | 3 +++ libavcodec/nvenc.h | 1 + 2 files changed, 4 insertions(+) diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index c53341dae4..b335116007 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -1403,6 +1403,7 @@ static int nvenc_upload_frame(AVCodecContext *avctx, const AVFrame *frame, ctx->registered_frames[reg_idx].mapped = 1; nvenc_frame->reg_idx = reg_idx; nvenc_frame->input_surface = nvenc_frame->in_map.mappedResource; + nvenc_frame->pitch = frame->linesize[0]; return 0; } else { NV_ENC_LOCK_INPUT_BUFFER lockBufferParams = { 0 }; @@ -1415,6 +1416,7 @@ static int nvenc_upload_frame(AVCodecContext *avctx, const AVFrame *frame, return nvenc_print_error(avctx, nv_status, "Failed locking nvenc input buffer"); } + nvenc_frame->pitch = lockBufferParams.pitch; res = nvenc_copy_frame(avctx, nvenc_frame, &lockBufferParams, frame); nv_status = p_nvenc->nvEncUnlockInputBuffer(ctx->nvencoder, nvenc_frame->input_surface); @@ -1655,6 +1657,7 @@ int ff_nvenc_encode_frame(AVCodecContext *avctx, AVPacket *pkt, pic_params.bufferFmt = inSurf->format; pic_params.inputWidth = avctx->width; pic_params.inputHeight = avctx->height; + pic_params.inputPitch = inSurf->pitch; pic_params.outputBitstream = inSurf->output_surface; if (avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) { diff --git a/libavcodec/nvenc.h b/libavcodec/nvenc.h index c57f1ae524..521902c77d 100644 --- a/libavcodec/nvenc.h +++ b/libavcodec/nvenc.h @@ -56,6 +56,7 @@ typedef struct NvencSurface int reg_idx; int width; int height; + int pitch; NV_ENC_OUTPUT_PTR output_surface; NV_ENC_BUFFER_FORMAT format;