[C++] Extraire images d'un fichier mxf avec Mxflib

Extraire images d'un fichier mxf avec Mxflib [C++] - C++ - Programmation

Marsh Posté le 10-07-2011 à 15:09:11    

Salut,
 
           Je découvre complètement le format MXF et j'aimerais coder une méthode permettant d'extraire à partir d'un fichier MXF des images d'un timecode précis. J'ai donc utilisé pour cela la librairie C++ Mxflib. D'après ce que j'ai compris en m'informant un peu sur le format MXF, il s'agit de lire une à une les Body Partitions du fichier MXF, d'accéder à leur Essence Container (Generic Container) qui contient plusieurs Content Packages, et chaque Content Package contient plusieurs items, dont un Picture Item (une image) et un Data Item (contenant entre autre le Timecode de l'image).
       Seulement voilà, même en comprenant un peu la théorie, je ne vois pas comment coder cela avec Mxflib et j'ai un peu de mal à comprendre la documentation. En regardant des fichiers fournis avec la librairie (comme mxfdump ou mxfsplit), le bout de code suivant permet en gros d'accéder aux partitions unes à unes :
 

Code :
  1. std::string DictName = "dict.xml";
  2. LoadDictionary(DictName);
  3. MXFFilePtr TestFile = new MXFFile;
  4. if (! TestFile->Open(argv[num_options+1], true))
  5. {
  6.  perror(argv[num_options+1]);
  7.  return 1;
  8. }
  9. // Get a RIP (however possible)
  10. TestFile->GetRIP();
  11. RIP::iterator it = TestFile->FileRIP.begin();
  12. while(it != TestFile->FileRIP.end())
  13. {
  14. TestFile->Seek((*it).second->ByteOffset);
  15.   PartitionPtr ThisPartition = TestFile->ReadPartition();
  16.   if(ThisPartition)
  17.   {
  18. // Traiter la partition ...
  19. ...


 
 
Mais je ne vois pas comment ensuite lire l'Essence Container, ses Content Packages puis les différents Items (surtout l'image et le timecode en fait).
Si quelqu'un a déjà utilisé la librairie Mxflib, je lui serai reconnaissant de bien vouloir m'aider  :jap: .

Reply

Marsh Posté le 10-07-2011 à 15:09:11   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed