Je travaille actuellement sur un wrapper C# pour fonctionner avec la lumière API commune de Dallmeier.
Voir l'offre précédente: C# wrapper and CallbacksC# wrapper pour un tableau de trois pointeurs
J'ai à peu près tout « enveloppé » mais je suis coincé sur l'emballage d'un rappel qui contient un tableau de trois pointeurs & un des entiers de tableau:
dlm_setYUVDataCllback
int(int SessionHandle, void (*callback) (long IPlayerID, unsigned char** yuvData,
int* pitch, int width, int height, int64_t ts, char* extData))
Fonction Set rappel, pour recevoir l'image actuelle YUV.
Arguments SessionHandle: gérer la session en cours.
Renvoyer PlayerID (voir rappel).
Callback - IPlayerId: id de l'objet Player
- yuvData: tableau de trois pointeurs vers Y, U et V partie de l'image
Le format YUV utilisé est YUV420 plane (non compressé).
char * y = yuvData [0];
char * u = yuvData [1];
char * v = yuvData [2];
- pas: tableau d'entiers pour les pas pour les parties Y, U et V de l'image
- largeur: largeur intrinsèque de l'image.
- hauteur
- ts: horodatage du cadre actuel
- ExtData: données supplémentaires pour encadrer
Comment puis-je vaquent à envelopper cela dans C#?
Toute aide est très appréciée.
Merci logiquenp. Juste un suivi sur ceci, j'ai créé une structure avec les paramètres comme ci-dessus mais que devrait-on 'Int64_t' être en C# et puis-je utiliser le même MashalAs pour le 'pitch' qui est aussi un tableau d'entiers par ex. [MarshalAs (UnmanagedType.ByValArray, SizeConst = 1)] IntPtr [] pitch – fergs
int64_t devrait être défini comme long (qui est également de 64 bits dans C#). Pour la hauteur, votre définition est correcte si 'pitch' est un tableau à une dimension. – logicnp
Comment et où est-ce que j'utilise Marshal.Read ou Marshal.Copy – fergs