2016-04-19 8 views
0

Ich versuche, die GstBuffer Objekte map.data an den Java-Server zu senden. Ich habe ein Ereignis mit einem Parameter wie int[] erstellt, aber wenn das Ereignis ausgelöst wird, erhalte ich den folgenden Fehler zur Kompilierzeit.kurento: Wie guint8 * an einen Java-Server als int übergeben wird []

error: no matching function for call to ‘kurento::module::vadcustomfilter::BufferReceived::BufferReceived(std::shared_ptr<kurento::MediaObject>, const char [16], int*)’ 

BufferReceived event (shared_from_this(), "Buffer Received", ((int *)buffer)); 

map.data ist vom Typ guint8 *

ist etwas nicht in Ordnung in Art Casting mache?

Ich habe versucht, map.data als std::string zu senden, aber auf Java-Seite bekomme ich nicht die komplette Zeichenfolge.

Antwort

2

Casting guint8* zu char* ist in Ordnung, weil nur das Vorzeichen ändert. Casting zu int * ist nicht OK, da die Größe anders ist, um diese Art von Ereignissen zu senden, müssen Sie möglicherweise das Array guint8 in ein Array von int kopieren. Aber denken Sie, dass dies keine schnelle Operation ist, noch Serialisierung dieses große Ereignisses, also erwarten Sie nicht, eine großartige Leistung zu haben.

Darüber hinaus, was Ereignisse kurento erwartet (Sie sollten die Unterschrift von BufferReceived überprüfen), wenn Sie ein Array deklarieren ist ein std::vector<int>, so in jedem Fall, dass Sie das Array erstellen müssen und den Inhalt zu kopieren.