问题背景

目前显示多基于横屏的情况设计布局, UI, 图片, 视频等显示. 而常用到的MIPI屏大多都是竖屏, 为避免重新调整布局, 显示提供了竖屏旋转成横屏的显示方式, 节省客户开发时间.

显示旋转有硬件G2D旋转方式, 软件算法旋转方式, 可根据自己的方案屏情况, 测试对比两种方式选择使用, 主要评估内存占用, 时间效率, 旋转效果.

显示驱动旋转framebuffer配置

1.由于此前公版默认在modules.mk屏蔽了屏旋转相关配置, 如果你的版本是禁用旋转的, 需要把相关配置去掉.

路径:target/allwinner/f133-common/modules.mk

屏蔽以下3个相关选项:

CONFIG_SUNXI_DISP2_FB_DISABLE_ROTATECONFIG_SUNXI_DISP2_FB_ROTATION_SUPPORTCONFIG_SUNXI_DISP2_FB_HW_ROTATION_SUPPORT

修改后的代码如下:

.....
$(eval $(call KernelPackage,net-rtl8821cs))define KernelPackage/sunxi-dispSUBMENU:=$(VIDEO_MENU)TITLE:=sunxi-disp supportKCONFIG:=\CONFIG_DISP2_SUNXI=m \#CONFIG_SUNXI_DISP2_FB_DISABLE_ROTATE=y \#CONFIG_SUNXI_DISP2_FB_ROTATION_SUPPORT=n \#CONFIG_SUNXI_DISP2_FB_HW_ROTATION_SUPPORT=y \CONFIG_DISP2_SUNXI_BOOT_COLORBAR=n \CONFIG_DISP2_SUNXI_DEBUG=y \CONFIG_DISP2_SUNXI_COMPOSER=n \CONFIG_DISP2_SUNXI_SUPPORT_SMBL=y \.....

2.硬件旋转需要确保G2D驱动已经使能

make kernel_menuconfigDevice Drivers  ---><*> SUNXI G2D Driver[*]   sunxi g2d mixer module[*]   sunxi g2d rotate module

3.打开显示驱动旋转支持

make kernel_menuconfigDevice Drivers  --->Graphics support  ---> Frame buffer Devices  --->Video support for sunxi  --->DISP2 Framebuffer rotation support (Disable rotation)  --->( ) Disable rotation( ) Software rotation support      (不要选这个,方案未支持)(X) Hardware(G2D) rotation support (选择G2D旋转)

4.dts配置

board.dts 和 uboot-board.dts同步修改.

&disp{.....disp_rotation_used       = <1>;/* 使能旋转功能 */degree0                  = <3>; /* X:screen index; 0:0 degree; 1:90 degree; 3:270 degree */fb0_width                = <1280>;/*fb 的长宽交换*/fb0_height               = <800>;.....
};

5.旋转后framebuffer编程是需要注意,旋转后的buffer不会直接显示到屏幕上, 需要在应用刷屏的地方调用FBIOPAN_DISPLAY接口.同步旋转后的buffer到LCD上.

以修改公版旋转的GUI刷屏示例:

路径:package/gui/littlevgl-6/lv_drivers/display/fbdev.c

void fbdev_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_p){
....lv_disp_flush_ready(drv);ioctl(fbfd, FBIOPAN_DISPLAY, &vinfo); /*函数最后,在刷屏函数后面,调用 FBIOPAN_DISPLAY 接口*/
}

软件旋转LVGL UI配置

公版上lvgl-6上做了UI旋转算法, 软件交换打点位置达成旋转. 该做法纯软件, 不需要改动其他配置, 在原来未旋转的基础上,修改LV_UI_ROTATE_DIRECTION宏即可.

路径:lv_conf.h

/* UI rotation:
* - 0:  no rotate
* - 1:  90°
* - 2: 180°
* - 3: 270°
*/#define LV_UI_ROTATE_DIRECTION     0

视频旋转配置

视频旋转有 解码器旋转 和 G2D旋转 两种方式.

1.编码器旋转(VE),使用TPlayerSetRotate接口,注意该接口不支持LBC模式, 不支持H265视频旋转.具体请参考<Tina Linux 多媒体解码>文档.

函数原型: int TPlayerSetRotate(TPlayer* p,TplayerVideoRotateTyperotateDegree);
功能 设置视频旋转的角度
参数 p: 通过 TPlayerCreate 函数创建的 TPlayer 指针; rotateDegree: 视频旋转的角度
返回值 成功返回 0,失败返回-1。
调用说明 这个函数需要在 TPlayerSetDataSource() 函数之前调用

2.G2D旋转:

方式一:(1)TPlayerSetG2dRotate()接口使用G2D做旋转。该接口在TPlayerCreate()之后调用。

方式二:(2)直接在在配置文件中配置默认旋转,文件路径:

package/allwinner/tina_multimedia/tplayer/configs/f133_linux_cedarx.conf

48 #use g2d module to rotate the video. notice:F133/R528
49 g2d_rotate_flag = 1
50 g2d_rotate_degree = 1

图片旋转

待支持.

原贴链接:https://bbs.aw-ol.com/topic/2600/
资源获取、问题讨论可以到全志在线开发者社区进行:https://www.aw-ol.com
全志及开发者最新动态可以关注全志在线微信公众号

全志F133(D1s)芯片 如何在Tina下进行显示旋转?相关推荐

  1. wxpython 如何在windows下同时显示unicode中日韩文

    周海汉 /文 2010.1.6 python版本,python 2.6+,wxpython 2.8+ 问题提出 遇到wxpython 如何在windows下同时显示中文日文韩文越南拼音的问题. win ...

  2. 全志D1/D1s芯片:芒果派麻雀点RGB屏填坑

    前言 最近全志推出了D1处理器,搭载平头哥玄铁906 RISC-V的应用处理器.于是准备入手玩一下,买了芒果派做了基于D1s的麻雀板,D1s是D1内封64M DDR的版本,去掉了hdmi输出,号称点屏 ...

  3. 全志D1-H芯片 如何在tina使用tplayerdemo 进行rtsp拉流说明?

    make menuconfig 选项rtsp Allwinner libcedarx....................................... libcedarx for allw ...

  4. 如何在DOS下不显示输入字符

    @echo off echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com set  /p password=Enter passwor ...

  5. RT-Thread 柿饼派M7 全志F133 ddr 运行xboot

    前言 最近拿到 RT-Thread 柿饼派M7的开发板,默认运行的是RT-Thread Persim OS,不过我把固件给擦除了,无法开机了,所以先从最基本的启动下手 开发板板子SDEMMC,也就是板 ...

  6. linux卸载欧朋浏览器,如何在Centos下安装opera浏览器

    如何在Centos下安装opera浏览器 ,Opera目前是Linux平台上性能最优的浏览器,而且Opera中国团队本身即定位于Opera的研发中心,主要也是负责全球Linux平台项目的开发,这个版本 ...

  7. 如何在Linux下使用rsync

    如何在Linux下使用rsync 对于各种组织和公司,数据对他们是最重要的,即使对于电子商务,数据也是同样重要的.Rsync是一款通过网络备份重要数据的工具/软件.它同样是一个在类Unix和Windo ...

  8. 如何在vs 下敲linux代码且具有提示功能

    本文使用的是vs2010 如何在windows 下敲linux代码时具有提示功能那? 1 先安装vs2010 2 安装西红柿插件VA_X_Setup.官网现在地址https://www.wholeto ...

  9. 如何在linux系统下修改mysql密码_如何在linux下修改mysql数据库密码?linux修改数据库密码的方法...

    本篇文章给大家带来的内容是介绍如何在linux下修改mysql数据库密码?linux修改数据库密码的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. Linux下修改Mysql的 ...

最新文章

  1. 服务器维护怎么联系抖音客服,如何联系抖音客服?
  2. ajax模拟省市级联动,省市区三级联动和ajax模拟请求(示例代码)
  3. VSCode搭建ARM(STM32开发环境)
  4. asp.net 服务器控件的 ID,ClientID,UniqueID 的区别
  5. Windows7IIS7.5部署Discuz全攻略
  6. ORACLE初始化参数文件详细文档
  7. Python 3实现k-邻近算法以及 iris 数据集分类应用
  8. python 函数 过程_python学习之函数(三)--函数与过程
  9. iOS-项目常见文件
  10. linux启动mysql_Linux安装mysql
  11. ubuntu 安装docker
  12. 《我也能做CTO之程序员职业规划》推荐序
  13. linux C 多进程架构,linux c 多进程多线程比较
  14. JAVA多线程之男朋友和女朋友之间的故事
  15. 支付宝APP支付功能开发
  16. PLC梯形图编程基础知识详解(转自:http://gongkong.ofweek.com/2014-09/ART-310012-11000-28882866_2.html)
  17. 黑马 Java八股文面试题视频教程,Java面试八股文宝典(框架篇)
  18. 计算机闹铃音乐是什么歌,适合当闹铃的歌曲
  19. CSS里的BFC和IFC的用法
  20. android7.1刷supersu,Android系统怎么刷SuperSU

热门文章

  1. call apply bind 的作用和区别
  2. case zhen语句_case when zhen else (Sql 2005)
  3. Android9如何看错误信息提示快速解决问题
  4. 【转载】裸眼识别二维码
  5. python随机抽号_Python 随机从字典中抽取数据
  6. 当你的工作==你热爱的事情,是一种什么体验?
  7. 大学c语言活动策划,大学校园文化班级趣味运动会活动方案
  8. SpringBoot报错o.s.b.d.LoggingFailureAnalysisReporter
  9. Ubuntu1804安装CUDA与CUDNN
  10. ROS--rospy