我正在使用cuda nvenc編碼器來編碼YUV幀。我想使用RTSP流式傳輸編碼的h264數據。我需要SPSPPS緩衝區來執行RTSP流。我正在使用「nvEncGetSequenceParams」來獲取spspps緩衝區。按照預期調用「nvEncInitializeEncoder」函數後,我調用了該函數。我得到「NV_ENC_ERR_INVALID_VERSION」錯誤,這意味着我傳遞錯誤的結構到這個函數。但我已經檢查了多次,我傳遞的結構是正確的。我認爲這可能是驅動程序版本問題。我有Quadro k5000 GPU。我已經在驅動版本331.82和337.88上試過了。以下是我正在使用的代碼。使用nvenc編碼器時出現「NV_ENC_ERR_INVALID_VERSION」錯誤
NVENCSTATUS CNvEncoderH264::GetSPSPPSBUffer(char *SPSPPSBuffer)
{
NVENCSTATUS nvSta = NV_ENC_SUCCESS;
uint32_t size = 0;
//m_spspps is of type NV_ENC_SEQUENCE_PARAM_PAYLOAD
m_spspps.inBufferSize = 512;
m_spspps.outSPSPPSPayloadSize = &size;
SET_VER(m_spspps, NV_ENC_INITIALIZE_PARAMS);
m_spspps.spsppsBuffer = SPSPPSBuffer;
nvSta = m_pEncodeAPI->nvEncGetSequenceParams(m_hEncoder,&m_spspps);
return nvSta;
}
NVENC不NVCUVENC,並NVENC無關與CUDA這些問題不應該與CUDA被標記 – 2014-12-03 15:35:28
。 @RobertCrovella我完全同意關於特定問題的評論,但是「NVENC與CUDA無關」的說法並不完全正確 - 您可以使用CUDA浮動上下文句柄初始化NVENC(這意味着在NVENC中涉及一些CUDA API代碼),顏色轉換可以使用CUDA完成用作NVENC輸入的Direct 3D表面上的ons。 – 2014-12-04 10:33:06
用於NVENC的GPU hw資源與用於CUDA的GPU資源完全分離,並且API是正交的。是的,他們可以互操作,但是根據定義操縱NVENC功能並沒有CUDA API,並且沒有按定義操縱CUDA功能的NVENC API。無論如何,我的評論意見是,NVENC問題不應該被CUDA自動標記,這在這裏似乎就是這種情況。 NVENC不是CUDA的一部分。感謝您提供此用戶問題的答案。 – 2014-12-04 14:19:22