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

Cannot get NVIDIA HDA to encode multichannel PCM into Dolby Digital through HDMI [Using latest nvidia drivers that I've modded myself]

paxkronos

New Member
Joined
Sep 30, 2022
Messages
9 (0.01/day)
I've just modded the latest official nvidia drivers using information based on the wonderful developments made by you guys.

The Dolby Theater v4 app is installed and the Dolby Theater v4 APO shows up in a dedicated tab in the NVIDIA HDA HDMI sound driver page.
However, "Dolby Digital" doesn't show up in the list of "Default Formats" of the HDMI device which seems to be the reason why I cannot get games outputting 5.1 PCM to play 5.1 surround in my receiver (the receiver still says LPCM instead of Dolby Digital). Any clues to this?

Here is my setup:
PC -(HDMI)-> TV -(HDMI ARC)-> Receiver

Some facts:
- Running Windows 10
- The receiver only supports 2ch LPCM or Dolby Digital through HDMI ARC.
- When playing broadcast TV or Netflix in the TV, the receiver correctly outputs Dolby Digital.
- On the PC when configuring VLC with AC3 passthru and playing a Dolby Digital encoded audio file the receiver correctly outputs Dolby Digital.

What's missing is having Windows encode multichannel PCM into a Dolby Digital bitstream through HDMI and, my understanding is that I need "Dolby Digital" to show up in the list of "Default Formats" like shown below ?


Any hints where to look next would be greatly appreciated !
 
Joined
Dec 8, 2020
Messages
3,061 (2.02/day)
Location
United Kingdom
What is listed in supported formats out of curiosity, and is the TV in passthrough mode? When it says LPCM do you get audio?
 

paxkronos

New Member
Joined
Sep 30, 2022
Messages
9 (0.01/day)
What is listed in supported formats out of curiosity, and is the TV in passthrough mode?
In supported formats it lists:
* Dolby Digital
* Dolby Digital Plus
* DTS

I have proof that the Dolby Digital format is actually supported, because if I play Dolby Digital content through VLC the receiver correctly receives Dolby Digital.

I don't know if the TV is in passthrough mode. But, according to the receiver specs, the receiver doesn't support Dolby Digital Plus with HDMI (ARC) so the DD+ format must be advertised by the TV.
I didn't actually try playing DD+ content through VLC, so I can't tell if the TV will send that to the receiver as-is or will recode into Dolby Digital.

EDIT: To your other question.
When it says LPCM do you get audio?

When playing a game outputting 5.1 PCM, the receiver shows LPCM and I can hear stereo sound from the speakers.
 
Joined
Dec 8, 2020
Messages
3,061 (2.02/day)
Location
United Kingdom
Here is what normally happens (PCM and bitstreaming [passthrough]).

PCM from game, other > PCM sound device (GPU) > PCM processors (software APO's [SFX, MFX, EFX]) > PCM out (HDMI) >> TV >> Receiver.
Compressed PCM (not actually PCM) > Passthrough device (GPU) > Compressed PCM out (HDMI) >> TV >> Receiver.

In default formats, you want 'Dolby Digital Live' you might also see it as 'Dolby Digital Live 5.1'.

This can be achieved by adding the APO to the device (plus any extra steps) or by software (which you probably won't find easily).

PCM from game, other > PCM sound device (GPU) > PCM compressor (encoder [EFX]) > Compressed PCM out (HDMI) >> TV >> Receiver.

----

In short whatever you have done so far is either in the wrong format (one that is not supported [probably DD+]) or its not working.

If you are receiving PCM and there is audio, no digital compression to DDL 5.1 has taken place (still PCM).
 

bug

Joined
May 22, 2015
Messages
14,012 (3.95/day)
Processor Intel i5-12600k
Motherboard Asus H670 TUF
Cooling Arctic Freezer 34
Memory 2x16GB DDR4 3600 G.Skill Ripjaws V
Video Card(s) EVGA GTX 1060 SC
Storage 500GB Samsung 970 EVO, 500GB Samsung 850 EVO, 1TB Crucial MX300 and 2TB Crucial MX500
Display(s) Dell U3219Q + HP ZR24w
Case Raijintek Thetis
Audio Device(s) Audioquest Dragonfly Red :D
Power Supply Seasonic 620W M12
Mouse Logitech G502 Proteus Core
Keyboard G.Skill KM780R
Software Arch Linux + Win10
@paxkronos My old Samsung TV was picky about sound output. It would not output Dolby Digital from anything other than cable TV. Anything else (HDMI-in, its own "smart" apps) would just output stereo.

I would suggest getting the TV out of the equation and test PC -(HDMI)-> Receiver first.
 
Joined
Dec 8, 2020
Messages
3,061 (2.02/day)
Location
United Kingdom
It's also possible that it is working but the TV is decoding, but I feel that is unlikely.

====

Here are some images of a GPU I converted to do 'DTS Interactive' aka DTS Audio.

HDMI.png
DTS.png

====

Tip, always put encoders at the last point on EFX, although this means using the 'Disable enhancers' will NOT disable compression.

SFX [6 channel PCM] > MFX [6 channel PCM] > EFX [6 channel PCM]+[Encoder] >> HDMI Out.
 
Last edited:

paxkronos

New Member
Joined
Sep 30, 2022
Messages
9 (0.01/day)
@Ferather

PCM from game, other > PCM sound device (GPU) > PCM compressor (encoder [EFX]) > Compressed PCM out (HDMI) >> TV >> Receiver

This is exactly what I want to achieve, the HDMI bitsream must be Dolby Digital since that's the only compressed format the receiver supports on HDMI (ARC) input.

I thought adding PCEE4 into the nvhda driver was supposed to achieve this ? What else should I add ?

In default formats, you want 'Dolby Digital Live' you might also see it as 'Dolby Digital Live 5.1'.

What's the difference between "Dolby Digital" (that I saw in some modding threads) and "Dolby Digital Live" ?

Can you pinpoint me to an official HDMI audio driver for Windows 10 that bundles this ? I'll try to figure out from there ...

If you are receiving PCM and there is audio, no digital compression to DDL 5.1 has taken place (still PCM).
Exactly.

@bug
@paxkronos My old Samsung TV was picky about sound output. It would not output Dolby Digital from anything other than cable TV. Anything else (HDMI-in, its own "smart" apps) would just output stereo.
I would suggest getting the TV out of the equation and test PC -(HDMI)-> Receiver first.

Please re-read my post, you should get the answer why the TV is not the problem (and thus ruled out).
 
Joined
Dec 8, 2020
Messages
3,061 (2.02/day)
Location
United Kingdom
On HDMi its the same, but without the live bit, I just checked. Personally I have only seen it say live, but that's SPDIF I guess.
It sounds like the changes are not quite working properly, or need some other settings (maybe registry).

I have not worked with the Dolby app and system, So I cannot help much directly.
 
Joined
Dec 8, 2020
Messages
3,061 (2.02/day)
Location
United Kingdom
Try:

----

You are using: HKR,"FX\\0",%PKEY_FX_StreamEffectClsid%,,[[%PCEE4HDMIAPO_LFX_CLSID%]]

PCEE4_FX_FriendlyName = "Dolby PCEE4 HDMI Effects"
PCEE4HDMIAPO_LFX_CLSID = "{27C1D074-0E39-43b1-B00A-293DD512B759}"
PCEE4HDMIAPO_GFX_CLSID = "{12844204-3EAD-4d9b-AB7F-B1C0FC218915}"
PCEE4HDMIAPO_UI_CLSID = "{DB811C5C-8490-418b-9807-5E99702AA9C9}"

But I see only registration for a different system, not in the inf file:

HKCR,AudioEngine\AudioProcessingObjects\%[[FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID]]%, "FriendlyName", ,"Dolby PCEE4 LFX APO"

It's possible the file registration adds what is needed.

----

Remove: FX_MODE_CLSID, keeping everything Dolby

HKR,"FX\\0",%PKEY_ItemNameDisplay%,,%PCEE4_FX_FriendlyName%
HKR,"FX\\0",%PKEY_FX_StreamEffectClsid%,,%PCEE4HDMIAPO_LFX_CLSID%
HKR,"FX\\0",%PKEY_FX_ModeEffectClsid%,,%FX_MODE_CLSID% <<<<<<<<<<<
HKR,"FX\\0",%PKEY_FX_EndpointEffectClsid%,,%PCEE4HDMIAPO_GFX_CLSID%
HKR,"FX\\0",%PKEY_FX_UiClsid%,,%PCEE4HDMIAPO_UI_CLSID%

----

In regedit you can search 'audioprocessingobject' and look for registered APO's.

====

Edit: some GPU's might not like EFX, if that is the case use only SFX, MFX, and MFX as final.

Edit 2: Check with the file originator the portion of the APO you are trying use is unlocked-working.
 
Last edited:

paxkronos

New Member
Joined
Sep 30, 2022
Messages
9 (0.01/day)
@Ferather

You are using: HKR,"FX\\0",%PKEY_FX_StreamEffectClsid%,,[[%PCEE4HDMIAPO_LFX_CLSID%]]

PCEE4_FX_FriendlyName = "Dolby PCEE4 HDMI Effects"
PCEE4HDMIAPO_LFX_CLSID = "{27C1D074-0E39-43b1-B00A-293DD512B759}"
PCEE4HDMIAPO_GFX_CLSID = "{12844204-3EAD-4d9b-AB7F-B1C0FC218915}"
PCEE4HDMIAPO_UI_CLSID = "{DB811C5C-8490-418b-9807-5E99702AA9C9}"

But I see only registration for a different system, not in the inf file:

HKCR,AudioEngine\AudioProcessingObjects\%[[FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID]]%, "FriendlyName", ,"Dolby PCEE4 LFX APO"

It's possible the file registration adds what is needed.

My appologies but I'm not sure I understand what you mean by "registration for a different system, not in the inf file" ?

FX_StreamEffect refers to PCEE4HDMIAPO_LFX_CLSID which is 27C1D074-0E39-43b1-B00A-293DD512B759.

FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID is also 27C1D074-0E39-43b1-B00A-293DD512B759:

FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID = "{27C1D074-0E39-43b1-B00A-293DD512B759}"

I've checked the registry after installing the driver and the 27C1D074-0E39-43b1-B00A-293DD512B759 audioprocessingobject exists with name "Dolby PCEE4 LFX APO".

I've looked at EEL64H.dll strings and it says "Dolby PCEE4 HDMI LFX APO x64", so if I'm not missing anything, this looks correct.

Remove: FX_MODE_CLSID, keeping everything Dolby

I did that and reinstalled the driver. Unfortunatly still no Dolby Digital displayed in the Default Format list.

Edit: some GPU's might not like EFX, if that is the case use only SFX, MFX, and MFX as final.

Ok, I'll try that next.


EDIT: Didn't help.

Edit 2: Check with the file originator the portion of the APO you are trying use is unlocked-working.

Good idea. I'll check that after.
 
Last edited:
Joined
Dec 8, 2020
Messages
3,061 (2.02/day)
Location
United Kingdom
Fair enough, different strings, odd but no issue. I am out of generic reasons; I would need to have worked with the files to know anything more.

Sorry I was not able to provide a direct answer.

----

My appologies but I'm not sure I understand what you mean by "registration for a different system, not in the inf file" ?

This is file registration (data from file):

[PCEE4_x64.RegisterDlls]
11,,EEL64H.dll,1
11,,EEG64H.dll,1
11,,EED64H.dll,1
11,,EEP64H.dll,1
11,,EEA64H.dll,1

This is fully inf based (manual input):

HKCR,AudioEngine\AudioProcessingObjects\%FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID%, "FriendlyName", ,"Dolby PCEE4 LFX APO"
HKCR,AudioEngine\AudioProcessingObjects\%FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID%, "Copyright", ,%DolbyCopyRight%
HKCR,AudioEngine\AudioProcessingObjects\%FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID%, "MajorVersion", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID%, "MinorVersion", 0x00010001, 0
HKCR,AudioEngine\AudioProcessingObjects\%FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID%, "Flags", 0x00010001, 0x0000000c
HKCR,AudioEngine\AudioProcessingObjects\%FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID%, "MinInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID%, "MaxInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID%, "MinOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID%, "MaxOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID%, "MaxInstances", 0x00010001, 0xffffffff
HKCR,AudioEngine\AudioProcessingObjects\%FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID%, "NumAPOInterfaces", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_DOLBYAPO_PCEE4_HDMI_PREMIX_CLSID%, "APOInterface0", ,"{7F231F59-5CCD-47FF-982D-CEB1CBA9F410}"
 
Joined
Dec 26, 2019
Messages
342 (0.18/day)
Didn't read the sumup, but a regkey on the run it seems like. Reminds me of that time I got Realtek drivers running on ze GFX. UAD though..
 

paxkronos

New Member
Joined
Sep 30, 2022
Messages
9 (0.01/day)
So it seems PCEE4 may not work on Windows 10 according to some reports I've found on the internet. I'm not entirely certain though but would explain why it doesn't work here.

So in the hopes of looking for an alternate solution with less unknowns in order to diagnose the problem I've uninstalled everything, reverted to original drivers and then installed the generic Intel HDA driver from Optimus. The result:

  • "Dolby Digital" now shows up in the "Default Formats" list
  • The "Enhancements" tab disappeared.
  • The "Dolby" tab disappeared.
That's it. The computer is still sending stereo LPCM to the receiver when I play a 5.1 PCM (from a game for example). I'm starting to wondering if something is missing on the EDID that's needed to enable the "live" DD encoding functionality ?
As I've mentioned, Dolby Digital does show in the list of supported formats of the HDMI interface and if I play DD content through VLC (with passthru enabled), the receiver correctly receives DD audio.

o_O
 
Last edited:

paxkronos

New Member
Joined
Sep 30, 2022
Messages
9 (0.01/day)
props1.png


props2.png
props3.png

props4.png

props5.png


It's working with the Optimus drivers !!!! Here is the money shot when a game (outputting 5.1 PCM) is being run on the computer..

amp.png


The issue was indeed in the EDID. I had to override the speaker allocation from stereo to 5.1 in the EDID !

Now I'm wondering about the half-second lag I seem to experience in this configuration...
 
Joined
Dec 26, 2019
Messages
342 (0.18/day)
Nice, but I think you were just a regkey away in your previous setting. I've spent a lot of time with a friend finding every damn UI regkey there is. They can do wonders. So you should go and save/backup/write down all the active regkeys/fx keys for your now working endpoint. Then maybe do what you first did to get the Dolby tabs etc, and try to apply the regkeys from "this run". Just start by removing one and then re-adding it, to see which one that gives Dolby as output format. That's probably the one you missed on the "first run".
Cheers
 

paxkronos

New Member
Joined
Sep 30, 2022
Messages
9 (0.01/day)
Yeah @emanresu , absolutely I'll revisit the initial mod on latest Nvidia HDA I was working on .. If using compressed multichannel through HDMI is going to be a solution then I need to be able to mod the drivers myself as I don't see how I can be relying on third party mods.

It can be that the Nvidia HDA mod was working and I was just missing the EDID override (also needed to get the optimus drivers working). But since I wasn't even able to get "Dolby Digital" show in the default format list, I have my doubts.

What complicates things further is that it seems the Optimus drivers no longer use the PCEE4 DLLs (which is the APO I was modding with). This reinforces my suspicious that those DLLs no longer work on Windows 10...

What a mess !
 
Last edited:

paxkronos

New Member
Joined
Sep 30, 2022
Messages
9 (0.01/day)
I do have DTS audio support in the receiver. What's in your mind ?

The current solution I'm using uses the "Dolby Digital" APO which has too much of a lag, it's unusable for gaming.

It seems I need to get the Dolby Digital Live APO working.

Would the DTS APO be able to encode in realtime ?
 
Joined
Jan 31, 2010
Messages
5,596 (1.02/day)
Location
Gougeland (NZ)
System Name Cumquat 2021
Processor AMD RyZen R7 7800X3D
Motherboard Asus Strix X670E - E Gaming WIFI
Cooling Deep Cool LT720 + CM MasterGel Pro TP + Lian Li Uni Fan V2
Memory 32GB GSkill Trident Z5 Neo 6000
Video Card(s) PowerColor HellHound RX7800XT 2550cclk/2450mclk
Storage 1x Adata SX8200PRO NVMe 1TB gen3 x4 1X Samsung 980 Pro NVMe Gen 4 x4 1TB, 12TB of HDD Storage
Display(s) AOC 24G2 IPS 144Hz FreeSync Premium 1920x1080p
Case Lian Li O11D XL ROG edition
Audio Device(s) RX7800XT via HDMI + Pioneer VSX-531 amp Technics 100W 5.1 Speaker set
Power Supply EVGA 1000W G5 Gold
Mouse Logitech G502 Proteus Core Wired
Keyboard Logitech G915 Wireless
Software Windows 11 X64 PRO (build 24H2)
Benchmark Scores it sucks even more less now ;)
Hmm why not just bypass the TV and go GPU-HDMI-Receiver that's what I do and DTS plays fine if the content being played is DTS
 
Top