2010-03-15 3 views
1

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.

Répondre

0

unsigned char** yuvData doit être défini comme [MarshalAs(UnmanagedType.ByValArray,SizeConst=3)] IntPtr[] yuvData

Vous obtiendrez alors un tableau de 3 IntPtrs. Vous pouvez lire les données réelles en utilisant Marshal.Read ou Marshal.Copy.

+0

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

+0

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

+0

Comment et où est-ce que j'utilise Marshal.Read ou Marshal.Copy – fergs

Questions connexes