Пользовательский распределитель не работает в Windows 7 - PullRequest
1 голос
/ 11 июля 2011

Я пишу программу, используя собственный распределитель, который позволяет отображать мой видеоизображение DirectShow в виде текстуры DirectX. Поскольку я запускаю свою программу в Windows 7, вместо моего видео отображается белая рамка.

Если я настраиваю фильтр VMR9 для отображения на элементе управления, он работает нормально.

Кто-нибудь знает, как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 10 декабря 2012

Я сам нашел решение, используя Панель управления DirectX , чтобы включить Режим отладки . Я понял, что я не делал все в правильном порядке при настройке распределителя. Вот часть моего кода:

filterConfig.SetRenderingMode(VMR9Mode.Renderless);
// QueryInterface on the VMR-9 filter for the IVMRSurfaceAllocatorNotify9 interface.
IVMRSurfaceAllocatorNotify9 san = (IVMRSurfaceAllocatorNotify9)_vmr9;
// Call the IVMRSurfaceAllocatorNotify9::AdviseSurfaceAllocator method and pass in a pointer to your allocator-presenter's IVMRSurfaceAllocator9 method.
san.AdviseSurfaceAllocator(IntPtr.Zero, allocator);
// Call your allocator-presenter's IVMRSurfaceAllocator9::AdviseNotify method and pass in a pointer to the VMR-9 filter's IVMRSurfaceAllocatorNotify9 interface.
allocator.AdviseNotify(san);
// Change mixer prefs AFTER settings the allocator in order to support YUV mixing (best performance)
IVMRMixerControl9 mixerControl = (IVMRMixerControl9)_vmr9;
VMR9MixerPrefs prefs;
mixerControl.GetMixingPrefs(out prefs);
prefs &= ~VMR9MixerPrefs.RenderTargetMask;
prefs |= VMR9MixerPrefs.RenderTargetYUV;
mixerControl.SetMixingPrefs(prefs);
0 голосов
/ 29 июля 2011

DirectShow с настраиваемым Allocator Presenter в vmr9, работает в Windows 7. Возможно, в вашем коде что-то не работает. Попробуйте очистить рамку, прежде чем рисовать другим цветом, например красным. Если вы видите красный, это означает, что вы не правильно рисуете рамку. Если вы этого не сделаете, значит, вы что-то сделали неправильно.

Я бы посоветовал вам проверить ваш механизм блокировки, потому что ваш пользовательский AP доступен из 3-5 потоков одновременно.

...