Compression vidéo, problème avec VCM
Bonjour à tous,
j'ai un petit problème dans mon code pour encoder une vidéo.
Cela-se passe dans les préparatifs :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| DWORD dwFormatSize;
// Charge le format de l'image en entrée
AVIStreamFormatSize( pAVIStream, 0, &lStreamSize );
if ( (unsigned int) lStreamSize > sizeof( biIn ) )
return false;
lStreamSize = sizeof( biIn );
HRESULT hr = AVIStreamReadFormat( pAVIStream, 0, &biIn.bmiHeader,
&lStreamSize );
if ( hr != 0 )
return false;
// Récupère les informations sur la vidéo d'entrée
hr = AVIStreamInfo( pAVIStream, &aviInfos, sizeof ( aviInfos ) );
if ( hr != 0 )
return false;
// Allocation du buffer d'entrée
In = malloc( biIn.bmiHeader.biSizeImage );
// Récupère le format de l'image de sortie
dwFormatSize = ICCompressGetFormat( hCodec, &biIn, NULL );
if ( (unsigned int) dwFormatSize > sizeof( biIn ) )
return false;
if ( ICCompressGetFormat( hCodec, &biIn, &biOut ) != ICERR_OK )
return false;
OutSize = ICCompressGetSize( hCodec, &biIn, &biOut );
Out = malloc( OutSize );
return true; |
Sachant que hCodec est un handle valide vers le compresseur Xvid
et que j'ai bien ouvert le Stream AVI.
biIn et biOut sont des BITMAPINFO.
Le problème est à la ligne if ( (unsigned int) dwFormatSize > sizeof( biIn ) )...le taille nécessaire retourné par ICCompressGetFormat est supérieure à celle de mon biIn.
Du coup impossible de récupérer le format de sortie de la vidéo...(ce qu'il faut mettre dans biOut dans le if suivant).
Je suis un peu perdu alors si vous pouviez m'aider à retrouver le droit chemin !
Merci !