mpp icon indicating copy to clipboard operation
mpp copied to clipboard

RK3399,多线程解码,同时多线程编码

Open programcj opened this issue 5 years ago • 7 comments
trafficstars

使用4个线程读取RTSP视频并解码没什么问题; 但是,当加入另外4个线程对视频的每一帧都编码成JPG,发现解码速度慢了很多,使用netstat -ant也看到网络中还有很多数据未接收; 不知道这是什么问题导致的?

programcj avatar Jun 22 '20 06:06 programcj

jpeg 编码使用 VPU 硬件,是与小分辨率 264 码流解码的硬件是复用的 setprop use_mpp_mode 1 之后再试一下

HermanChen avatar Jun 22 '20 07:06 HermanChen

我是在Ubuntu下测试的export use_mpp_mode=1 但是结果依旧, 我使用的是ffmpeg去拉rtsp 1080p视频流 使用h264_rkmpp去解码成 AV_PIX_FMT_DRM_PRIME的AVFrame; 将AVFrame转换成 MPP_Frame NV12数据,让JPG编码线程编成jpg, (MppEncJpegCfg 的quant设置为4) 4个编码线对应4个视频拉流解码线程 去掉JPG编码,解码就不会卡. @HermanChen

programcj avatar Jun 22 '20 10:06 programcj

是因为 mpp_buffer_group_limit_config(data->frm_grp, buf_size, 24) 导致的吗? 因为我将 MPP_Frame缓存起来,造成解码线程不能分配倒新的MPP_Buffer? @HermanChen

programcj avatar Jun 23 '20 08:06 programcj

echo 0x100 > /sys/modules/rk_vcodec/parameters/debug 看一下 log

HermanChen avatar Jun 23 '20 08:06 HermanChen

我感觉已经可以了,应该是buffer问题

RKMPPDecodeContext *rk_context = pCodecCtx->priv_data; RKMPPDecoder *decoder = (RKMPPDecoder *)rk_context->decoder_ref->data; ret = mpp_buffer_group_limit_config(decoder->frame_group, 0, 100);

@HermanChen

programcj avatar Jun 23 '20 09:06 programcj

使用4个线程读取RTSP视频并解码没什么问题; 但是,当加入另外4个线程对视频的每一帧都编码成JPG,发现解码速度慢了很多,使用netstat -ant也看到网络中还有很多数据未接收; 不知道这是什么问题导致的?

请问多线程是怎么处理的?我这边一使用多线程解码多路视频mpp_frame_get_errinfo就返回1

wxlzyz avatar Nov 05 '22 06:11 wxlzyz

是这样的,3399 的 264 编码器和 jpeg 编解码是同一个器件时分复用的,所以跑 jpeg 的时候会让 264 编码性能大大下降

HermanChen avatar Nov 06 '22 12:11 HermanChen