示例代码
std::shared_ptr<void> tmp[64];
int index = 0;
int i = 240;
while (i--)
{
V4L2MppBufferHolder bufferHolder = capture.getBufHolder();
encoder.putFrameBuf(bufferHolder.getMppBuf(), false);
std::shared_ptr packetPtr = encoder.getSharedPacket();
void *ptr = mpp_packet_get_pos(packetPtr.get());
size_t len = mpp_packet_get_length(packetPtr.get());
outFile.write((char *)ptr, len);
tmp[index++ % 52] = packetPtr;
}`
当持有encode_get_packet产生的MppPacket,超过52个时,就会出现画面循环并且画面异常
测试来看应该是mpp自己内存管理的问题
示例代码
std::shared_ptr<void>tmp[64];int index = 0;
int i = 240;
while (i--)
{
V4L2MppBufferHolder bufferHolder = capture.getBufHolder();
encoder.putFrameBuf(bufferHolder.getMppBuf(), false);
std::shared_ptr packetPtr = encoder.getSharedPacket();
void *ptr = mpp_packet_get_pos(packetPtr.get());
size_t len = mpp_packet_get_length(packetPtr.get());
outFile.write((char *)ptr, len);
tmp[index++ % 52] = packetPtr;
}`
当持有encode_get_packet产生的MppPacket,超过52个时,就会出现画面循环并且画面异常
测试来看应该是mpp自己内存管理的问题