Add experimental JOC binaural mode controls
Native builds / linux-x64 (push) Failing after 14s
Native builds / macos-arm64 (push) Has been cancelled
Native builds / macos-x64 (push) Has been cancelled
Native builds / windows-x64 (push) Has been cancelled
Native builds / Publish GitHub Release (push) Has been cancelled

This commit is contained in:
TheM14
2026-09-03 02:59:45 +08:00
parent b115283d84
commit 79bb8b08ad
5 changed files with 66 additions and 8 deletions
+12 -1
View File
@@ -20,6 +20,7 @@ if str(SOURCE_DIR) not in sys.path:
import numpy as np
import adm_assemble
import adm_atmos
from adm_validate import validate
from metadata import DirectPayloadIndex, PayloadIndex, write_summary
import oamd_tracks
@@ -288,6 +289,11 @@ def build_parser():
parser.add_argument("--duration", type=float, help="只处理开头指定秒数")
parser.add_argument("--object-delay-samples", type=int, default=1473,
help="可选的对象 PCM/OAMD 时间补偿,默认 1473 samples")
parser.add_argument(
"--joc-binaural-mode", choices=tuple(adm_atmos.JOC_BINAURAL_MODES),
default=adm_atmos.JOC_BINAURAL_MODE_DEFAULT,
help="实验性 ADM DBMD JOC 对象双耳模式:off=0、near=1、far=2、mid=3、"
"unspecified=4(默认);不改变 PCM 或直接扬声器渲染")
parser.add_argument("--trajectory-mode", choices=("compact", "dense64"), default="compact",
help="对象轨迹表示;compact 用长线性插值压缩 AXML,dense64 保留逐 64-sample 块")
parser.add_argument("--ffmpeg", default=os.environ.get("FFMPEG", "ffmpeg"))
@@ -431,7 +437,9 @@ def main(argv=None):
info = (f"speaker layout={speaker_name}, format={speaker_actual_format}, "
f"peak={speaker_clip_info['peak']:.9g}")
else:
master = adm_assemble.StreamingMaster(output, duration_sec, rate=RATE)
master = adm_assemble.StreamingMaster(
output, duration_sec, rate=RATE,
joc_binaural_mode=adm_atmos.JOC_BINAURAL_MODES[args.joc_binaural_mode])
try:
render_seconds, renderer_backend, render_breakdown = timed_call(
timings, "render_and_stream", variant_call,
@@ -474,6 +482,9 @@ def main(argv=None):
"gain_float32": float(gain),
"object_delay_samples": None if speaker_mode else args.object_delay_samples,
"trajectory_mode": None if speaker_mode else args.trajectory_mode,
"joc_binaural_mode": None if speaker_mode else args.joc_binaural_mode,
"joc_binaural_mode_value": (None if speaker_mode else
adm_atmos.JOC_BINAURAL_MODES[args.joc_binaural_mode]),
"render_seconds": render_seconds,
"render_breakdown": render_breakdown,
"renderer_backend": renderer_backend,