sophgo ffmpeg

在soc模式下客户用ffmpeg解码时拿到AVframe将data[0-3] copy到系统内存发现copy时间是在20ms左右而相同数据量在系统内存两块地址copy只需要1-3ms


	上述问题的原因是系统在ffmpeg中默认是禁止cache的,因此用cpu copy性能很低,使能cache就能达到系统内存互相copy同样的速度。可以用以下接口使能cache.

	| av_dict_set_int(&opts, "enable_cache", 1, 0);

    但是这样直接copy数据保存是非常占用内存、带宽和cpu算力的,我们推荐采用零拷贝的方式来实现原始解码数据的保存:

	a. 推荐使用 extra_frame_buffer_num 参数指定增大硬件帧缓存数量,可以根据自己的需要选择缓存帧的数量。这个方式的弊端,一个是占用解码器内存,可能减少视频解码的路数;另一个是当不及时释放,当缓存帧全部用完时,会造成视频硬件解码堵塞。

	| av_dict_set_int(&opts, "extra_frame_buffer_num", extra_frame_buffer_num, 0);

	b. 推荐使用 output_format参数设置解码器输出压缩格式数据,然后使用vpp处理输出非压缩yuv数据(当需要缩放,crop时,可以同步完成),然后直接零拷贝引用非压缩yuv数据。这种方式不会影响到硬件解码性能,并且可以缓存的数据空间也大很多

     | av_dict_set_int(&opts, "output_format", 101, 0);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值