Firefly开源社区

标题: 获取h265编码,getActiveDatta()获取到的是空数据 [打印本页]

作者: Zxj1351064076    时间: 2024-4-30 11:27
标题: 获取h265编码,getActiveDatta()获取到的是空数据
这个接口是我在进行h265模块编码后,调用的回调,获取h265编码。使用getActiveData()函数获取h265编码数据,但是为什么获取的都是空数据。
tchip_askquestions

rk3568.txt

58 Bytes, 下载次数: 3, 下载积分: 灯泡 -1 , 经验 -1


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

作者: Zxj1351064076    时间: 2024-4-30 17:38
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。
作者: dengkx    时间: 2024-4-30 17:50
Zxj1351064076 发表于 2024-4-30 17:38
getActiveSize: 499
getActiveData [0x7f60040000]: 00 00 00 01 02 。
大小为499,前五个byte为00 00  ...

这不有数据吗?
作者: Zxj1351064076    时间: 2024-4-30 17:56
dengkx 发表于 2024-4-30 17:50
这不有数据吗?

这样按字节打印是有数据。但是    shared_ptr<VideoBuffer> buf = static_pointer_cast<VideoBuffer>(buffer);
    char* char_data = static_cast<char*>(buf->getActiveData());
    std::vector<char> 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);
    }这个有错误吗?写入的数据是一个空
作者: Zxj1351064076    时间: 2024-5-8 10:50
dengkx 发表于 2024-4-30 17:50
这不有数据吗?

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






欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1