Отключить фильтры, которые использует MediaElement - PullRequest
0 голосов
/ 24 октября 2011

Можно ли отключить фильтры, которые MediaFlement WPF разрешено использовать?

Я отключаю определенные фильтры через IAMPluginControl , используя DirectShow.NET.

IAMPluginControl pluginControl
    = new DirectShowPluginControl() as IAMPluginControl;
if ( pluginControl == null )
{
    throw new InvalidOperationException(
        "Can't access DirectShow plugin filter control." );
}

bool disabled = pluginControl.SetDisabled(_directVobSub, true) == 0;
disabled &= pluginControl.SetDisabled(_directVobSubAutoloading, true) == 0;
disabled &= pluginControl.SetDisabled(_lavSplitter, true) == 0;

InitializeComponent();

Я делаю это в конструкторе элемента управления видео до вызова InitializeComponent(). pluginControl указывает, что фильтры на самом деле отключены, но это, похоже, не влияет на график MediaElement.

Важным примечанием является то, что я не могу видеть график в явном виде. Я только предполагаю, что график все еще использует DirectVobSub, поскольку это должно дать заметно различимый видимый результат.

1 Ответ

0 голосов
/ 24 октября 2011

Да , это возможно начиная с Windows 7.

Я не вижу никакой разницы, поскольку создается график, отличный от ожидаемого. DirectVobSub (автозагрузка) сохранялась при отображении на графике, но отключение любых других фильтров работает.

Я не нашел другого способа, кроме как отключить DirectVobSub через реестр.

P.s .: «Эффект», который я искал, - это возможность динамически изменять скорость воспроизведения видео без видимых задержек после изменения скорости. Использование DirectVobSub на графике, по-видимому, не позволяет сделать это возможным.


В качестве ссылки для старых комментариев:

Прежде чем я подумал, что, установив AVI Splitter в качестве предпочтительного фильтра AVI, все заработало как положено, и отключение DirectVobSub не требовалось. Реальная причина, по которой это работало в тот момент, была в том, что я собирал x64 вместо x86, и DirectVobSub по этой причине не вмешивался.

...