ipnc rdk版本 3.9
硬件dm385
一帧1920 x 1080的图像数据进来以后,我只想编码四分之一的图像,然后输出,该如何设置呢?
我在enclink_h264.c里面没找到在什么地方改。
Chris Meng:
你好,
几点建议如下:
1. 编码的长宽需要做相应修改
2. 如果编码不是从图像左上角开始,需要修改输入编码器的buffer的首地址。
3. 编码偏移仍为1920,请设置编码器的参数captureWidth为1920。具体信息请参考编码器的user guide。
user6370357:
回复 Chris Meng:
长宽都需要更改吗?一帧1920 x 1080的数据分为1/4 ,编码的长不变,宽度变为1/4就可以了吧。
更改编码长度后的数据,解码后显示在屏幕上也是只有1/4吗?
user6370357:
回复 Chris Meng:
编码偏移是什么意思啊?
Chris Meng:
回复 user6370357:
user6370357编码偏移是什么意思啊?
Chris Meng:
回复 user6370357:
user6370357长宽都需要更改吗?一帧1920 x 1080的数据分为1/4 ,编码的长不变,宽度变为1/4就可以了吧。
可以。
user6370357更改编码长度后的数据,解码后显示在屏幕上也是只有1/4吗?
取决于你解码显示的代码是否有做缩放。
user6370357:
回复 Chris Meng:
你好,我想再请问一下数据分片的问题。
一帧数据的结构体是FVID2_Frame
我采用的是YUV420SP的数据格式,按照FVID2_Frame 结构体的描述,Y变量的起始地址放在放在addr[0][0]中,UV变量的起始地址放在addr[0][1]中。
我想只编码1/4的数据,就把addr[0][0]的地址加了 1920 * 1080 / 4 addr[0][1]的地址加了1920 * 1080 / 8,按理说显示出来的图像应该就只有3/4但是目前出现了其他的失真现象,比如说颜色不对,还有出来一帧图像就卡住的现象。
是我的四路不对吗?还是说有其他要改的。
我是在vpss驱动里面改的,vpsdrv_captureList.c 里面。
Chris Meng:
回复 user6370357:
你好,
建议你在编码的地方修改buffer地址指针,而不是采集的地方。
如果你只需要1/4宽度的数据,你可以把采集宽度直接设置为宽度1/4,这样是不是更简单?
user6370357:
回复 Chris Meng:
你好,我试过在编码的地方更改,但还是出现上述情况。
我数据分片的目的不是为了缩小宽度而是为了缩短时延,将一帧图像分为四个部分,然后一部分一部分的编码输出,显示出来就还是完整的一帧图像,这样的话比把一个完整的帧编码后输出花费的时间要少。
我在外文网站上看到的,说在vpss端驱动更改可以做到这样的效果。
编解码器有个slice mode 我已经做出来了,但是这个模式我还有些不了解。
这个slice mode是在输入一帧数据后,全部分片编码完成之后再输出吗?还是说分片编码一部分就输出一部分?
解码端支持slice mode,所以解码端那边我就还没管。
Chris Meng:
回复 user6370357:
你好,
一般来说的slice mode编码都是按行来分割图像的啊。