Firefly开源社区

标题: RGA上屏出现横线 [打印本页]

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


图片如下




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

RGA把YUV转成RGB然后写到FB0上,再说屏幕貌似只支持RGB吧?
你说的是啥意思,其它上屏方式(SDL)速度太慢,行不通的。
作者: keygen8    时间: 2016-3-21 10:06
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
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[0]);
    Rga_Request.src.uv_addr =  (int)(src[1]);
    Rga_Request.src.v_addr =  (int)(src[2]);
    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
楼主,最近我也在研究rga,可否一起交流,邮箱 oetc1990@126.com
作者: isle    时间: 2016-3-25 09:19
Android 上有直接显示YUV的方法。速度很快。网上找找。
作者: keygen8    时间: 2016-3-28 10:22
cloudliu 发表于 2016-3-24 15:08
楼主,最近我也在研究rga,可否一起交流,邮箱

rga资料很少的,我也不太懂




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1