Nvidias NvEnc API를 사용하여 하드웨어 인코더를 제작하려고합니다. 이 API는 주어진 데이터를 인코딩하기 위해 H264 및 HEVC의 두 코덱을 사용합니다. 먼저 두 코드 중 하나를 선택하고 나중에 인코딩 세션을 구성하거나 varios 사전 설정 중 하나를 사용해야합니다. 나는 Nvidias NvEnc Programming Guide에 설명 된 것과 같이하고있다. HVEC가있는 Nvidia NvEnc이 Div를 0으로 만듭니다.
//Create Init Params
InitParams* ip = new InitParams();
ip->encodeGUID = m_encoderGuid; //encoder GUID is either H264 or HEVC
ip->encodeWidth = width;
ip->encodeHeight = height;
ip->version = NV_ENC_INITIALIZE_PARAMS_VER;
ip->presetGUID = m_presetGuid; //One of the presets
ip->encodeConfig = NULL; //If using preset, further config should be set to NULL
//Async Encode
ip->enableEncodeAsync = 1;
//Send the InputBuffer in Display Order
ip->enablePTD = 1;
//Causing Div by Zero error if used with HEVC GUID:
CheckApiError(m_apiFunctions.nvEncInitializeEncoder(m_Encoder, ip));
그래서 것은 다시이다 : 나는 H264 GUID를 사용하고 모든 것을 통해 실행
나는 HVEC 코덱을 사용할 때 문제를 일으키는 코드의 다음과 같은 부분이있다. HEVC를 사용하는 경우 Div by Zero를 얻습니다 ... API 호출에서 오류 코드를 얻지 못합니다. 제로 오류로 일반 div 만 가져옵니다. 내 질문은 : HEVC는 사전 설정을 사용하여 제공하지 않는 추가 정보가 필요합니까? 그렇다면 어떤 정보입니까?
고맙습니다.
편집 : 해결. 프로그래밍 가이드이 필드를 설정해야합니다 것을 언급하지 않았지만, NV_ENC_INITIALIZE_PARAMS이가 0으로 사업부를 발생 frameRateNum 및 frameRateDen 구성 ... H264을 사용하는 경우이 발생하지 않는 이유를 몰라. 누군가가 이것을 닫을 수 있습니다 ..
해결책을 짧은 답변으로 추가하십시오. 자신의 질문에 대답하는 것은 완벽하게 OK입니다. 이렇게하면이 질문이 삭제되지 않고 솔루션이 검색 결과에 표시됩니다. – talonmies