2009-01-09 7 views

Répondre

2

Le problème de plantage de SelectAtPosition() lorsque le mode sans rendu est utilisé peut être résolu en implémentant l'interface IVMRWindowlessControl9 dans votre allocateur personnalisé.

  1. En plus de IVMRSurfaceAllocator9 & IVMRImagePresenter9, mettre en œuvre IMRWindowlessControl9 aussi! classe CAllocator: IVMRSurfaceAllocator9 publique, IVMRImagePresenter9, IVMRWindowlessControl9

  2. Définir toutes les fonctions virtuelles de IVMRWindowlessControl9. Dans mon cas, je devais mettre des codes supplémentaires sur les fonctions suivantes pour que la gestion de la souris fonctionne correctement: GetAspectRatioMode(), SetAspectRatioMode(), SetAspectRatioMode(), GetVideoPosition() & GetNativeVideoSize(). Les autres fonctions retournent juste S_OK.

La documentation de M $ SDK n'a pas mentionné que nous devons mettre en œuvre ceci !!! Après des heures de débogage, J'ai remarqué que quartz.dll tente d'interroger cette interface à partir de l'allocateur personnalisé. Parfois c'est vraiment payant d'être patient!