2009-09-03 5 views
0

Je suis assez nouveau sur DirectShow et je me sens vraiment à l'aise en ce moment. Je souhaite héberger la fenêtre de rendu DirectShow d'un graphique DirectShow au sein d'une application WPF et j'utilise actuellement la classe HwndHost pour essayer d'y parvenir. Ce dont j'ai besoin cependant pour HwndHost est un handle à la fenêtre qui rend la vidéo. J'ai trouvé un exemple qui montre comment obtenir le handle en énumérant les pins d'une interface IVideoWindow et en interrogeant IOverlay afin que la méthode GetWindowHandle puisse être utilisée pour obtenir le handle.Est-ce que l'interface IOverlay est disponible dans DirectShow.Net?

Le problème est que IOverlay ne semble pas être disponible dans DirectShow.Net. Lecture de la page DirectShow.Net About, IOverlay est répertorié dans le tableau avec l'en-tête "Ces interfaces sont dans le code source, mais sont obsolètes, non documentées, destinées à Ole Automation ou autrement impossible à tester ce qui signifie qu'elles ne sont pas, et ne seront pas testé ".

Alors, que dois-je faire pour avoir accès à cette définition? Est-il exclu de la construction qui est distribuée en tant que bibliothèque et dois-je construire moi-même la bibliothèque à partir de la source? OU Y at-il une meilleure façon de faire ce que j'essaie de faire? Anyhelp serait apprécié comme je l'ai dit, je suis nouveau à tous ces trucs.

Merci d'avance.

EDIT: Peu de développeurs DirectShow existent? Ou est-ce une question stupide, définitivement ouverte à tous les peeps de conseils ...

Répondre

2

La manière normale de faire ceci est de réparer la fenêtre vidéo en utilisant IVideoWindow :: put_Owner pour en faire un enfant de votre propre fenêtre. Vous souhaiterez également définir les propriétés AutoShow (false), Visible, Width et Height et modifier la propriété WindowStyle pour en faire une fenêtre enfant.

L'interface IOverlay a été implémentée dans la première version de DirectShow (1996) pour prendre en charge certains décodeurs matériels qui sont obsolètes depuis longtemps. Je ne pense pas que les rendus vidéo actuels le supporteront. La poignée de la fenêtre a été rendue difficile à obtenir car une mauvaise programmation de l'application provoquait de fréquents blocages dans Video for Windows et les développeurs pensaient qu'une séparation claire était nécessaire entre les threads DirectShow et les fenêtres qu'ils possédaient, et tous les threads d'application.

G

+0

Merci beaucoup, juste l'homme que je avais besoin :) cela arrive à faire partie d'un projet qui utilise votre boîte à outils de GMFBridge (son été très utile) –

Questions connexes