Skip to content

feat: add HDPS audio volume controls - #37

Open
jkdevito wants to merge 5 commits into
mainfrom
feat/hdps-volume-controls
Open

feat: add HDPS audio volume controls#37
jkdevito wants to merge 5 commits into
mainfrom
feat/hdps-volume-controls

Conversation

@jkdevito

Copy link
Copy Markdown
Contributor

Summary

  • Add registered volume controls for HD-PS HDMI/DM Lite output mixers and analog auxiliary mixers.
  • Expose controls through IBasicVolumeWithFeedback for Mobile Control discovery.
  • Use stable output-specific device keys and include processor VTable compatibility fixes.

Testing

  • dotnet clean && dotnet build

Reviewer Notes

  • Controls are registered with DeviceManager during HDPS controller construction.

@jkdevito
jkdevito requested a lite review from Copilot August 14, 2026 22:58
@jkdevito jkdevito self-assigned this Aug 14, 2026
@jkdevito
jkdevito requested a review from mhengeli August 14, 2026 22:58

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds per-output audio volume control devices for HD-PS chassis outputs (HDMI/DM Lite output mixers) and analog auxiliary mixers, exposing them via IBasicVolumeWithFeedback and registering them with DeviceManager for downstream discovery (e.g., Mobile Control).

Changes:

  • Added HdPsAudioOutputController devices for outputs with an available output.Mixer, keyed per-output and registered in DeviceManager.
  • Added HdPsAnalogAuxOutputController devices for each _chassis.AnalogAuxiliaryMixer, keyed per-mixer and registered in DeviceManager.
  • Updated _chassis_OutputChange to fire volume/mute feedback updates for registered output volume controllers.
Suppressed comments (1)

src/Chassis/HdPsXxxController.cs:655

  • VolumeDown uses integer division when scaling ramp time (... / 65535), which results in 0 for almost all current volume levels and makes CreateRamp effectively instantaneous. Use floating-point division (and the feedback value) so the ramp time scales correctly.
		public void VolumeDown(bool pressRelease)
		{
			if (pressRelease)
				_mixer.Volume.CreateRamp(0, (uint)(400 * (_mixer.Volume.UShortValue / 65535)));
			else
				_mixer.Volume.StopRamp();

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/Chassis/HdPsXxxController.cs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants