rk mpp平台YUV格式支持问题
- 
					
					
					
					
 格式支持问题 gst-launch-1.0 --gst-debug-level=3 v4l2src device=/dev/video20 ! image/jpeg,width=1920,height=1080,framerate=30/1 ! mppjpegdec ! videoconvert ! video/x-raw,format=I420 ! mpph264enc ! filesink location=/home/coolpi/Videos/1920_1080_h264.mp4我想拿到YUV的 I420格式 但是这样不行 NV12才行 是不是mpp不支持I420的转换 
  gst-launch-1.0 --gst-debug-level=3 v4l2src device=/dev/video20 ! image/jpeg,width=1920,height=1080,framerate=30/1 ! mppjpegdec ! video/x-raw,format=I420 ! videoconvert ! mpph264enc ! filesink location=/home/coolpi/Videos/1920_1080_h264.mp4这个也不行 必须NV12的才行 
 但是从这里看
  
 应该是支持I420的吧
- 
					
					
					
					
 @jugg GST_VIDEO_CONVERT_PREFERRED_FORMAT 环境变量改一下,I420改为默认格式。 
- 
					
					
					
					
 
- 
					
					
					
					
 @george said in rk mpp平台YUV格式支持问题: GST_VIDEO_CONVERT_PREFERRED_FORMAT 我也单独设置了 
 export GST_VIDEO_CONVERT_PREFERRED_FORMAT=I420
- 
					
					
					
					
 @jugg 环境变量里边尝试关闭RGA使能。这个应该是RGB部分有限制。 
- 
					
					
					
					
 @george 
 关闭了 CPU还是100%
  
- 
					
					
					
					
 @jugg 那就是RGA有限制 
- 
					
					
					
					
 @george 
 RGA关还是不关 用I420 CPU都是100%
- 
					
					
					
					
 @george 
 我用这个获取YUV
 gst-launch-1.0 v4l2src device=/dev/video20 ! image/jpeg,width=1920,height=1080,framerate=30/1 ! mppjpegdec ! videoconvert ! video/x-raw,format=NV12 ! filesink location=output.yuv
  
 有绿边
 480p分辨率的就没有那ximagesink是用什么格式的YUV去渲染的 
- 
					
					
					
					
 @jugg said in rk mpp平台YUV格式支持问题: @george 
 我用这个获取YUV
 gst-launch-1.0 v4l2src device=/dev/video20 ! image/jpeg,width=1920,height=1080,framerate=30/1 ! mppjpegdec ! videoconvert ! video/x-raw,format=NV12 ! filesink location=output.yuv
  
 有绿边
 480p分辨率的就没有那ximagesink是用什么格式的YUV去渲染的 我保存了YUV的数据 发现一张1080pYUV大小是3133440 这大小也不对吧 
 我不清楚这是什么样的YUV
- 
					
					
					
					
 @jugg said in rk mpp平台YUV格式支持问题: @jugg said in rk mpp平台YUV格式支持问题: @george 
 我用这个获取YUV
 gst-launch-1.0 v4l2src device=/dev/video20 ! image/jpeg,width=1920,height=1080,framerate=30/1 ! mppjpegdec ! videoconvert ! video/x-raw,format=NV12 ! filesink location=output.yuv
  
 有绿边
 480p分辨率的就没有那ximagesink是用什么格式的YUV去渲染的 我保存了YUV的数据 发现一张1080pYUV大小是3133440 这大小也不对吧 
 我不清楚这是什么样的YUV我发现是1080p以下分辨率的保存到yuv文件的是正常的 
 1080p和1080p以上的保存的yuv数据就不对
 像1080p的yuv NV12的大小应该是3110400 但实际却是3133400
- 
					
					
					
					
 @jugg 关于I420格式的问题,环境变量增加GST_MPP_NO_RGA=0 
 关于黑边和数据大小不对的问题,编码器数据需要四字节对齐,比如:1920X1080 需要设置为1920X1088
- 
					
					
					
					
 This post is deleted!
- 
					
					
					
					
 @george 
 添加了
 export GST_MPP_NO_RGA=0
 然后使用
 gst-launch-1.0 v4l2src device=/dev/video20 ! image/jpeg,width=1920,height=1080,framerate=30/1 ! mppjpegdec ! videoconvert ! video/x-raw,format=I420 ! filesink location=output.yuv
 虽然能得到i420的yuv 但是CPU会100%
  
- 
					
					
					
					
 @george said in rk mpp平台YUV格式支持问题: 关于黑边和数据大小不对的问题,编码器数据需要四字节对齐,比如:1920X1080 需要设置为1920X1088 我是直接用命令行来保存NV12的 那这个对齐要怎么做 
- 
					
					
					
					
 @george said in rk mpp平台YUV格式支持问题: 关于黑边和数据大小不对的问题,编码器数据需要四字节对齐,比如:1920X1080 需要设置为1920X1088 是4字节对齐吗? 
 1080向上4字节对齐不是1080吗
 是1080向上16字节对齐吗?
- 
					
					
					
					
 @jugg 
 不同的格式对齐要求不同,RGA硬件本身是对图像每行的数据是按照字(world)对齐的方式进行取数的,即4个字节32个bit。例如RGBA格式本身单个像素存储大小为32(4 × 8)bit,所以没有对齐要求;RGB565格式存储大小为16(5 + 6 +5)bit,所以需要2对齐;RGB888格式存储大小为24(8 × 3)bit,所以该格式需要4对齐才能满足RGA硬件的32bit取数要求;YUV格式存储相对较为特殊,本身排列要求需要2对齐,Y通道单像素存储大小为8bit,UV通道根据420/422决定每四个像素的存储大小,所以YUV格式Y通道需要4对齐才能满足RGA的硬件取数要求,则YUV格式需要4对齐;其他的未提及的格式对齐要求原理相通。注意,该题中对齐均指width stride的对齐要求,YUV格式本身实际宽高、偏移量由于格式本身特性也是要求2对齐的。
- 
					
					
					
					
 @george 
 yuv i420那个有办法吗
 videoconvert
 mppjpegdec
 好像都不支持从nv12转i420


