mpp icon indicating copy to clipboard operation
mpp copied to clipboard

RK3399 解码速度控制

Open czcl opened this issue 2 years ago • 4 comments

线程A 往mpp解码器送数据 调用函数 decode_put_packet(ffmpeg 拉流) 线程B 解码数据 调用函数 decode_get_frame 结果存放到std::list 中 线程C 正常从std::list 中读取并显示出来

显示正常,不丢帧,不报错,但是我想控制解码器的速度,有时候有用到解码后的数据做一些其他事情比较耗时 这样导致std::list 生产的快,消费的满,导致数据丢失,尝试在线程A中添加延时发现线程B mpp_frame_get_errinfo出错 尝试在B线程添加延时,发现线程A decode_put_packet 报错 MPP_ERR_BUFFER_FULL

请问如何控制mpp 解码的速度??

mpp.cpp 中的 Mpp::start(),Mpp::stop(),Mpp::pause(),Mpp::resume() 是空实现,请问这个是为了控制速度么,什么时候可以实现

谢谢

czcl avatar May 19 '22 10:05 czcl

在 put_packet 失败的时候,说明解码已经来不及了,可以在失败之后 sleep 一下再送,这样可以控制速度了

HermanChen avatar May 25 '22 08:05 HermanChen

你好当我看到的时候我会自动回复您

czcl avatar May 25 '22 08:05 czcl

好的我尝试一下看看

czcl avatar May 25 '22 08:05 czcl

经过尝试,发现依旧有跳帧问题(跳帧4秒左右)

使用最新的mpp代码,线程A 往mpp解码器送数据 调用函数 decode_put_packet(ffmpeg 拉流) 线程B 解码数据 调用函数 decode_get_frame 结果存放到std::list 中 线程C 正常从std::list 中读取并显示出来 正常显示有丢帧但是在允许范围之内,是因为主动丢帧 在线程B中使用sleep,来控制std::list 程序处理上没有发现队列满的情况,但是有跳帧问题(4秒作用),网络流正常的 请问mpp会自动丢帧么,在 decode_put_packet 和decode_get_frame 都不报错的情况下

czcl avatar May 25 '22 08:05 czcl