这是很久以前的东西,如果有不准确的地方还请见谅
DVD的解码
本节主要包括DirectShow属性设置和特定DVD及扩展解码所用的接口描述,此外还有支持通用 DirectShow 过滤器接口的解码器及其管脚属性描述。
本节主要包含以下主题:
l 解码器音量控制
l Windows 支持的DVD区码变换
以及:
l DVD Karaoke 属性设置
l DVD 复制保护属性设置
l DVD 子图属性设置
l 管脚属性设置
l IKsPropertySet 接口
l IVideoFrameStep 接口(硬件解码器专用)
l IVPConfig 接口(硬件解码器专用)
1、音量控制
应用程序通过iBasicAudio接口管理音量控制,而iBasicAudio接口是由KSProxy进行管理,所以为了使解码器处理这些命令,就必须在KSPPROPSETID_Wave属性设置中增加一些注册键。下来我们就来创建这些新的驱动注册键:
HKLM/SYSTEM/
CurrentControlSet/Control
DeviceClasses
(decoder guid, eg 2721AE....)
(Pnp id, eg ##?#VDGENDEV#...)
#GLOBAL
Device Parameters
CLSID REG_SZ {17CCA...}
FriendlyName REG_SZ WDM DVD Driver
Interfaces <--- create this key
{b9f8ac3e-0f71-11d2-b72c-00c04fb6bd3d} <-- also create this key, it is not a value)
MediaInterfaces
{b9f8ac3e-0f71-11d2-b72c-00c04fb6bd3d} <-- create this key
(default) REG_SZ 'KsProxy IBasicAudio handler' <-- set this value
IID REG_SZ 56 a8 68 b3 0a d4 11 ce b0 3a 00 20 af 0b a7 70 <-- create this string value
实现音量控制,驱动程序必需支持KSPROPSETID_Wave及KsProperty.Id=KSPROPERTY_WAVE_VOLUME。该属性是驱动程序通过IksPropertySet::Get和IksPropertySet::Set方法进行控制的。左、右音频控制的音量大小是0x0000到0xffff的线性值 。