2015-02-10 4 views
1

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

rate = 0.5; 
mediaSeek.SetRate(rate); 
mediaSeek.GetRate(out rate); 
// rate = 0.5. 

Я сделал это в другом графике, что я подключен фильтры вручную, и она работала отлично, но на этот раз я поставил граф вверх, как так:

filterGraph = graph as IFilterGraph2; 

if (filterGraph != null) 
{ 
    IBaseFilter sourceFilter; 
    filterGraph.AddSourceFilter(source, source, out sourceFilter); 

    IEnumPins pinEnum; 
    sourceFilter.EnumPins(out pinEnum); 

    var fetched = IntPtr.Zero; 
    IPin[] pins = { null }; 

    while (pinEnum.Next(pins.Length, pins, fetched) == 0) 
    { 
     filterGraph.RenderEx(pins[0], AMRenderExFlags.RenderToExistingRenderers, IntPtr.Zero); 
     Marshal.ReleaseComObject(pins[0]); 
    } 

    Marshal.ReleaseComObject(pinEnum); 
    Marshal.ReleaseComObject(sourceFilter); 
} 

ответ

1

SetRate, а также другие отдельные аспекты позиционирование и IMediaSeeking/IMediaPosition зависит от того, как графа фильтра и отдельные фильтры обрабатывают обработку вместе.

Менеджер графического графика принимает ваши запросы и распределяет между фильтрами, участвующими в графике, делая его определенным образом: rednerers берут запросы от диспетчера графов фильтра, а затем они отвечают за пересылку этого вверх по течению через другие фильтры. В принципе, любой фильтр на графике, который неправильно обрабатывает запросы, может повредить все.

Таким образом, ваш симптом сильно зависит от фильтров, участвующих в вашем графике. Вполне вероятно, что один или несколько относится:

  • некоторые фильтры не пересылает, что правильно
  • демультиплексора фильтр обрабатывает изменениям скорости неправильно
  • обработки полоски метки время, что делает его не в состоянии планировать полезную нагрузку презентацию надлежащим образом