Commit fa3ecad0 authored by Timo Rothenpieler's avatar Timo Rothenpieler

avcodec/nvenc: correctly set inputPitch

parent 96cba1c5
...@@ -1403,6 +1403,7 @@ static int nvenc_upload_frame(AVCodecContext *avctx, const AVFrame *frame, ...@@ -1403,6 +1403,7 @@ static int nvenc_upload_frame(AVCodecContext *avctx, const AVFrame *frame,
ctx->registered_frames[reg_idx].mapped = 1; ctx->registered_frames[reg_idx].mapped = 1;
nvenc_frame->reg_idx = reg_idx; nvenc_frame->reg_idx = reg_idx;
nvenc_frame->input_surface = nvenc_frame->in_map.mappedResource; nvenc_frame->input_surface = nvenc_frame->in_map.mappedResource;
nvenc_frame->pitch = frame->linesize[0];
return 0; return 0;
} else { } else {
NV_ENC_LOCK_INPUT_BUFFER lockBufferParams = { 0 }; NV_ENC_LOCK_INPUT_BUFFER lockBufferParams = { 0 };
...@@ -1415,6 +1416,7 @@ static int nvenc_upload_frame(AVCodecContext *avctx, const AVFrame *frame, ...@@ -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"); 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); res = nvenc_copy_frame(avctx, nvenc_frame, &lockBufferParams, frame);
nv_status = p_nvenc->nvEncUnlockInputBuffer(ctx->nvencoder, nvenc_frame->input_surface); nv_status = p_nvenc->nvEncUnlockInputBuffer(ctx->nvencoder, nvenc_frame->input_surface);
...@@ -1655,6 +1657,7 @@ int ff_nvenc_encode_frame(AVCodecContext *avctx, AVPacket *pkt, ...@@ -1655,6 +1657,7 @@ int ff_nvenc_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
pic_params.bufferFmt = inSurf->format; pic_params.bufferFmt = inSurf->format;
pic_params.inputWidth = avctx->width; pic_params.inputWidth = avctx->width;
pic_params.inputHeight = avctx->height; pic_params.inputHeight = avctx->height;
pic_params.inputPitch = inSurf->pitch;
pic_params.outputBitstream = inSurf->output_surface; pic_params.outputBitstream = inSurf->output_surface;
if (avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) { if (avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) {
......
...@@ -56,6 +56,7 @@ typedef struct NvencSurface ...@@ -56,6 +56,7 @@ typedef struct NvencSurface
int reg_idx; int reg_idx;
int width; int width;
int height; int height;
int pitch;
NV_ENC_OUTPUT_PTR output_surface; NV_ENC_OUTPUT_PTR output_surface;
NV_ENC_BUFFER_FORMAT format; NV_ENC_BUFFER_FORMAT format;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment