Toybrick

标题: 两路1080P视频编码只能维持23FPS [打印本页]

作者: zhuo799154051    时间: 2020-12-22 17:01
标题: 两路1080P视频编码只能维持23FPS
    我修改了下编码的demo并进行了测试,输入两路25FPS的1080P视频,输出两个23FPS的H264文件。通过打印的信息,encode_put_frame消耗了43ms左右的时间,仅编码单路的话则消耗25ms。这里我已经设置了MPP_BUFFER_TYPE_DRM。
  1. double t1 = what_time_is_it_now3();

  2. ret = p->mpi->encode_put_frame(p->ctx, frame);
  3. if (ret) {
  4. printf("mpp encode put frame failed\n");
  5. mpp_frame_deinit(&frame);
  6. goto RET;
  7. }

  8. double t2 = what_time_is_it_now3();
  9. printf("put_frame -> %f\n", t2 - t1);
复制代码



     我看了MPP文档,encode_put_frame是阻塞式函数,于是尝试了设置MPP_SET_INPUT_TIMEOUT为非阻塞,直接返回-1。请问有什么方法能降低encode_put_frame的耗时?



作者: jefferyzhang    时间: 2020-12-22 19:49
1. 什么板子、什么芯片
2. 什么系统


作者: zhuo799154051    时间: 2020-12-23 08:54
jefferyzhang 发表于 2020-12-22 19:49
1. 什么板子、什么芯片
2. 什么系统

toybrick RK3399ProD debian10,官方
作者: jefferyzhang    时间: 2020-12-23 09:10
zhuo799154051 发表于 2020-12-23 08:54
toybrick RK3399ProD debian10,官方

3399ProD编码能力在你这个场景基本已经是极限了,没啥问题呀。

作者: zhuo799154051    时间: 2020-12-23 09:14
jefferyzhang 发表于 2020-12-23 09:10
3399ProD编码能力在你这个场景基本已经是极限了,没啥问题呀。

这就完全没办法提升了么,我看Wiki上3399pro规格参数支持2路1080P@30fps编码
作者: jefferyzhang    时间: 2020-12-23 09:30
zhuo799154051 发表于 2020-12-23 09:14
这就完全没办法提升了么,我看Wiki上3399pro规格参数支持2路1080P@30fps编码

2路是要你代码写的很好的情况。
给你几个思路,你自己研究研究:

1. MPP用BufferGroup自己管理内存
2. 用物理连续内存喂编码器
3. VPU抬频
作者: zhuo799154051    时间: 2020-12-23 09:44
jefferyzhang 发表于 2020-12-23 09:30
2路是要你代码写的很好的情况。
给你几个思路,你自己研究研究:

第1点MppBufferGroup我在MPP文档中看到用在解码,编码也是相同用法么?
第2点是要以CMA分配的物理地址作为输入传入编码器么?
第3点VPU抬频如何抬?具体需要修改那些设置?

另外还有一个疑问,MPP编码H264要求图像16位对齐,改成H265是不是能8位对齐,不然1080P会有底边泛绿。

作者: jefferyzhang    时间: 2020-12-23 10:44
本帖最后由 jefferyzhang 于 2020-12-23 12:22 编辑
zhuo799154051 发表于 2020-12-23 09:44
第1点MppBufferGroup我在MPP文档中看到用在解码,编码也是相同用法么?
第2点是要以CMA分配的物理地址作 ...

1. 是的
2. 是的
3. 要改kernel代码,不懂的话不建议乱改
4. 怎么对齐跟硬件相关,应用只有获取对齐后宽高的能力,没有能力去改对齐方式

PS: 3399Pro不支持265编码




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3