10-bit YUV Video Codec SDK Encoding

When using NV_ENC_BUFFER_FORMAT_YUV420_10BIT, I can’t seem to find any DXGI_FORMAT’s that will encode anything of meaning. It’s always black.

When moving from 8-bit, NV_ENC_BUFFER_FORMAT_NV12 / DXGI_FORMAT_NV12 to 10 bit, my video encode stream shows up as completely black.

When moving to 10 bit, I am trying:

.encodeConfig->profileGUID = NV_ENC_HEVC_PROFILE_MAIN10_GUID; instead of NV_ENC_CODEC_PROFILE_AUTOSELECT_GUID;

And I’m hoping to use: NV_ENC_BUFFER_FORMAT_YUV420_10BIT instead of 444.

Then, on the DirectX side, I’ve tried a miryad of formats but none seem to work, all seem to either fail or encode as black. DXGI_FORMAT_Y416 DXGI_FORMAT_P010 DXGI_FORMAT_P016 etc. All just encode to black.

What mechanism should we use for encoding 10-bit YUV 420 streams?

Charles

It appears that DXGI_FORMAT_P010 is the right format for NV_ENC_BUFFER_FORMAT_YUV420_10BIT.

Just need to use DXGI_FORMAT_R16_UNORM / DXGI_FORMAT_R16G16_UNORM for D3D11_RENDER_TARGET_VIEW_DESC

It all appears to work now.

1 Like