全志F133(D1s)芯片 如何在Tina下进行显示旋转?
问题背景
目前显示多基于横屏的情况设计布局, 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下进行显示旋转?相关推荐
- wxpython 如何在windows下同时显示unicode中日韩文
周海汉 /文 2010.1.6 python版本,python 2.6+,wxpython 2.8+ 问题提出 遇到wxpython 如何在windows下同时显示中文日文韩文越南拼音的问题. win ...
- 全志D1/D1s芯片:芒果派麻雀点RGB屏填坑
前言 最近全志推出了D1处理器,搭载平头哥玄铁906 RISC-V的应用处理器.于是准备入手玩一下,买了芒果派做了基于D1s的麻雀板,D1s是D1内封64M DDR的版本,去掉了hdmi输出,号称点屏 ...
- 全志D1-H芯片 如何在tina使用tplayerdemo 进行rtsp拉流说明?
make menuconfig 选项rtsp Allwinner libcedarx....................................... libcedarx for allw ...
- 如何在DOS下不显示输入字符
@echo off echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com set /p password=Enter passwor ...
- RT-Thread 柿饼派M7 全志F133 ddr 运行xboot
前言 最近拿到 RT-Thread 柿饼派M7的开发板,默认运行的是RT-Thread Persim OS,不过我把固件给擦除了,无法开机了,所以先从最基本的启动下手 开发板板子SDEMMC,也就是板 ...
- linux卸载欧朋浏览器,如何在Centos下安装opera浏览器
如何在Centos下安装opera浏览器 ,Opera目前是Linux平台上性能最优的浏览器,而且Opera中国团队本身即定位于Opera的研发中心,主要也是负责全球Linux平台项目的开发,这个版本 ...
- 如何在Linux下使用rsync
如何在Linux下使用rsync 对于各种组织和公司,数据对他们是最重要的,即使对于电子商务,数据也是同样重要的.Rsync是一款通过网络备份重要数据的工具/软件.它同样是一个在类Unix和Windo ...
- 如何在vs 下敲linux代码且具有提示功能
本文使用的是vs2010 如何在windows 下敲linux代码时具有提示功能那? 1 先安装vs2010 2 安装西红柿插件VA_X_Setup.官网现在地址https://www.wholeto ...
- 如何在linux系统下修改mysql密码_如何在linux下修改mysql数据库密码?linux修改数据库密码的方法...
本篇文章给大家带来的内容是介绍如何在linux下修改mysql数据库密码?linux修改数据库密码的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. Linux下修改Mysql的 ...
最新文章
- 服务器维护怎么联系抖音客服,如何联系抖音客服?
- ajax模拟省市级联动,省市区三级联动和ajax模拟请求(示例代码)
- VSCode搭建ARM(STM32开发环境)
- asp.net 服务器控件的 ID,ClientID,UniqueID 的区别
- Windows7IIS7.5部署Discuz全攻略
- ORACLE初始化参数文件详细文档
- Python 3实现k-邻近算法以及 iris 数据集分类应用
- python 函数 过程_python学习之函数(三)--函数与过程
- iOS-项目常见文件
- linux启动mysql_Linux安装mysql
- ubuntu 安装docker
- 《我也能做CTO之程序员职业规划》推荐序
- linux C 多进程架构,linux c 多进程多线程比较
- JAVA多线程之男朋友和女朋友之间的故事
- 支付宝APP支付功能开发
- PLC梯形图编程基础知识详解(转自:http://gongkong.ofweek.com/2014-09/ART-310012-11000-28882866_2.html)
- 黑马 Java八股文面试题视频教程,Java面试八股文宝典(框架篇)
- 计算机闹铃音乐是什么歌,适合当闹铃的歌曲
- CSS里的BFC和IFC的用法
- android7.1刷supersu,Android系统怎么刷SuperSU
热门文章
- call apply bind 的作用和区别
- case zhen语句_case when zhen else (Sql 2005)
- Android9如何看错误信息提示快速解决问题
- 【转载】裸眼识别二维码
- python随机抽号_Python 随机从字典中抽取数据
- 当你的工作==你热爱的事情,是一种什么体验?
- 大学c语言活动策划,大学校园文化班级趣味运动会活动方案
- SpringBoot报错o.s.b.d.LoggingFailureAnalysisReporter
- Ubuntu1804安装CUDA与CUDNN
- ROS--rospy