Reputation: 1
NVIDIA Gefore GTX 1660Ti graphics card, I use video-sdk-samples for HEVC encoding, YUV format: NV_ENC_BUFFER_FORMAT_YUV444, resolution “1920 * 1080” and “3840 * 2160” resolution encoding is successful, but resolution 2560*1440 encoding, prompting error info :NV_ENC_ERR_INVALID_PARAM, I do not know where the problem lies?
void NvEncoder::DoEncode(NV_ENC_INPUT_PTR inputBuffer, std::vector<bool> &vKeyFrame, std::vector<std::vector<uint8_t>> &vPacket, NV_ENC_PIC_PARAMS *pPicParams)
{
NV_ENC_PIC_PARAMS picParams = {};
if (pPicParams)
{
picParams = *pPicParams;
}
picParams.version = NV_ENC_PIC_PARAMS_VER;
picParams.pictureStruct = NV_ENC_PIC_STRUCT_FRAME;
picParams.inputBuffer = inputBuffer;
picParams.bufferFmt = GetPixelFormat();
picParams.inputWidth = GetEncodeWidth();
picParams.inputHeight = GetEncodeHeight();
picParams.outputBitstream = m_vBitstreamOutputBuffer[m_iToSend % m_nEncoderBuffer];
picParams.completionEvent = m_vpCompletionEvent[m_iToSend % m_nEncoderBuffer];
NVENCSTATUS nvStatus = m_nvenc.nvEncEncodePicture(m_hEncoder, &picParams);
if (nvStatus == NV_ENC_SUCCESS || nvStatus == NV_ENC_ERR_NEED_MORE_INPUT)
{
m_iToSend++;
GetEncodedPacket(m_vBitstreamOutputBuffer, vKeyFrame, vPacket, false);
}
else
{
printf("picParams.inputWidth = %d,picParams.inputHeight = %d \n", picParams.inputWidth, picParams.inputHeight);
NVENC_THROW_ERROR("nvEncEncodePicture API failed", nvStatus);
}
}
error:
nvEncEncodePicture Prompt Error:NV_ENC_ERR_INVALID_PARAM
`
Upvotes: 0
Views: 266