kurento:如何将 guint8 * 作为 int[] 传递给 java 服务器

kurento: How to pass guint8 * to java server as an int[]

我正在尝试将 GstBuffer 个对象 map.data 发送到 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 端我没有收到完整的字符串。

guint8* 转换为 char* 没问题,因为只有符号发生变化。转换为 int * 是不行的,因为大小不同,为了发送这种事件,您可能需要将 guint8 的数组复制到 int 的数组。不过觉得这算不上什么快速操作,也没有序列化这种大事件,所以不要指望有什么了不起的表现。

此外,当你声明一个数组是std::vector<int>时,kurento事件期望什么(你应该检查BufferReceived的签名),所以在任何情况下你都需要创建数组并复制内容。