Nvidias NvEnc APIを使用してハードウェアエンコーダを構築しようとしています。このAPIは、任意のデータを符号化するための2つのコーデック(H264およびHEVC)の使用を提供します。 最初に2つのコードのいずれかを選択し、その後にエンコードセッションを設定するか、またはvariosプリセットの1つを使用する必要があります。私はNvidias NvEnc Programming Guideに記載されているようにしています。Nvidia NvEnc with HVECが0のDivを引き起こす
私はHVECコーデックを使用した場合、問題を引き起こして以下のコードを持っている:
//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を使用していますし、すべてが通じ実行されます。私がHEVCを使用する場合、私はdiv by Zeroを取得します...私はAPIコールからエラーコードを得ることはできません。 私の質問は次のとおりです。HEVCはプリセットを使用して提供していない情報をさらに必要としますか?もしそうなら、どのような情報ですか?
ありがとうございます!
編集:それを解決しました。プログラミングガイドは、これらのフィールドを設定しなければならないが、H264を使用している場合、この現象が発生しない理由NV_ENC_INITIALIZE_PARAMSは知らん...ゼロでのdivを引き起こしたframeRateNumとframeRateDenで構成されていることを、状態ませんでした。誰かがこれを閉じるかもしれません..
解決策を簡単な回答として追加してください。あなた自身の質問に答えることは完全にOKです。そうすることで、この質問が削除されず、ソリューションが検索結果に表示されます。 – talonmies