DirectShow相关
手里的WinCE系统及软件平台对于媒体文件的播放(mp3等)采用的是软件解码,使用到了
DirectShow对这个东西不了解,想知道当DirectShow播放mp3的时候,解码完毕数据(PCM数据吧)
的播放是否也调用驱动层面的WAV_***的接口,只不过这种调用是隐式的(DirectShow内部调用),
如果是这样的话,想在WAV_***被调用前做些前处理,是否可行、如何做?
[解决办法]
可行啊......会先wav_open,open不代表播放,在这里可以做
[解决办法]
哦,你说是要是先同时播放两个媒体文件的那种啊,这个有一个东西,叫mixer,需要用到wav驱动里面的mixer
[解决办法]
WAV_Write 本身没有 LZ 想要的功能,想要的话可能自己代码实现:例如获取应用进程的 ID 等来判断是那个应用调用的。
[解决办法]
你是完全解码完毕后,采去播放音频数据的吗?
其实你就是想区分WODM_WRITE是那个APP调用的,是吧?
要知道是那个APP,可以通过WODM_OPEN来获知,这个时候会传递一个句柄给上层应用,不管是后面用到的任何WAV函数,都会需要这个句柄的,但是你上层应用估计是不会知道这个句柄的吧。
不过你可以通过waveinmessage自己来传递一个识别符号下来。再对应上句柄,应该就可以了
不过dshow封装了这么多,wav这些函数都是一些很裸的函数,APP估计很难拿到句柄吧