Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 29341-16-11:2011定义了RenderingControl:2服务,这是UPnP音视频架构中负责管理渲染媒体内容呈现参数的组件。AVTransport服务控制什么在播放以及如何在时间上推进,而RenderingControl服务控制内容如何呈现给用户——音量级别、音频通道平衡、视频亮度和对比度、色彩饱和度、锐度以及其他渲染属性。该服务对于在基于UPnP的媒体系统中提供完整用户体验至关重要,从家庭影院到多房间音频设置和数字标牌网络。
InstanceID。每个实例代表一个独立的音频或视频输出管道。在多房间音频系统中,每个房间可以有自己的实例,允许独立控制每个区域的音量和音调。该服务的正式标识为urn:schemas-upnp-org:service:RenderingControl:2。它引入了通道的概念,每个实例可以有多个音频通道(Master、LF、RF、CF、LFE、LS、RS等)和视频通道(Master)。Master通道控制整体输出级别,而单个音频通道允许在环绕声配置中进行精细控制。每个通道暴露自己的一组状态变量,用于音量、静音、平衡和其他参数。
版本2相比版本1增加了重要能力,包括:用于保存和调用的预设管理、对动态通道配置的支持、增强的视频处理控制和用于能力发现的GetFeatureList()动作。该服务还引入了SelectedObjectID状态变量,允许控制点在不同设备的RenderingControl实例之间传递渲染状态,实现同步的多房间播放配置。
RenderingControl:2服务提供了管理音频呈现的全面操作集。SetVolume()动作接受InstanceID、Channel和DesiredVolume(整数,0-100)。GetVolume()动作返回当前音量级别。类似地,SetMute()和GetMute()控制静音状态。SetBalance()动作调整左右音频平衡(整数范围,通常-100到+100,0为中心)。对于多通道系统,SetVolumeDB()允许以分贝单位而不是抽象的0-100范围设置音量,为专业音频应用提供更精确的控制。
| 动作 | 音频参数 | 视频参数 | 描述 |
|---|---|---|---|
| SetVolume / GetVolume | InstanceID, Channel, Volume (0-100) | InstanceID, Channel, Volume (0-100) | 设置或获取音视频输出级别 |
| SetMute / GetMute | InstanceID, Channel, Mute (bool) | – | 静音或取消静音音频通道 |
| SetBalance / GetBalance | InstanceID, Channel, Balance (-100到+100) | – | 调整左右音频平衡 |
| SetVolumeDB / GetVolumeDB | InstanceID, Channel, VolumeDB (dB) | – | 以分贝单位设置音量 |
| SetBrightness / GetBrightness | – | InstanceID, Brightness (0-100) | 调整视频亮度级别 |
| SetContrast / GetContrast | – | InstanceID, Contrast (0-100) | 调整视频对比度级别 |
| SetSharpness / GetSharpness | – | InstanceID, Sharpness (0-100) | 调整视频锐度 |
| SetColorTemperature / GetColorTemperature | – | InstanceID, ColorTemp (0-100) | 调整色温 |
| ListPresets / SelectPreset | InstanceID | InstanceID | 管理渲染预设 |
RenderingControl:2中的视频通道管理涵盖了广泛的参数。SetBrightness()(设置亮度)、SetContrast()(设置对比度)、SetSharpness()(设置锐度)、SetColorTemperature()(设置色温)和SetGamma()(设置伽马值)提供了对视频处理管道的控制。每个参数表示为0-100范围内的整数,其中50通常代表默认或”正常”值。SetAspectRatio()动作控制视频内容如何适配显示器——值可以包括4:3、16:9、Original或厂商特定模式。该服务还支持SetNoiseReduction()(降噪,0-100)用于控制噪声滤波强度,以及SetVideoQuality()用于整体质量模式选择。
版本2中的通道配置是动态的。当控制点订阅LastChange事件变量时,它会收到包含当前可用通道集的通知。例如,当播放从立体声音乐曲目切换到5.1环绕声电影时,服务通知控制点新的通道配置。控制点在收到此类事件后应重新查询通道特定的状态变量,以向用户呈现准确的渲染控制。这种动态发现模型消除了在设备描述中进行静态通道枚举的需要。
版本2引入了正式的预设管理子系统。预设是具有名称的渲染参数值集合,可以保存和调用。ListPresets()动作返回可用预设名称的列表。SelectPreset()动作通过单次调用应用预设,设置所有关联的渲染参数。这比为每个参数发送单独的动作高效得多——一个预设通常配置8-15个跨音频和视频通道的参数。SetPreset()动作将当前渲染参数值保存为新的命名预设。
| 预设名称 | 典型音频设置 | 典型视频设置 | 使用场景 |
|---|---|---|---|
| Movie(电影) | 音量:60, 平衡:0, 静音:否 | 亮度:55, 对比度:65, 锐度:60, 色温:65, 降噪:50 | 电影内容,增强对比度 |
| Music(音乐) | 音量:50, 平衡:0, 静音:否, 低音:+2, 高音:+2 | 亮度:50, 对比度:50, 锐度:40 | 音乐播放,自然声音轮廓 |
| Game(游戏) | 音量:55, 平衡:0, 静音:否 | 亮度:60, 对比度:70, 锐度:70, 色温:55, 降噪:30 | 游戏,高对比度和低延迟 |
| News(新闻) | 音量:65, 平衡:0, 静音:否, 低音:-2, 高音:+4 | 亮度:50, 对比度:50, 锐度:50 | 语音清晰度优先,新闻和脱口秀 |
RenderingControl:2中的事件模型很复杂。LastChange状态变量将所有渲染参数更改聚合到结构化的XML事件负载中。每个通道报告其自己的音量、静音和平衡状态。视频参数在Master通道下报告。事件负载结构使用格式:<Event><InstanceID>...</InstanceID></Event>,每个修改的参数带有子元素。控制点应将快速的参数变化合并为单个UI更新以避免过多的屏幕重绘。服务还应在网络层合并事件——标准建议事件通知使用200ms的去抖窗口。
实现健壮的RenderingControl:2服务需要深入理解服务层与底层硬件之间的关系。从UPnP 0-100整数标度到实际硬件衰减的音量映射必须精心设计。大多数音频DAC和放大器使用对数标度来实现音量感知。常见的映射函数是使用指数公式,在典型40dB范围的放大器中提供良好的人声响度感知近似。
SetVolumeDB()动作提供以分贝为单位的直接控制,这对于专业AV安装和多房间同步很重要。实现GetVolumeDBRange()时,返回实际硬件限制——典型消费设备支持-80dB到+0dB的音频范围。多房间音频系统应在房间之间实现音量偏移校准:控制点可以通过应用考虑放大器增益、扬声器灵敏度和房间声学差异的每房间音量偏移,在不同房间设置一致的”聆听级别”。
视频参数实现带来了额外的挑战,因为显示硬件差异很大。亮度(0-100)和对比度(0-100)到硬件寄存器的映射因面板技术而异。服务实现应通过将UPnP参数范围校准到显示器的原生能力来抽象这些差异。例如,OLED显示器可以在整个0-100范围内以简单的线性映射实现舒适的全屏亮度,而LCD投影仪由于其光源特性可能只在30-85范围内实现有用的亮度变化。服务应将值限制在可实现范围内,并通过事件机制报告实际应用的值。