Toybrick

MPP多线程解码yuv数据异常问题

ah911017

新手上路

积分
26
楼主
发表于 2024-7-31 15:29:29    查看: 1249|回复: 1 | [复制链接]    打印 | 只看该作者
本帖最后由 ah911017 于 2024-7-31 16:50 编辑

仿照mpp解码test demo,一个线程不断的输入H264 stream送给解码器,另外一个线程不断的取出解码后的YUV图片(后续作YUV转rgb图片送给显示屏)

发现解出来的yuv图片是同一帧的图像,还有很多是全屏蓝色。
有2个问题:
1、下面的解码流程是否哪里有异常?
2、p_temp_buff是原始H264码流,每一帧都是一副图,但是所有帧公用一块内存地址,使用完之后memset 0再存放新的图片帧,是不是这个内存使用不合理?


以下伪代码:
main函数初始化解码器跟packet
mpp_create
mpp_int
mpp_packet_init(&packet, NULL, 0)
保存packet到全局变量,用户多次的decode_put_packet

送码流线程thread input
每次一帧H264图片过来,执行
mpp_packet_set_data(packet, stream->p_temp_buff);
mpp_packet_set_size(packet, stream->buf_len);
mpp_packet_set_pos(packet, stream->p_temp_buff);
mpp_packet_set_length(packet, stream->buf_len);
mpp_packet_set_eos(packet);

mpi->decode_put_packet(ctx, packet);

取解码图片线程 thread  output
轮询获取解码后的的frame
mpi->decode_get_frame(ctx, &mpp_frame);
if(mpp_frame){
        dump_mpp_frame_to_file  保存yuv文件,用于验证解出来的图片
}


解码结束,mpi->reset(ctx),mpp_destroy(ctx); 释放packet,
回复

使用道具 举报

ah911017

新手上路

积分
26
沙发
 楼主| 发表于 2024-8-1 18:01:42 | 只看该作者
已解决.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表