Share via


Configuration des broches de sortie Demux

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Lorsque le demux MPEG-2 reçoit un paquet de données, il doit déterminer quelle broche de sortie doit analyser et remettre les données. En mode de flux de programme, le demux mappe les ID de flux à des broches de sortie. En mode flux de transport, il mappe les PID aux broches de sortie. Par exemple, en mode flux de transport, si le PID 0x31 est mappé à la broche 0, chaque paquet TS avec ce numéro PID est acheminé vers la broche de sortie 0. Si le demux reçoit un paquet dont l’ID de flux ou le PID n’est mappé à aucune broche de sortie, il ignore simplement le paquet.

En mode pull, le demux crée automatiquement des broches de sortie pour les flux audio et vidéo dans le fichier, et mappe les ID de flux aux broches.

En mode push, les broches de sortie doivent être configurées par l’application ou par un autre filtre. Pour les sources de télévision numérique utilisant l’architecture de pilote de diffusion (BDA), le filtre du fournisseur réseau fonctionne avec le filtre TIF pour configurer le demux. L’application n’a rien à faire. Dans d’autres scénarios, l’application doit configurer les broches de sortie.

Le demux commence avec aucune broche de sortie. Pour créer une broche de sortie, appelez la méthode IMpeg2Demultiplexer::CreateOutputPin sur le filtre. Cette méthode prend un type multimédia et un nom d’épingle, puis retourne un pointeur IPin . Le type de média est utilisé lorsque la broche se connecte à un autre filtre, généralement un décodeur. La section Utilisation du Demux avec des flux élémentaires est un exemple. Le nom d’épingle peut être comme vous le souhaitez, sauf que les noms d’épingle en double ne sont pas autorisés.

Ensuite, affectez un ou plusieurs ID ou PID de flux à la nouvelle broche de sortie. Pour les flux de programme, interrogez le code pin pour IMPEG2StreamIdMap et appelez IMPEG2StreamIdMap::MapStreamId. Pour les flux de transport, interrogez la broche pour IMPEG2PIDMap et appelez IMPEG2PIDMap::MapPID.

Il existe plusieurs façons pour le demux d’analyser les paquets TS. Pour chaque broche de sortie, la méthode d’analyse est déterminée par le paramètre MediaSampleContent de la méthode MapPID .

Valeur Description
MEDIA_ELEMENTARY_STREAM Le filtre fournit des charges utiles PES. Dans ce mode, le filtre dépackétise les paquets PES, de sorte que le filtre en aval reçoit le flux d’octets ES, sans les en-têtes de paquets PES. (Flux audio et vidéo uniquement.)
MEDIA_MPEG2_PSI Le filtre fournit des sections PSI complètes, telles que les tables PAT, les tables PMT, les tables CAT, etc.
MEDIA_TRANSPORT_PAYLOAD Le filtre extrait les charges utiles des paquets TS et les remet sans analyse supplémentaire. Pour les flux élémentaires, cela signifie que le demux fournit des paquets PES entiers, y compris les en-têtes de paquets PES.
MEDIA_TRANSPORT_PACKET Le filtre fournit des paquets TS entiers. Le demux achemine les paquets TS en fonction de leurs PID, mais n’examine pas ou ne traite pas les paquets. Les paquets contenant des erreurs ne sont pas filtrés. Le demux ne multiplexe pas les paquets et le flux de sortie résultant n’est pas un flux de transport MPEG-2 conforme. Ce mode est appelé mode pass through .

 

Pour les flux de programme, le demux fournit toujours des charges utiles PES.

Utilisation du démultiplexeur MPEG-2