获取h265编码,getActiveDatta()获取到的是空数据

固件类型:自行编译的固件
SDK包名称:rk356x_linux_release_v1.3.0b_20221213_split_dir
SDK修改内容:无任何修改。按照官方的流程编译。编译 Linux4.19 固件 — Firefly Wiki
Log日志:rk3568.txt

这个接口是我在进行h265模块编码后,调用的回调,获取h265编码。使用getActiveData()函数获取h265编码数据,但是为什么获取的都是空数据。
tchip_askquestions
rk3568.txt (58 Bytes)

在回调中打印一下buf->getActiveData() 前面5个字节和buf->getActiveSize()的大小

dengkx 发表于 2024-4-30 17:26
在回调中打印一下buf->getActiveData() 前面5个字节和buf->getActiveSize()的大小

getActiveSize: 499
getActiveData [0x7f60040000]: 00 00 00 01 02 。
大小为499,前五个byte为00 00 00 01 02。

Zxj1351064076 发表于 2024-4-30 17:38
getActiveSize: 499
getActiveData [0x7f60040000]: 00 00 00 01 02 。
大小为499,前五个byte为00 00 …

这不有数据吗?

dengkx 发表于 2024-4-30 17:50
这不有数据吗?

这样按字节打印是有数据。但是 shared_ptr buf = static_pointer_cast(buffer);
char* char_data = static_cast<char*>(buf->getActiveData());
std::vector videobuffer(char_data, char_data + buf->getActiveSize());

    // 分块处理数据
for (size_t i = 0; i < videobuffer.size(); i += BUFFER_SIZE) {
    size_t chunk_size = std::min(BUFFER_SIZE, videobuffer.size() - i);
    std::cout <<"chunk_size: "<< chunk_size << std::endl;
    // std::cout <<"videobuffer.data(): "<< videobuffer.data() << std::endl;
    shared_memory.writeData(videobuffer.data() + i, chunk_size);
}这个有错误吗?写入的数据是一个空

dengkx 发表于 2024-4-30 17:50
这不有数据吗?

你好!请问一下,getActiveData和getActivesize获取的是一个完整的视频帧是吗?

Zxj1351064076 发表于 2024-5-8 10:50
你好!请问一下,getActiveData和getActivesize获取的是一个完整的视频帧是吗?