RKMEDIA--VO的使用

这一节主要说说rkmedia vo模块的使用。

rkmedia的vo是对DRM接口的封装,提供给用户更方便的使用,rv1126/rv1109支持两个vo图层。

1、首先先介绍一下DRM的测试命令--modetest,用来确认当前屏幕能够正常点亮。 

modetest -M rockchip  //打印出rk平台的显示层的信息


[root@RV1126_RV1109:/userdata]# modetest -M rockchip
Encoders:
id      crtc    type    possible crtcs  possible clones
55      53      DSI     0x00000001      0x00000000

Connectors:
id      encoder status          name            size (mm)       modes   encoders
56      55      connected       DSI-1           68x121          1       55
  modes:
        name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
  720x1280 60 720 768 776 828 1280 1296 1302 1317 65000 flags: nhsync, nvsync; type: preferred, driver
  props:
        1 EDID:
                flags: immutable blob
                blobs:

                value:
        2 DPMS:
                flags: enum
                enums: On=0 Standby=1 Suspend=2 Off=3
                value: 0
        5 link-status:
                flags: enum
                enums: Good=0 Bad=1
                value: 0
        6 non-desktop:
                flags: immutable range
                values: 0 1
                value: 0
        43 brightness:
                flags: range
                values: 0 100
                value: 50
        44 contrast:
                flags: range
                values: 0 100
                value: 50
        47 saturation:
                flags: range
                values: 0 100
                value: 50
        48 hue:
                flags: range
                values: 0 100
                value: 50

CRTCs:
id      fb      pos     size
53      0       (0,0)   (720x1280)
  720x1280 60 720 768 776 828 1280 1296 1302 1317 65000 flags: nhsync, nvsync; type: preferred, driver
  props:
        38 left margin:
                flags: range
                values: 0 100
                value: 100
        39 right margin:
                flags: range
                values: 0 100
                value: 100
        40 top margin:
                flags: range
                values: 0 100
                value: 100
        41 bottom margin:
                flags: range
                values: 0 100
                value: 100
        51 FEATURE:
                flags: immutable bitmask
                values: afbdc=0x1
                value: 0

Planes:
id      crtc    fb      CRTC x,y        x,y     gamma size      possible crtcs
52      0       0       0,0             0,0     0               0x00000001
  formats: XR24 AR24 XB24 AB24 RG24 BG24 RG16 BG16
  props:
        8 type:
                flags: immutable enum
                enums: Overlay=0 Primary=1 Cursor=2
                value: 1
        50 FEATURE:
                flags: immutable bitmask
                values: scale=0x1 alpha=0x2 hdr2sdr=0x4 sdr2hdr=0x8 afbdc=0x10
                value: 2
54      0       0       0,0             0,0     0               0x00000001
  formats: XR24 AR24 XB24 AB24 RG24 BG24 RG16 BG16 NV12 NV16 NV24
  props:
        8 type:
                flags: immutable enum
                enums: Overlay=0 Primary=1 Cursor=2
                value: 0
        50 FEATURE:
                flags: immutable bitmask
                values: scale=0x1 alpha=0x2 hdr2sdr=0x4 sdr2hdr=0x8 afbdc=0x10
                value: 3

Frame buffers:
id      size    pitch

modetest -M rockchip -s 56:720x1280 //正常情况下 在对应屏幕会有彩色条纹显示

-s指定的56 是connectors id号,720x1280 是显示分辨率。rv1126 evb板配上的是此分辨率的屏,所以在正常情况下,屏幕会点亮并出现彩色条纹

 效果图:

2、rkmedia的vo图层有两个:

VO_PLANE_OVERLAY :支持RGB888,ARGB8888,RGB565,422,420(nv12),444,

VO_PLANE_PRIMARY :支持RGB888,ARGB8888,RGB565

如果需要叠加ui界面,一般情况是放在primary层,overlay层用来显示视频

  // VO[0] for primary plane
  stVoAttr.pcDevNode = "/dev/dri/card0";
  stVoAttr.emPlaneType = VO_PLANE_PRIMARY;
  stVoAttr.enImgType = IMAGE_TYPE_RGB888;
  stVoAttr.u16Zpos = 0;
  stVoAttr.stDispRect.s32X = 0;
  stVoAttr.stDispRect.s32Y = 0;
  stVoAttr.stDispRect.u32Width = disp_width;
  stVoAttr.stDispRect.u32Height = disp_height;
  ret = RK_MPI_VO_CreateChn(0, &stVoAttr);
  if (ret) {
    printf("Create vo[0] failed! ret=%d\n", ret);
    return -1;
  }

  // VO[0] for overlay plane
  stVoAttr.pcDevNode = "/dev/dri/card0";
  stVoAttr.emPlaneType = VO_PLANE_OVERLAY;
  stVoAttr.enImgType = IMAGE_TYPE_NV12;
  stVoAttr.u16Zpos = 0;
  stVoAttr.stDispRect.s32X = 0;
  stVoAttr.stDispRect.s32Y = 0;
  stVoAttr.stDispRect.u32Width = disp_width;
  stVoAttr.stDispRect.u32Height = disp_height;
  ret = RK_MPI_VO_CreateChn(0, &stVoAttr);
  if (ret) {
    printf("Create vo[0] failed! ret=%d\n", ret);
    return -1;
  }

如果设置双层同时显示,记得要配置zpos。zpos的值为0或1,1在上层 0在下层。 

查看屏幕信息

cat /sys/kernel/debug/dri/0/summary

VOP [ffb00000.vop]: ACTIVE
    Connector: DSI
        bus_format[100a]: RGB888_1X24
        overlay_mode[0] output_mode[0] color_space[0]
    Display mode: 720x1280p60
        clk[65000] real_clk[65000] type[48] flag[a]
        H: 720 768 776 828
        V: 1280 1296 1302 1317
    win0-0: DISABLED
    win2-0: DISABLED
    post: sdr2hdr[0] hdr2sdr[0]
    pre : sdr2hdr[0]
    post CSC: r2y[0] y2r[0] CSC mode[1]

vo部分遇到的问题不多,只要可以用modetest点亮屏幕,用rkmedia也可以点亮。

rkmedia提供测试vo demo: rkmedia_vo_display_test

暂时关于VO部分写这么多,有新的建议后续加上来

 文章汇总:RKMEDIA使用简介_未_定的博客-CSDN博客

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在MyBatis-Plus中使用VO(Value Object)可以帮助我们将查询结果封装成一个自定义的对象,以便更好地满足业务需求。要在MyBatis-Plus中使用VO,你需要进行以下步骤: 1. 创建一个VO类,该类包含了你需要查询的字段,例如StudentVo。 2. 在对应的Mapper接口中定义一个查询方法,返回类型为List<StudentVo>,并传入查询条件参数,例如queryAllData(Long id)。 3. 在对应的Mapper.xml文件中编写SQL语句,查询所需的字段,并将结果映射到VO对象中。 4. 在你的测试类中,注入对应的Mapper接口,调用查询方法,并传入查询条件参数,获取查询结果。 可以参考以下代码示例: ```java // StudentVo.java public class StudentVo { // 定义你需要查询的字段 private Long id; private String name; // 其他字段... // 省略getter和setter方法 } // StudentMapper.java public interface StudentMapper extends BaseMapper<Student> { List<StudentVo> queryAllData(Long id); } // StudentMapper.xml <!-- 在xml中编写SQL语句 --> <select id="queryAllData" resultType="com.ywt.mybatisplus.model.vo.StudentVo"> SELECT id, name -- 其他字段... FROM student WHERE id = #{id} </select> // 在测试类中使用 @SpringBootTest class MybatisPlusApplicationTests { @Autowired private StudentMapper studentMapper; @Test void queryWrapper() { Long id = 2L; List<StudentVo> studentVos = studentMapper.queryAllData(id); studentVos.forEach(System.out::println); } } ``` 以上示例中,我们创建了一个名为StudentVoVO类,定义了需要查询的字段。在StudentMapper接口中定义了一个查询方法queryAllData,返回类型为List<StudentVo>,并在对应的Mapper.xml文件中编写了查询SQL语句。在测试类中,通过注入StudentMapper接口,调用queryAllData方法,传入查询条件参数,即可获取查询结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Mybatis中使用左连接查询-vo方式](https://blog.csdn.net/Syals/article/details/124494438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值