[Matroska-devel] Haali Splitter Chapter Issue

DigiInfo digi.info at gmx.de
Thu Mar 1 11:31:42 CET 2012

When trying to implement MKV chapter support by using IAMExtendedSeeking I've
encountered the following issue:

IAMExtendedSeeking.get_CurrentMarker returns wrong results when the filtergraph
is paused. The returned chapter number increases over time though the playback
position remains unchanged.

Haali Splitter version:

Test file: Matrix.Reloaded.Trailer-RV9-Karl640x432_HE_AAC_subtitled_chapters.mkv
from the Matroska site.

Steps to reproduce: 

1) Play the file in GraphEdit or GraphStudio

2) Pause playback and wait some time

3) Select a chapter in the Haali Splitter tray menu. The playback position is
set correctly, but afterwards the menu marks the wrong chapter as current
chapter. If you wait long enough, the last chapter 4 will always be marked, no
matter which chapter has been selected before.

The issue is probably caused by the CBaseFilter.StreamTime method from the MS
DirectShow base class. It returns a continuously increasing stream time in pause
state, though it is supposed to remain the same, thus letting a filter behave in
pause state as if the filtergraph was still running (see above...).

Working around this everlasting MS bug basically requires overriding the Pause
method in the derived filter class, calling StreamTime on Run -> Pause state
transitions, storing the return value in a REFERENCETIME class member and using
it as stream time in pause state (maybe in an overridden StreamTime method).

More information about the Matroska-devel mailing list