Ich versuche, einen Hardware-Encoder mit Nvidias NvEnc API zu bauen. Diese API bietet die Verwendung von zwei Codecs zur Codierung beliebiger Daten: H264 und HEVC. Zuerst muss man also einen der beiden Codes auswählen und anschließend die Encoding-Session konfigurieren oder eines der verschiedenen Presets verwenden. Ich mache es wie in Nvidias NvEnc Programming Guide beschrieben.Nvidia NvEnc mit HVEC verursacht Div durch Null
Ich habe das folgende Stück Code das Problem verursacht, wenn HVEC Codec:
//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));
So ist die Sache noch einmal: Ich bin mit dem H264 GUID und alles läuft. Wenn ich HEVC verwende, bekomme ich einen Div by Zero ... Ich bekomme keinen Fehlercode vom api-Aufruf, nur einen einfachen Div durch Null Fehler. Also meine Frage ist: Braucht HEVC mehr Informationen, die ich nicht mit einer Voreinstellung bereitstellen? Wenn ja, welche Art von Informationen?
Vielen Dank!
Bearbeiten: Gelöst es. Die Programmieranleitung nicht feststellen, dass diese Felder festgelegt werden müssen, aber NV_ENC_INITIALIZE_PARAMS bestehen aus frameRateNum und frameRateDen die die div von Null verursacht ... Keine Ahnung, warum dies nicht der Fall, wenn H264 verwenden. Jemand könnte das schließen ..
Bitte fügen Sie Ihre Lösung als kurze Antwort hinzu. Es ist vollkommen in Ordnung, Ihre eigenen Fragen zu beantworten. Dadurch wird sichergestellt, dass diese Frage nicht gelöscht wird und Ihre Lösung in den Suchergebnissen angezeigt wird. – talonmies