PDA

View Full Version : All about audio stream switchers in KMP


ihanxiao
05-23-2007, 11:35 PM
Uses Haali Splitter 1.7.121.0 OR 1.7.152.18(.TS)

WMVideo Decoder (VC1 Encoded)

Cyberlink Audio&Sonic Audio(DTS 5.1 1536K&DDPlus 1536K)

It can switch from DTS to DD+,but an Error occurs when switching back.
Then no sound.

Although Reopening the video will fix everything,it is still weird being unable to switch back.

mouse
05-24-2007, 12:43 AM
As you may know, the problem is not KMP but haali's splitter becaues the switcher belongs to haali's splitter.

ihanxiao
05-25-2007, 04:48 AM
As you may know, the problem is not KMP but haali's splitter becaues the switcher belongs to haali's splitter.
But I did choose "KMP Copy Transform Stream Switcher" in "Multi-Audio Streams".

Do you mean that the "KMP Copy Transform……" manages only the "copy",while Haali manages the "switch"?

z
05-25-2007, 09:17 AM
It doesn't care if you are using haali's splitter.

The source filters integrated with stream switchers will disable KMP's stream switcher. Haali's splitters have its own (subtitle/audio) stream switchers within it. KMP splitters also have the similar structure. The independent stream switchers will be available only with the splitters (eg. most of gabest's splitters or default splitters provided by directx) which does not contain any stream switchers.

z
05-26-2007, 01:50 PM
By the way, the problem is not in the haali's splitter. Actually it is not a bug or problem, but a normal behavior of directshow. First of all, KMP has a control how to make a filtergraph (with haali's splitter and the specified DTS decoder). However, the control while switching audio stream belongs to the haali's splitter, more exactly to the priority of the filters as haali's splitter do the job dynamically following the general rule of directshow. In other words, the filtergraph of audio stream is partially recreated. (1st, 3rd screenshots below)

If the switcher is not in the source filter like gabest's one, all the audio streams are connected to each audio decoders beforehand while starting playback. (2nd, 4th, 5th screenshots below)

The reason why KMP loses the control while switching audio stream with haali's splitter is that the switcher is not controllable. It is a matter of course as the operation is controlled by haali's own switcher. KMP just passes the switching signal to haali's splitter. When switching audio streams, haali's splitter might try to find a suitable DD+ decoder. If the dts decoder being used has an ability to decode DD+ audio stream, it might not be changed to others. The reason of not switching back from sonic decoder to cyberlink audio decoder is that the switched sonic decoder has a MEDIATYPE of DTS. (And why no sound with sonic decoder? It may not correctly decode the dts stream in ts.)

If you want to make it possible to correctly switch back to the cyberlink decoder (DTS) with haali's splitter,

1. Manually remove the MEDIATYPE of DTS from the registry of sonic decoder. (it must be registered to system first.)
2. The DTS decoder (cyberlink) must have the highest priority.

The above solution is not so good and does not guarantee the stable operation. The problems will be solved if cyberlink audio decoder supports dd+ decoding or sonic audio decoder correctly supports dts decoding in ts.


For easy switching, it would be better to have an option to specify the each DTS/DD+ decoder to use in the properties of haali's splitter. Remember that it can crash or slow down the player if the decoder is not working well while switching audio stream. The stability depends on the decoder itself. For example, the filtergraph in the 4th screenshot is not stable due to the sonic decoder. It makes the palyer crashed when stopping the playback.



The following screenhots are the switchers available in KMP.

1. KMP's MKV Switcher (built in KMP's mkv splitter)
2. KMP's audio stream switcher (gabest's mkv source + KMP's copy/inplace audio stream switcher)
3. Haali's switcher (built in Haali's mkv splitter)
4. Gabest's switcher (gabest's mkv source + gabest's audio stream switcher)
5. Morgan stream switcher

ihanxiao
05-26-2007, 08:58 PM
Very Clear Explanation。

Firstly,Unregister DTS for Sonic,Secondly Give Cyberlink the Highest Priority.

PS:A modified version of Gabest`s splitter supports both DD+&DTS,perhaps it can solve the problem.

ihanxiao
05-26-2007, 11:40 PM
To my surprise,Today Sonic realeased 4.2.2,which supports 6Ch DTS in TS.

Just as we wanted.Now the "no sound" is solved.

Switching from DD+ to DTS uses Sonic,not Cyberlink. Just as you said.
But this no longer annoys anyone.