2009-03-10 10 views
0

J'ai un fichier FLV (VP6/LAME) particulier de 400 x 171 pixels tel que rapporté par la structure BITMAPINFOHEADER et vérifié par un certain nombre d'éditeurs de métadonnées FLV tels que RichFLV. Cependant, lorsque vous en saisissez un échantillon à l'aide d'un ISampleGrabber, l'échantillon résultant (à 3 octets par pixel) est seulement de 204 000 octets (400 x 170 x 3) au lieu de 205 200 octets (400 x 171 x 3) comme I ' d attendre. Comme j'essaie de ne placer que 400 x 170 de données dans un constructeur d'objet de 400 x 171 Bitmap, il devient plutôt bouleversé et provoque des exceptions A/V. Je pourrais bidouiller ceci pour détecter des tailles d'échantillon «proches mais pas tout à fait comme prévu», mais j'aimerais vraiment savoir où la hauteur verticale 1px est allée dans le processus. Ma conjecture est un filtre douteux qui ne supporte pas les valeurs impaires pour la largeur/hauteur et le supprime, mais je ne suis pas sûr d'un moyen facile de vérifier cela.DirectShow: BITMAPINFOHEADER et ISampleGrabber retournant différentes tailles

Quelqu'un at-il une idée de ce qui pourrait se passer et comment le vérifier?

(PS: Je ne suis pas un bon développeur C/C++, merci aucune solution impliquant l'utilisation excessive de celui-ci)

+0

Quel filtre est utilisé pour décoder le FLV? Je pense qu'il n'y a pas de natif. –

+0

Nous utilisons celui qui fait partie du CCCP. –

Répondre

0

Ma meilleure estimation est un filtre FLV dodgey/buggy. Que se passe-t-il lorsque vous essayez un autre filtre FLV? Les autres fichiers FLV signalent-ils des dimensions vidéo incorrectes?

Questions connexes