2016-04-19 7 views
0

Я пытаюсь отправить GstBuffer объекты map.data на сервер java. Я создал событие с параметром как int[], но при поднятии события во время компиляции я получаю следующую ошибку.kurento: Как передать guint8 * на java-сервер как int []

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 имеет тип guint8 *

там что-то не так делаю в отливке типа?

Я попытался отправить map.data как std::string, но на стороне java я не получаю полную строку.

ответ

2

Отливка guint8* в char* в порядке, потому что изменяется только знак. Кастинг до int * не подходит, потому что размер отличается, для отправки такого рода событий вам может потребоваться скопировать массив guint8 в массив из int. Но подумайте, что это не быстрая операция или сериализация этого большого события, поэтому не ожидайте большой производительности.

Кроме того, что ожидает событие kurento (вы должны проверить подпись BufferReceived), когда вы объявляете массив std::vector<int>, поэтому в любом случае вам нужно создать массив и скопировать содержимое.