2017-03-25 4 views
1

J'utilise Windows Media Foundation pour créer un fichier vidéo. J'ai un code de travail basé sur le tutoriel Using the Sink Writer to Encode Video. Lorsque le type d'entrée est MFVideoFormat_RGB32 et que le type de sortie est MFVideoFormat_WMV3 et que l'enregistreur collecteur écrit dans un fichier WMV et que je lui envoie des données RGB32 top-down, la vidéo s'affiche. attendre.Comment savoir si un graveur de Windows Media Foundation a besoin d'images ascendantes ou descendantes?

Lorsque le type de sortie est MFVideoFormat_H264, d'autre part - tout le reste est identique - les bitmaps sortent à l'envers.

Comment puis-je savoir au moment de l'exécution quel type de données bitmap est nécessaire?

+0

Je suppose que c'est finalement tout à propos de l'indication correcte de l'ordre des lignes en utilisant l'attribut 'MF_MT_DEFAULT_STRIDE'. C'est-à-dire, assurez-vous que vos images RVB vidéo brutes sont accompagnées d'un type de support, où la foulée est définie et indique l'ordre des lignes. –

+0

@RomanR. oui, ça ressemble à ça. Si vous mettez votre commentaire dans une réponse, je le marquerai comme le bon, ou j'ajouterai ma propre réponse dans un jour ou deux sinon. –

Répondre

1

RGB types de supports vidéo peut donner une option MF_MT_DEFAULT_STRIDE attribute pour spécifier la ligne de commande:

foulée de surface par défaut, pour un type de support vidéo non compressé. Stride est le nombre d'octets nécessaires pour passer d'une ligne de pixels à l'autre. [...]

La foulée est positive pour les images descendantes et négative pour les images ascendantes.

L'attribut est facultatif. S'il est omis, il risque d'entraîner une confusion car le consommateur de données peut appliquer des valeurs par défaut différentes. En général, il est typique que les données RVB soient inversées pour des raisons historiques, mais les API les plus récentes ont tendance à les corriger et à avoir des données dans l'ordre des lignes normales.