keygen8 发表于 2016-3-18 15:57:09

RGA上屏出现横线

在开发基于vpu硬解的视频广播方案过程中,遇到RGA上屏时出现横线的问题,具体现象如下:1、如果使用JPEG硬解并使用RGA上屏,不会出现横线
2、如果使用H264硬解并使用RGA(YUV转RGB并上屏)上屏,有时会出现横线
3、为ffmpeg添加h264硬解,使用ffplay播放视频时不会出现横线,但如果在上屏前,在解码的帧上添加一些图片时会出现大量的横线


图片如下



isle 发表于 2016-3-19 09:17:16

干嘛要用RGA去做YUV转RGB 直接显示YUV不就好了。

keygen8 发表于 2016-3-21 09:28:37

isle 发表于 2016-3-19 09:17
干嘛要用RGA去做YUV转RGB 直接显示YUV不就好了。

RGA把YUV转成RGB然后写到FB0上,再说屏幕貌似只支持RGB吧?
你说的是啥意思,其它上屏方式(SDL)速度太慢,行不通的。

keygen8 发表于 2016-3-21 10:06:43

isle 发表于 2016-3-19 09:17
干嘛要用RGA去做YUV转RGB 直接显示YUV不就好了。

直接写fb0的速度也很慢,必需得用rga显示,速度才能满足需求。
使用的代码
        if (ioctl(rgacxt->rga_fd, RGA_BLIT_SYNC, (char *)&rga_req) != 0) {
                RGA_ERR("ioctl failed\n");
                return 1;
        }
将YUV转RGA并上屏

keygen8 发表于 2016-3-21 11:13:21

isle 发表于 2016-3-19 09:17
干嘛要用RGA去做YUV转RGB 直接显示YUV不就好了。

详细代码如下:
static int rga_display(SDL_Overlay *overlay, SDL_Rect* rect)
{
    static int start_display= 0;
    if (!start_display)
    {
      start_display=1;
      int fb_size = rect->w*rect->h*4;
      char* fb_addr = open_fb(fb_size);
      int rga_fd = rga_init(overlay->w, overlay->h, fb_addr, rect->w, rect->h);
      g_fb_info.rga_fd = rga_fd;
    }
    rga_scale(g_fb_info.rga_fd, (char**)overlay->pixels);


    return(0);
}



static int rga_scale(int fd, char **src)
{
    Rga_Request.src.yrgb_addr =(int)(src);
    Rga_Request.src.uv_addr =(int)(src);
    Rga_Request.src.v_addr =(int)(src);
    if(ioctl(fd, RGA_BLIT_SYNC, &Rga_Request) != 0) {
      printf("ioctl rga error!!\n");
      exit(-1);
      return-1;
    }

    return 0;
}

大神帮忙瞅瞅

cloudliu 发表于 2016-3-24 15:08:46

楼主,最近我也在研究rga,可否一起交流,邮箱 oetc1990@126.com

isle 发表于 2016-3-25 09:19:03

Android 上有直接显示YUV的方法。速度很快。网上找找。

keygen8 发表于 2016-3-28 10:22:13

cloudliu 发表于 2016-3-24 15:08
楼主,最近我也在研究rga,可否一起交流,邮箱

rga资料很少的,我也不太懂
页: [1]
查看完整版本: RGA上屏出现横线