How to use qpDeltaMap in SDK8.2.16?

I want to use qp delta map in HEVC encoder.
So I Set the qpMapMode. And I add the parameter qpDeltaMap and qpDeltaMapSize in function NvEncoder::DoEncode.
But error is occured in fuction ‘m_nvenc.nvEncEncodePicture’ and ‘NVENC_API_CALL(m_nvenc.nvEncLockBitstream(m_hEncoder, &lockBitstreamData)’.

How can I use qpDeltaMap?

void NvEncoder::DoEncode(NV_ENC_INPUT_PTR inputBuffer, std::vector<std::vector<uint8_t>> &vPacket, NV_ENC_PIC_PARAMS *pPicParams)
{
.
.
.

//qp delta map 
uint32_t qpDeltaMapArraySize;

//unsigned int qpDeltaMapArraySize = 0;
int8_t* qpDeltaMapArray;


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();

uint32_t widthInMBs = ((picParams.inputWidth + 15) & ~15) >> 4;
uint32_t heightInMBs = ((picParams.inputHeight + 15) & ~15) >> 4;
qpDeltaMapArraySize = widthInMBs*heightInMBs;
//qpDeltaMapArraySize = ((picParams.inputWidth)*(picParams.inputHeight)) / (int)(31.98*31.98);
qpDeltaMapArray = (int8_t*)malloc(qpDeltaMapArraySize * sizeof(int8_t));

memset(qpDeltaMapArray, 0, qpDeltaMapArraySize);

picParams.qpDeltaMapSize = qpDeltaMapArraySize;
picParams.qpDeltaMap = qpDeltaMapArray;

picParams.outputBitstream = m_vBitstreamOutputBuffer[m_iToSend % m_nEncoderBuffer];
//qp delta map



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, vPacket, true);
}
else
{
    NVENC_THROW_ERROR("nvEncEncodePicture API failed", nvStatus);
}

}

Hi,

You need to set NV_ENC_RC_PARAMS::NV_ENC_QP_MAP_MODE. Specify “NV_ENC_QP_MAP_DELTA” if you want to pass an array of deltas to be applicated on QP calculated by RC.

Is it possible for you to share a sample code with us?

And secondly, what SDK version, driver version and GPU are you using?

Thanks,
Ryan Park