• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

Possible descriptions of "Unknown" DXVA 2.0 Hardware Decode profiles?

EternalStudent07

New Member
Joined
Apr 8, 2022
Messages
8 (0.01/day)
I have an NVIDIA 1080ti and I see a few entries under DXVA 2.0 Hardware Decode that are "Unknown". I'm guessing they're shared with newer cards too, so it'd be good to fill those in. This is a GP100 (Pascal) chip.


By the missing values for my card I'd assume they're H.264 AVCHD 4:2:0 and H.265 HEVC 4:2:0 related entries. Here are the relevant values from GPU-Z...

DXVA 2.0 Video Decode
Supported Yes
...
VP9 profile 2
a4c749ef-6ecf-48aa-8448-50a7a1165ff7
Supported Yes
480p Yes
720p Yes
1080p Yes
4K Yes

Unknown
15df9b21-06c4-47f1-841e-a67c97d7f312
Supported Yes
480p Yes
720p Yes
1080p Yes
4K Yes
...
Unknown
20bb8b0a-97aa-4571-8e99-64e60606c1a6
...
32fcfe3f-de46-4a49-861b-ac71110649d5
...
6affd11e-1d96-42b1-a215-93a31f09a53d
...
914c84a3-4078-4fa9-984c-e2f262cb5c9c
...
dda19dc7-93b5-49f5-a9b3-2bda28a2ce6e
...

All the last entries have yes for all rows. BTW this looks like a very ineffiecent way to display this information. Supported seems implied by the other values having yes, though maybe I don't know it's meaning. And I'd just use a row per CODEC, with their current table rows being the columns (and yes/no in the table).

I found this documentation online and it mentions a process that uses "enum cudaVideoCodec". I assume those entries will link up with these unknown GUID's in the SDK somehow.


And people can download the SDK from: https://developer.nvidia.com/nvidia-video-codec-sdk/download

Is this enough to let someone to fill in these values? Or do you need me to dig further. I've considered installing this stuff, but haven't found a need yet. Thought about trying to compile my own video program, and maybe submit a patch or two. Just has been a slow process.

Or is this a Microsoft controlled GUID, so the DirectX (now in Windows SDK, right?) area would be a better target? I didn't get much from a Google search. (edit) I did find this bug on MPV mentioning the same GUID as my first unknown entry. No idea how to read the output they'd included though...

 

W1zzard

Administrator
Staff member
Joined
May 14, 2004
Messages
27,046 (3.71/day)
Processor Ryzen 7 5700X
Memory 48 GB
Video Card(s) RTX 4080
Storage 2x HDD RAID 1, 3x M.2 NVMe
Display(s) 30" 2560x1600 + 19" 1280x1024
Software Windows 10 64-bit
Supported seems implied by the other values having yes, though maybe I don't know it's meaning
True. I think back at the time I wrote the code I was thinking of manually adding certain guids to scan for, which could result in "supported: no".

Right now the list is comprised only of supported codecs, so "Supported: Yes" is kinda redundant. Not sure if worth removing though, could be useful to guide less experienced users

And I'd just use a row per CODEC, with their current table rows being the columns (and yes/no in the table).
The UI control isn't exactly a "table", it's just two fixed columns (+ options for full-width bold heading/normal heading)

link up with these unknown GUID's
Yeah just need to Google for them basically and see if people have figured them out in the meantime. Just not high on my priority list/I keep forgetting about it :)

Feel free to post links here that match up GUIDs with CODECs, easy to add in GPU-Z
 

EternalStudent07

New Member
Joined
Apr 8, 2022
Messages
8 (0.01/day)
I don't see a way to edit my original post. It appears I was wrong about the chip type...GP102 not a GP100 (I forgot they probably had a Tesla or Quadro specific chip even bigger than this one).

Yeah, projects adapt and morph over time for me too. I assume this isn't an open source project I could fork and try to offer patches for.

And I understand the current tab isn't setup for the table format. It just seems like a clearer, smaller way to hold the same data.

I installed the NVIDIA Video CODEC SDK and did a search for that first GUID, but nothing returned. I don't know what to call those values from your tool to match it up in this other SDK.

I have found this list of nicer CODEC names in an interface file.

typedef enum cudaVideoCodec_enum {
cudaVideoCodec_MPEG1=0, /**< MPEG1 */
cudaVideoCodec_MPEG2, /**< MPEG2 */
cudaVideoCodec_MPEG4, /**< MPEG4 */
cudaVideoCodec_VC1, /**< VC1 */
cudaVideoCodec_H264, /**< H264 */
cudaVideoCodec_JPEG, /**< JPEG */
cudaVideoCodec_H264_SVC, /**< H264-SVC */
cudaVideoCodec_H264_MVC, /**< H264-MVC */
cudaVideoCodec_HEVC, /**< HEVC */
cudaVideoCodec_VP8, /**< VP8 */
cudaVideoCodec_VP9, /**< VP9 */
cudaVideoCodec_AV1, /**< AV1 */
cudaVideoCodec_NumCodecs, /**< Max codecs */
// Uncompressed YUV
cudaVideoCodec_YUV420 = (('I'<<24)|('Y'<<16)|('U'<<8)|('V')), /**< Y,U,V (4:2:0) */
cudaVideoCodec_YV12 = (('Y'<<24)|('V'<<16)|('1'<<8)|('2')), /**< Y,V,U (4:2:0) */
cudaVideoCodec_NV12 = (('N'<<24)|('V'<<16)|('1'<<8)|('2')), /**< Y,UV (4:2:0) */
cudaVideoCodec_YUYV = (('Y'<<24)|('U'<<16)|('Y'<<8)|('V')), /**< YUYV/YUY2 (4:2:2) */
cudaVideoCodec_UYVY = (('U'<<24)|('Y'<<16)|('V'<<8)|('Y')) /**< UYVY (4:2:2) */
} cudaVideoCodec;

And this looks like the function to query the card's abilities with their API...

/**********************************************************************************************************************/
//! \fn CUresult CUDAAPI cuvidGetDecoderCaps(CUVIDDECODECAPS *pdc)
//! Queries decode capabilities of NVDEC-HW based on CodecType, ChromaFormat and BitDepthMinus8 parameters.
//! 1. Application fills IN parameters CodecType, ChromaFormat and BitDepthMinus8 of CUVIDDECODECAPS structure
//! 2. On calling cuvidGetDecoderCaps, driver fills OUT parameters if the IN parameters are supported
//! If IN parameters passed to the driver are not supported by NVDEC-HW, then all OUT params are set to 0.
//! E.g. on Geforce GTX 960:
//! App fills - eCodecType = cudaVideoCodec_H264; eChromaFormat = cudaVideoChromaFormat_420; nBitDepthMinus8 = 0;
//! Given IN parameters are supported, hence driver fills: bIsSupported = 1; nMinWidth = 48; nMinHeight = 16;
//! nMaxWidth = 4096; nMaxHeight = 4096; nMaxMBCount = 65536;
//! CodedWidth*CodedHeight/256 must be less than or equal to nMaxMBCount
/**********************************************************************************************************************/
extern CUresult CUDAAPI cuvidGetDecoderCaps(CUVIDDECODECAPS *pdc);

Maybe with more information I can try to match things up. Or you could try to add code to your app to just run their query API directly if an NVIDIA card exists on the system.
 
Top