- 博客(130)
- 资源 (8)
- 收藏
- 关注
原创 skui学习笔记(五)IMX8平台移植 下篇
三、IMX8平台skia修改更新skia库更新源码的skia库,从m66升级到skui使用的m75版本git fetch aosp --tagsgit checkout android-10.0.0_r1cat cat include/core/SkMilestone.h结果如下:/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can
2020-09-29 16:02:18
710
原创 skui学习笔记(四)IMX8平台移植 中篇
二、修改源码上篇是cmake改动介绍,本篇讲述源码改动core模块移植core模块里面的代码涉及基本功能,包括信号,属性,字符串,路径,应用程序,操作系统抽象,不受平台影响。gui模块移植添加gui/native_visual/imx.h++、gui/native_visual/imx.c++支持imx平台EGL初始化//gui/native_visual/imx.h++namespace skui::gui::native_visual { class imx : public b
2020-09-27 20:00:40
577
原创 skui学习笔记(三)IMX8平台移植 上篇
移植环境使用的skui git分支:commit 201707d06bd29c9ec4b05350b25b777493d5362e (origin/master, origin/HEAD)Author: Ruben Van Boxem <vanboxem.ruben@gmail.com>Date: Tue Sep 1 17:43:19 2020 +0200编译平台:Ubuntu18目标平台:NXP IMX8Q Android9开始移植一、修改CMakeLists.txts
2020-09-27 18:22:15
994
原创 Android.mk语法学习
Makefile 中:= ?= += =的区别:= 是最基本的赋值 (变量的值将会是整个makefile中最后被指定的值):= 是覆盖之前的值 (变量的值决定于它在makefile中的顺序,而不是整个makefile展开后的最终值)?= 是如果没有被赋值过就赋予等号后面的值+= 是添加等号后面的值Android.mk常用的变量变量名参数功能LOCAL_INIT_R...
2020-04-10 14:03:41
618
原创 Android VTS学习
一、编译环境准备推荐的系统环境64-bit Ubuntu LinuxJava 8Python 2.7ADB 1.0.39安装依赖的软件包sudo apt install python-dev python-protobuf protobuf-compiler python-virtualenv python-pip打开设备adbsudo adb devices二、开始编...
2020-04-08 09:26:06
1179
原创 Android bootanimation学习
一、bootanimation启动和结束bootanimation的启动和结束受surfaceflinger控制bootanimation进程启动在android/frameworks/native/services/surfaceflinger/StartPropertySetThread.cppbool StartPropertySetThread::threadLoop() { ...
2020-04-03 10:15:46
1213
原创 skui学习笔记(二)模块分析
四、模块分析skui分为几个模块:# skui itselfadd_subdirectory(core)add_subdirectory(css)add_subdirectory(graphics)add_subdirectory(gui)add_subdirectory(opengl)add_subdirectory(system)目前example里面例程用到的只有core...
2019-12-10 15:56:00
1129
原创 skui学习笔记(一)入门使用
一、skui简介使用Skia作为低级绘图工具包的UI框架。它使用C ++标准库的最新功能(当前针对C ++ 17)。目前这个仓库处于开发阶段,功能还不稳定。该仓库的源代码在github上(https://github.com/skui-org/skui),作者是Ruben Van Boxem,遵循MIT开源协议。这里不得不先介绍一下skia。Skia是一个开源2D图形库,它提供可在各种硬件和软...
2019-12-09 19:15:30
4501
转载 正则表达式元字符列表
下表包含了元字符的完整列表以及它们在正则表达式上下文中的行为: 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。 ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multili...
2019-12-05 14:49:44
162
转载 exec系列函数(execl,execlp,execle,execv,execvp)使用
本节目标:exec替换进程映像exec关联函数组(execl、execlp、execle、execv、execvp)一,exec替换进程映像在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离。这样的好处是有更多的余地对两种操作进行管理。当我们创建了一个进程之后,通常将子进程替换成新的进程映象,这可以用exec系列的函数来进行。当然,exec系列的函数也可以...
2019-08-15 13:21:54
454
转载 Android OMX介绍(总括)
一、OpenMax简介(缩写为:OMX) OpenMAX是一个多媒体应用程序的标准。由NVIDIA公司和Khronos™在2006年推出。 它是无授权费的、跨平台的C语言程序接口序列,这些接口对音频、视频、静态图片的常用操作进行封装。 它包括三层,分别是...
2019-08-09 10:46:06
1785
转载 speech codec (G.711, G.723, G.726, G.729, iLBC)
各种各样的编解码在各种领域得到广泛的应用,下面就把各种codec的压缩率进行一下比较,不正确之处望各位同行指正。Speech codec: 现主要有的speech codec 有: G.711, G.723, G.726 , G.729, ILBC &nbs...
2019-08-09 10:15:37
375
原创 opencv绘制灰阶图
最近需要绘制灰阶图,写了一个opencv绘制灰阶图的函数cv::Mat MakeColorMap(int bkgWidth, int bkgHeight, int mapNum, char *savePath) { if (savePath == NULL) { char *defaultPath = (char *) "/data/colorMap.png"; ...
2019-08-08 19:35:26
2845
转载 Linux下通过sysfs方式控制GPIO(/sys/class/gpio)
转自https://blog.youkuaiyun.com/qq_37858386/article/details/85343380 Linux下通过sysfs方式控制GPIO(/sys/class/gpio)一、首先,查看系统中有没有“/sys/class/gpio”这个文件夹,如果没有就在编译内核的时候勾选 ...
2019-06-24 19:43:28
823
转载 Linux环境中动态库文件(.so文件)的realname,soname和linkname
转自https://blog.youkuaiyun.com/mst9009/article/details/80839252 realname:实际等同于库文件的filename,是在库文件生成时就被指定的,如:gcc -shared -o $(realname) dependence flagsrealname的一般格式为 lib$(name).so.$(major).$(mino...
2019-05-24 10:06:26
528
转载 shader三种变量类型(uniform,attribute和varying)
uniform变量在vertex和fragment两者之间声明方式完全一样,则它可以在vertex和fragment共享使用。(相当于一个被vertex和fragment shader共享的全局变量)uniform变量一般用来表示:变换矩阵,材质,光照参数和颜色等信息。以下是例子:uniform mat4 viewProjMatrix; //投影+视图矩阵uniform mat4 view...
2019-03-04 15:42:36
355
原创 使用cmake生成.so动态库
CMakeLists.txt内容如下:#cmake for GLTranslationset(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/build/out)aux_source_directory(module/GLTranslation GLTRANSLAYION_SOURCE_FILES)add_library(GLT...
2019-02-01 20:29:10
16159
1
原创 用skia实现2D绘制
skia是谷歌的一个开源2D引擎,用来实现利用CPU实现2D图形绘制。下面是老朽写的一个例程,实现功能如下:1.窗口的创建2.图片解码3.在窗口的任意位置绘制指定大小和透明度的图片4.绘制文字因为对OpenGL熟悉,所以不怎么喜欢用SDL,而是采用OpenGL创建绘制窗口。先由glfw创建窗口,然后skia负责渲染,最后opengl只负责将skia传过来的pixel画出来。main函...
2019-01-16 19:45:58
9182
转载 linux select函数详解
原文地址 http://blog.youkuaiyun.com/lingfengtengfei/article/details/12392449在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核: •我们所关心的文件描述符&nb...
2018-12-20 21:03:09
190
转载 YUV格式详解
转自https://www.cnblogs.com/ALittleDust/p/5935983.html工作中经常会使用一些颜色空间,最主要的就是使用RGB空间和YUV空间,把两空间的一些知识记录在此。什么是RGB?RGB是红绿蓝三原色的意思,R=Red、G=Green、B=Blue。2.什么是YUV/YCbCr/YPbPr?亮度信号经常被称作Y,色度信号是由两个互相独立的信号组成。视...
2018-12-04 15:51:39
226
转载 容器中的成员函数swap
容器中的成员函数swap在容器vector中,其内存占用的空间是只增不减的,比如说首先分配了10,000个字节,然后erase掉后面9,999个,则虽然有效元素只有一个,但是内存占用仍为10,000个。所有内存空间在vector析构时回收。一般,我们都会通过vector中成员函数clear进行一些清除操作,但它清除的是所有的元素,使vector的大小减少至0,却不能减小vector占用的内存。...
2018-11-09 14:49:15
361
原创 OpenGL使用精灵图集
使用OpenGL绘制开机动画,fps33,使用精灵图集使用OpenCV载入纹理。运行环境ubuntu16,废话不多说,上源码。主程序main.cpp//// Created by czh on 18-9-10.//#include &amp;lt;glad/glad.h&amp;gt;#include &amp;lt;GLFW/glfw3.h&amp;gt;#include &quot
2018-10-30 17:14:05
730
原创 OpenGL纹理倾斜扭曲问题
在用openGL绘制某些纹理的时候,图片会发生不可描述的倾斜。原图:画出来是这样的:这个问题查出来了,OpenGL要求所有的纹理都是4字节对齐的,即纹理的大小永远是4字节的倍数。通常这并不会出现什么问题,因为大部分纹理的宽度都为4的倍数并/或每像素使用4个字节。但是这个图片是jpg并且宽高不是4的倍数,所以出现了问题。通过将纹理解压对齐参数设为1,这样才能确保不会有对齐问题。使用这个接口g...
2018-10-25 10:36:04
3787
9
原创 OpenCV相机标定全过程
findChessboardCorners() 棋盘格角点检测bool findChessboardCorners( InputArray image, Size patternSize, OutputArray corners, int flags = CALIB_CB_ADAPTIVE_THRESH + ...
2018-10-22 15:19:02
48681
15
原创 OpenCV以及EGL环境配置
安装OpenCV(转自https://blog.youkuaiyun.com/cocoaqin/article/details/78163171)1.去官网下载opencv,在本教程中选用的时opencv3.4.1,其他版本的配置方法异曲同工。下载链接http://opencv.org/releases.html,选择sources版本2.解压下载下来的zip包unzip opencv-3.4.1....
2018-10-15 10:39:45
2004
原创 在NXP I.MX6上做一个基于Opencv和OpenGL的打砖块游戏
最近一直想搞一个网站,一直偷懒233最近一直在研究OpenGL,顺便搞了一个小游戏玩玩。话不多说上图:就是用下面一个板接住弹来弹去的小球,直到把所有砖块都撞碎主程序主要是开辟一个新线程然后后台监听DBus信号,这个游戏监听汽车上的转盘和按钮发送的DBus信号实现操控。新线程以每秒大约30帧刷新界面。command这个类是用来实现转盘和按钮DBus监听。/*****************...
2018-10-10 18:12:49
722
转载 如何快速搭建自己的github.io博客
闲聊一下 在这知识剧烈膨胀的时代,如何记录、整理、分享自己的所学所感无疑显得十分重要,而博客便是最好的方式之一。现在已经有了各式各样的博客平台,有基于第三方的平台的(如博客园等),也有自己搭建的(如基于Ghost等,当然,也有很多干脆自己动手DIY了)。总之,博客的世界已然丰富多彩,留给咱们更多的不是有没有,而是哪个好。这里咱不讨论博客哪家强的问题,只推荐一款博主觉得不错的选择:github.i...
2018-09-07 09:06:35
2463
转载 四种强制类型转换的总结(const_cast、static_cast、dynamic_cast、reinterpreter_cast)
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 dynamic_cast,命名上理解是动态类型转换。如子类...
2018-09-06 21:10:11
229
原创 面向对象的三大特征和五大原则
面向对象的三大特性1.封装封装机制将数据和代码捆绑到一起,避免了外界的干扰和不确定性。它同样允许创建对象。简单的说,一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体。 在一个对象内部,某些代码和(或)某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。2.继承继承是可...
2018-09-06 10:41:23
191
转载 骆驼式命名法
骆驼式命名法就是当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时,第一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母,例如:myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,故得名。 骆驼式命名法(Camel-Case)一词来自 Perl 语言中普遍使用的大小写混合格式,而 Larry Wall 等人所著的畅销书...
2018-09-04 10:15:29
631
原创 遍历扫描文件实现图片转码
windows图片转码程序#include &amp;amp;amp;quot;stdafx.h&amp;amp;amp;quot;#include &amp;amp;amp;amp;lt;Windows.h&amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;gt;#include &amp
2018-09-03 22:36:24
316
原创 linux截屏程序
利用opencv从frambuffer读取桌面图片,实现截屏,并保存为png32格式图片.//// Created by czh on 18-9-3.//#include &lt;unistd.h&gt;#include &lt;sys/stat.h&gt;#include &lt;fcntl.h&gt;#include &lt;sys/ioctl.h&gt;#i
2018-09-03 22:31:15
864
原创 使用OpenCV进行图片转码
将RGBA格式的png图片转为RGB格式,即32位png图片转为24位,通道数量由4通道变为3通道 下面是程序源码:#include <iostream>#include <stdio.h>#include <opencv2/core/core.hpp>#include <opencv2/opencv.hpp>#include &l...
2018-08-23 20:33:44
1167
原创 OpenCV 学习资料
学习OpenCV2——Mat之通道的理解 https://www.cnblogs.com/SuMeng/p/8371026.html
2018-08-23 20:29:47
213
转载 CMake交叉编译
CMake的使用,以及如何将一个项目移植到Android。CMake的用法先让我们简单学习回顾一下cmake的基本知识:基本流程以linux平台为例,使用 CMake 生成 Makefile 并编译的流程如下:编写 CMake 配置文件 CMakeLists.txt 。 执行命令 cmake Path-to-Cmakelist/CMakeLists.txt 生成 Makefi...
2018-08-20 17:38:44
1391
转载 epoll机制:epoll_create、epoll_ctl、epoll_wait、close
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,linux/posix_types.h头文件有这样的声明:#define__FD_SE...
2018-08-14 17:59:30
508
转载 linux学习笔记之FrameBuffer的原理
linux学习笔记之FrameBuffer的原理一、FrameBuffer的原理FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出FrameBuffer这 个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将...
2018-08-14 10:47:28
394
QtDbus资料集合
2018-08-08
实验室智能管理系统
2018-06-04
Zigbee智能家居模块
2018-06-04
51单片机程序打包
2018-06-04
Linux C程序
2018-06-04
回溯法解决N皇后问题(以四皇后为例)
2017-04-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人