Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2038 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [usb linux ISO] 1 grande image : plusieurs urb's ou un seul grand ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[usb linux ISO] 1 grande image : plusieurs urb's ou un seul grand ?

n°975736
allawos
Posté le 08-02-2005 à 19:12:05  profilanswer
 

Bonjour à tous. Je suis sur la confection d'un driver de camera en usb, sous linux 2.4.20-8 et je me pose la question suivante :
 
Je dois récupérer une image 1024*1024 ... en unsigned int, soit une taille totale de 1024*1024*4 = 4194304 octets. Je précise que je ne cherche pas à faire un flux continue, je veux juste récupérer une image.
 
Sachant que le endpoint iso de ma caméra possède un wMaxPacketSize de 644, je dois donc faire passer 4194304/644 = 6512 packets entiers (plus 1 non entier).
 
Je vais donc créer mon URB et le soumettre ... mais je me demandais s'il fallait que je soumette :  
- un seul urb, donc le transfert_buffer fait 4194304 octets et le number_of_packets fait 6513 (auquel cas le core gèrerait tout seul le fait d'avancer dans le buffer et d'y copier au fur et à mesure les octets du endpoint ... est-ce le cas ???)
- ou 6513 URB's ... tous attachés les uns aux autres par le next, et dont le transfert_buffer fait 644 octets et le number_of_packets fait 1. Ce serait alors à moi de récupérer les octets situés dans chacun des urb.
 
Je passe peut-etre à coté d'une notion évidente mais entre toutes ces docs, je me suis un peu perdu. Si certains ont la réponse, cela m'arrangerai énormément. Merci d'avance à tous !

mood
Publicité
Posté le 08-02-2005 à 19:12:05  profilanswer
 

n°976453
allawos
Posté le 09-02-2005 à 14:52:09  profilanswer
 

Bon je pense avoir ma réponse mais est-ce que quelqu'un pourrait me la confirmer ? :
 
Je vais utiliser 6513 urb's avec pour chacun :
urb[i].transfer_buffer_length = 644;  
urb[i].number_of_packets=1;  
urb[i].next=urb[i+1]; //sauf pour le dernier
 
ensuite, je fais un submit_urb de chacun et puis j'attend leur completion. A chaque completion, je copie le transfert_buffer de l'urb au bon offset dans mon image.
 
Est-ce bon ? Merci d'avance !

n°976724
allawos
Posté le 09-02-2005 à 16:40:58  profilanswer
 

Je pense m'être craqué, il apparait etre OK d'utiliser un seul URB avec :
urb[i].transfer_buffer_length = 4194304;  
urb[i].number_of_packets=6513;
 
... du coup, je me pose une petite question sur l'utilisation de vmalloc plutot que kmalloc (pour allouer mon buffer énorme de 4Mo, dans un contexte kernel, ... mais je vais la poser dans un nouveau post !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [usb linux ISO] 1 grande image : plusieurs urb's ou un seul grand ?

 

Sujets relatifs
[c#] lire plusieurs lignes sur une socket ?Decoupe d une image
Changer d'image dans une boite de dialogue?Upload d'image sur un site Internet
Miniature d'image - php simple !configuration my.cnf sous linux
[HTML/Javascript] gallerie avec image survolée et affichage séparéMigration Access/VBA/Windows=> PHP/MySQL/Linux
Table plus grand! 
Plus de sujets relatifs à : [usb linux ISO] 1 grande image : plusieurs urb's ou un seul grand ?


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR