Bonjour à tous,

j'ai un petit problème dans mon code pour encoder une vidéo.
Cela-se passe dans les préparatifs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 !