Skip to content

About

Version-locked utility for enabling retained flat 7.1 Atmos paths in matching DEE/DME binaries

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

Enable Atmos 7.1

English | 简体中文

Enable Atmos 7.1 is a small, version-locked Rust utility that restores the retained flat-7.1 Atmos path in two tested Windows encoder binaries:

  • Dolby Encoding Engine 5.2.1-5994839 dee_audio_filter_ddp_atmos.dll;
  • Dolby Media Encoder 3.7.0 dee_ddpjoc_encoder.exe, whose bundled backend identifies itself as DEE 5.7.2.aec4fa9c-master.

The utility chooses the profile from the input's complete SHA-256, not its file name. The primary release is a native Windows x64 command-line executable and does not require Python.

This repository contains no Dolby binaries, engine payloads, or license files. It only records the patching logic, expected bytes, known hashes, and an independent Python reference implementation.

Why the patch exists

In this exact DEE 5.2.1 build, the public Blu-ray Atmos configuration is:

<encoding_backend>atmosprocessor</encoding_backend>
<encoder_mode>bluray</encoder_mode>

That route can produce 5.1.2 Atmos, but it provides no XML or command-line selection for a flat L R C LFE Ls Rs Lb Rb JOC presentation. This is more than a missing layout label: the current public workflow actually encodes the extra pair as top channels.

Flat 7.1 Atmos nevertheless existed historically. A 2016 Dolby Atmos Blu-ray demo disc contains an E-AC-3 JOC presentation reported as L R C LFE Ls Rs Lb Rb.

The Dolby Professional Support thread Issues with channel layout when encoding Dolby Atmos documents the same discrepancy in current Dolby Media Encoder versions:

  • an Atmos Master encoded as Dolby Digital Plus for Blu-ray becomes the 5.X + 2 layout with a top pair;
  • the historical Dolby demo disc contains the requested 7.X JOC layout;
  • Dolby staff explain that an Atmos Master input will always use the top-channel organization in the current workflow, with the decoder rendering the rear surrounds from JOC/OAMD metadata;
  • the separately mentioned Blu-ray 7.1 option uses channel-based input, so it must not be treated as proof that current tools can encode flat 7.1 Atmos.

The patch therefore asks a specific question: was the legacy flat-7.1 JOC encoder path deleted, or merely made unreachable from the public interface?

Static analysis shows that, after XML selects Blu-ray, the matching DEE dee_audio_filter_ddp_atmos.dll constructs a private layout integer. This repository calls it the internal layout mode; it is not the XML encoder_mode. The wrapper writes mode 19, while the core still implements mode 21 and the Blu-ray parameter whitelist already accepts both values. Changing the two wrapper immediates to 21 restores that retained native flat 7.1 branch.

DME 3.7.0 statically links a later form of the same Atmos encoder into dee_ddpjoc_encoder.exe. Its Blu-ray path also writes mode 19 at two parameter construction points and retains the mode-21 branch. The DME profile applies the equivalent two-byte change directly to that EXE.

Supported binaries and patches

Profile Matching original SHA-256 Mode 21 Mode 28
DEE 5.2.1-5994839 Atmos DLL 3d66bcec...e95d2 Yes Yes
DME 3.7.0 / bundled DEE 5.7.2 encoder EXE 4b4c624d...c8a7 Yes Rejected; no verified patch

Full hashes are recorded in KNOWN_HASHES.md.

Internal mode Applicable profile Result observed in a real encode Extra whitelist patch
21 DEE and DME Flat 7.1 Atmos, dependent chanmap=0x1A00 No
28 DEE only 5.1.2 Top Side Atmos, dependent chanmap=0x1804 Yes

Windows executable

Tagged GitHub Releases provide enable-atmos71-windows-x64.exe and SHA256SUMS.txt. The executable is built directly from the tagged Rust source by GitHub Actions; it is not packed or compressed and contains no Dolby software.

.\enable-atmos71-windows-x64.exe `
  dee_audio_filter_ddp_atmos.dll `
  dee_audio_filter_ddp_atmos.mode21.dll `
  21

For the matching DME encoder EXE:

.\enable-atmos71-windows-x64.exe `
  dee_ddpjoc_encoder.exe `
  dee_ddpjoc_encoder.mode21.exe `
  21

For the DEE mode-28 probe, change the DLL output name and final argument to 28. Mode 28 is not registered for DME and is rejected before any output is written. Release executables are currently unsigned, so Windows may still show an unknown-publisher warning. Verify the downloaded file against SHA256SUMS.txt.

Running the patched DME encoder

DME's public CLI help omits the Blu-ray submode. It must be selected manually by prefixing the encoder settings with bluray::

.\dee_ddpjoc_encoder.mode21.exe `
  -l license.lic `
  --input-format atmos_mezz `
  --input input.wav `
  --output output.ec3 `
  --start 10 `
  --duration 5 `
  --time-base file_position `
  --data-rate 1664 `
  --encoder bluray:preferred_downmix_mode=loro `
  --cc 0

Without bluray:, DME takes its Online Media/Pro route and rejects 1664 kb/s before reaching the layout selector. The hidden bluray: route and this utility's internal mode 21 are separate choices; both are required for the tested flat-7.1 Blu-ray Atmos result.

Build from source

cargo build --release --locked
.\target\release\enable-atmos71.exe `
  dee_audio_filter_ddp_atmos.dll `
  dee_audio_filter_ddp_atmos.mode21.dll `
  21

Rust 1.85 or newer is required. Run the full validation suite with:

cargo fmt --all --check
cargo clippy --locked --all-targets -- -D warnings
cargo test --locked --all-targets

enable_atmos71_reference.py remains in the repository as an auditable reference implementation. It is not bundled into the Windows executable. Both implementations enforce the same known hashes and byte-level checks.

The utility refuses to:

  • accept a file whose SHA-256 differs from both known originals;
  • patch an unknown instruction sequence or whitelist;
  • produce an output whose SHA-256 differs from the known result;
  • overwrite the input or an existing output file;
  • accept an internal mode other than 21 or 28;
  • apply mode 28 to the DME profile.

Exact changes

DEE 5.2.1 — Mode 21

Both instructions change from mov eax, 19 to mov eax, 21.

Parameter record Instruction file offset Original Patched
ID 4 1556695 (0x17C0D7) B8 13 00 00 00 B8 15 00 00 00
ID 11 1559016 (0x17C9E8) B8 13 00 00 00 B8 15 00 00 00

No whitelist change is needed because the original Blu-ray list is 19, 21.

DEE 5.2.1 — Mode 28

The same two instructions change from 19 to 28. In addition, the second Blu-ray whitelist entry at file offset 8530612 changes from 21 to 28.

DME 3.7.0 / bundled DEE 5.7.2 — Mode 21

The two corresponding instructions in dee_ddpjoc_encoder.exe also change from mov eax, 19 to mov eax, 21.

Parameter record Instruction file offset Original Patched
ID 4 2526871 (0x268E97) B8 13 00 00 00 B8 15 00 00 00
ID 11 2529192 (0x2697A8) B8 13 00 00 00 B8 15 00 00 00

No DME whitelist change is needed for mode 21.

Native 7.1 versus a 5.1.2 chanmap spoof

Mode 21 makes the matching DEE or DME encoder enter its native flat-7.1 branch before encoding. It is not equivalent to rewriting a completed 5.1.2 bitstream.

A 5.1.2 stream has the same total channel count and can be made to signal a flat 7.1 layout by rewriting only its dependent chanmap. That operation is not a conforming conversion because the original EMDF/JOC metadata remains 5.1.2-oriented. In Dolby Reference Player testing, the spoofed stream plays through the 5.1 target path but reports an error for targets above 5.1.

The current hypothesis is that the 5.1 path does not consume the conflicting expanded-layout metadata, while 7.1 and higher render paths do. This is an inference from playback behavior, not a proven description of DRP internals.

Dolby Surround EX signaling

This patch does not cause either encoder to set the Dolby Surround EX (dsurexmod) flag automatically. If a workflow only needs inspection software to display Dolby Surround EX, the completed bitstream can be post-processed separately to set that flag. ETSI TS 102 366 V1.4.1, section D.1.3.8 defines dsurexmod as information not used by the decoder, although other parts of the reproduction equipment may use it. Changing the flag therefore should not alter core AC-3/E-AC-3 decoding, but identical behavior from every downstream device is not guaranteed.

“UDC validation” here refers specifically to an empirical test with the Dolby decoder component bundled in Dolby Reference Player. The test drove DRP's dlbac3dec path, which loads libdlb_udclib, while a probe observed its dlb_ddpi_udc_* status values. The EX-modified sample produced no state 2 or EVO error; its single state 1 occurred while the decoder was finishing the stream. This is an additional decoder-acceptance check, not a public Dolby conformance test or certification. The acronym is left unexpanded because no authoritative public expansion was found. EX post-processing itself remains outside the scope of this utility.

Safety and distribution

All offsets and hashes are specific to the two exact files listed above. Do not weaken the hash checks or apply either profile's offsets to another DLL or EXE.

Keep proprietary engine files and licenses out of this repository. The .gitignore intentionally blocks their common extensions.

The Windows release workflow uses an unpacked native MSVC executable. Pushing a v* tag runs the tests, builds the binary on a GitHub-hosted Windows runner, generates its SHA-256 manifest, and attaches both files to a GitHub Release.

License

The original code and documentation in this repository are released under the MIT License.

This license applies only to repository-authored material. It grants no rights to Dolby software, binaries, licenses, patents, or trademarks. This project is not affiliated with or endorsed by Dolby Laboratories.

About

Version-locked utility for enabling retained flat 7.1 Atmos paths in matching DEE/DME binaries

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages