好奇的猫
好奇的猫
看了一些例子和教程,几乎没有转码的,晕晕的。mjpeg按帧送给解码器(通过v4l2从摄像头取下来的1080P30fps流),宽高等参数已知,目标只有一个 **_低延迟_** ,还有几个疑问: 1. mjpeg转码成H264:应该用纯外部MppBuffer吗(纯外部buffer是不是有点相当于和显卡共享内存)?解码后帧还是在显存中是吗?是否可以直接给encoder进行编码?是否申请很多buffer(group方式)? 2(可选). 如果解码后的图像,既要直接本地显示(HDMI全屏显示),又要编码成H264通过网络发出去(rtp什么的),一般怎么做?需要在显存中拷贝一份给RGA(我理解的零拷贝显示),另一份给encoder? 3(可选). 上面需求1或需求2如果图像需要缩放或旋转,尤其是旋转,又该从哪里入手? 4. 低延迟是不是尽量提前配好参数,不要有info change? 之前试过ffmpeg,延迟好几秒,而且我还有一些摄像头的控制(v4l控制我能搞定),是不是只能自己写代码来降低延迟(转码延迟不知道是否可以控制在几十毫秒内) 谢谢
大家好,遇到一个问题,usb摄像头mpp 走task模式解码出来给drm,半内部分配模式。一切都非常好,除了渲染出来的画面,静止的那一半区域很好,急剧变化的这一半区域有水波纹(应该就是撕裂),不知道该怎么解决。1080P,mjpeg,30帧。 试过一个线程下来,也就是usb读出来给mpp,task input 然后output都是阻塞,解码后通过fd/handle给drm(addfb2),都在一个线程里。也试过usb读帧给mpp task input一个线程,另一个线程从task output取NV12数据给drm(drmmodesetplane),都不行。 试过drmmodesetplane之前保证帧与帧之间33.333ms的间隔,也不行。(),相当于相对对齐模式。绝对对齐模式(也就是从第一帧到当前帧都要对齐到33.333ms的整数倍,帧来晚了就自动对齐到下一个33.333ms的倍数。貌似也不行)。所以感觉也不是这个原因,貌似drmmodesetplane底层会自动对齐vblank之类。 补充两点: 1. usb那边读摄像头数据不到标准的30帧,随着时间的推移,比如10ms,可能只有290帧。这个windows上官方例程也试过,但是没有撕裂,所以应该跟这个没有关系。 2. hdmi的mode0是1080P 65hz,试过改成60hz但是没生效。不过感觉也不是这个原因(不敢肯定)。 能否帮忙看看真实的原因是什么呢?大概的思路应该在哪里?谢谢
大佬请教下,先谢谢了: 1. 如果是mpp半内部分配方式,把1080P NV12拷贝到系统内存(cpu需要处理),用哪个api?Rk3566上面大概需要多久? 2. 纯外部分配方式,drm类型,跟内部/半内部分配方式相比,解码会慢吗?会的话能慢多少?另外5.10的内核,说是要弄成cached的,具体怎么弄呢?没找到示例
 不知道是解码问题,还是显示渲染问题,还是显示器问题,还是线缆问题。 昨天下午四五点钟开机好好的,早上起来变成这种画风了。延迟啥的没变化依然很小。之前连续开机一天也没遇到过。 rk3528,mjepg 1080P,摄像头自己的原始画面是没问题的。 怕一动手不能再复现,请教一下怎么下手去定位问题,谢谢