Q:

Controlling DirectVobSub filter programmatically

I have a DirectShow-based player, that uses DirectVobSub to show subtitles.
I want to have shortcuts to move the subtitles sync up and down.
This is possible in the VobSub dialogue, but no shortcuts.
I use Visual C++, and I am at the point where I have IBaseFilter pointer to the VobSub filter, and I guess I have to somehow invoke that interface. Any ideas?

A:

You should be able to get IDirectVobSub and alike interfaces using regular IUnknown::QueryInterface from IBaseFilter.
To get the definition of these interfaces you, generally, need to check the source used to build the filter in first place (you got it from somewhere, right?). Although a copy from another repo should work out too.
https://github.com/Fluffiest/mpc-hc/blob/cfd18b62248c0e97f5626d94539d60d5361cc5a1/src/filters/transform/VSFilter/IDirectVobSub.h#L30
    interface __declspec(uuid("EBE1FB08-3957-47ca-AF13-5827E5442E56"))
IDirectVobSub :
    public IUnknown
    {
        STDMETHOD(get_FileName) (THIS_
                                 WCHAR* fn  // fn should point to a buffer allocated to at least the length of MAX_PATH (=260)
                                ) PURE;

        STDMETHOD(put_FileName) (THIS_
                                 WCHAR* fn
                                ) PURE;

