自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 收藏
  • 关注

转载 LCD原理及裸机程序设计

转载:https://www.jianshu.com/p/ea9426798111一、LCD硬件原理版权声明:本文为小斑马学习总结文章,技术来源于韦东山著作,转载请注明出处!先简单介绍下LCD的操作原理。如下图的LCD示意图,里面的每个点就是一个像素点。1、想象有一个电子枪,一边移动,一边发出各种颜色的光。这里有很多细节问题,我们一个一个的梳理。电子枪是如何移动的?答:有一条CLK时钟线与LCD相连,每发出一次CLK(高低电平),电子枪就移动一个像素。2、颜色如何确定?答:由连接LCD的

2021-09-06 16:49:51 545

原创 YUV数据的几种采样格式以及保存方式

转载:https://www.cnblogs.com/cumtchw/p/10224329.htmlYUV数据的几种采样格式以及保存方式:1.YUV数据的几种采样格式4:4:4 这个不用解释了,这是每个像素占三个字节的内存.4:2:2 Y0U0V0 Y1U1V1 Y2U2V2 Y3U3V3对于这四个像素,采样之后存放的码流为:Y0U0 Y1V1 Y2U2 Y3V3,占用的内存大小为4+4/2 +4/2=84:2:0并不意味着只有Y和U而没有V,他指的是对于每行扫描线来说,只有一种色度分量以

2021-09-04 13:52:26 1164

原创 AVStream和AVCodecParameters部分参数分析

转载:https://www.cnblogs.com/yongdaimi/p/9798001.html一.AVStreamAVCodecContext *codec        // 已过时,使用另一个 codecpar 结构体代替。AVRational time_base         // 时间基数。int64_t duration            // 总时长。流的总时长,该参数不可靠。AVRational avg_frame_rate       // 帧率。AVCodecP

2021-08-24 09:53:45 543

原创 一、avformat_open_input() 函数源代码分析 - 打开媒体文件

基于此博客做的分析 先分析这里。avformat_open_input() 函数主要用于打开音视频多媒体数据,且获得AVFormatContext 信息,其定义在 libavformat\avformat.h。int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options)参数:AVFormat

2021-08-23 16:51:43 1093

转载 AVFormatContext

在使用FFMPEG进行开发的时候,AVFormatContext是一个贯穿始终的数据结构,很多函数都要用到它作为参数。它是FFMPEG解封装(解复用)(flv,mp4,rmvb,avi)功能的结构体。结构体参数:const AVClass *av_class;// 与logging以及avoptions相关的class,由avformat_alloc_context()设置。struct AVInputFormat *iformat;//输入容器格式,只用在解复用(demuxing only),由av

2021-08-23 15:51:06 522

原创 C语言指针数组

指针数组就是说是一个数组,数组中的每一个成员是一个指针。“ [ ] ”的优先级要比“ * ”要高指针数组是一种特殊都数组,指针数组的数组元素都是指针变量。指针数组的定义格式为:类型名称 *数组名称 [ 数组长度 ]例如:char* pf[3];因为下标运算符 [ ] 的优先级高于指针运算符 “ * ”,上述定义等价于:char* (pf[3]);说明pf是一个含有3个元素的数组,数组的元素为指向 char 型变量的指针变量。指针变量是指存放地址的变量。不论指针数组是什么数据类型,指针数组的每

2021-08-21 11:55:14 116

原创 图像处理基础(像素、RGB、YUV )

YUV与像素的关系:YUV是利用一个亮度(Y)、两个色差(U,V)来代替传统的RGB三原色来压缩图像。传统的RGB三原色使用红绿蓝三原色表示一个像素,每种原色占用一个字节(8bit),因此一个像素用RGB表示则需要8*3=24bit。如果使用YUV表示这个像素,假设YUV的采样率为:4:2:0,即每一个像素对于亮度Y的采样频率为1,对于色差U和V,则是每相邻的两个像素各取一个U和V。对于单个的像素来说,色差U和V的采样频率为亮度的一半。(解析不清楚,看下面图解)如有三个相邻的像素,如果用RGB三原色表

2021-08-21 09:36:31 3477 1

原创 FFmpeg常用结构体分析:AVCodecParameters

原创链接AVSream中我们可以使用codec得到AVCodecContext指针,该结构体代表了AVStream中持有的codec相关的上下文,包含了众多编解码器需要的参数信息。一个AVStream对应一个AVCodecContext指针。但是,如果你使用较高的FFmpeg版本就应该发现,codec成员已经不受支持,也就是在AVStream中该成员已经被废弃,而且,AVCodecContext由于太过复杂,FFmpeg的维护者也开始逐渐拆分这个结构体的功能,准备废弃AVCodecContext。目前,官

2021-08-20 11:12:05 1403

原创 Fmpeg 封装、解封装及解码的流程简介

雷神原文链接一、简介视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。他们的过程如图所示解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等

2021-08-19 17:43:46 1087

原创 FFmpeg av_dump_format函数使用

函数说明一般使用av_find_stream_info函数探测码流格式,它的作用是为pFormatContext->streams填充上正确的音视频格式信息。可以通过av_dump_format函数将音视频数据格式通过av_log输出到指定的文件或者控制台,方便开发者了解输入的视音频格式,对于程序的调用,删除该函数的调用没有任何的影响函数参数void av_dump_format(AVFormatContext *ic, int index, const char *url, int is_ou

2021-08-19 11:41:34 978

原创 FFmpeg学习和遇到的问题

遇到的问题:运行 :av_find_input_format(“video4linux2”); 查找usb摄像头的时候,返回 NULL 。解决方式:在configure中要配置下面两个选项:–enable-avdevice 使能硬件设备–enable-indev=v4l2 使能输入设备,并且要指定输入设备v4l2。(–enable-indev= NAME) 也可以用同上方法继续添加其他输入设备。运行脚本./configure,修改成功会有对应提示信息:扩展知识:值得

2021-08-18 17:27:17 830 3

原创 FFmpeg常用结构体分析(一):AVFormatContext

AVFormatContext是存储音视频封装格式中包含的信息的结构体,也是FFmpeg中统领全局的结构体,对文件的封装、编码操作从这里开始。位于avformat.h中,是音视频数据,也就是音视频文件(通常接触到的mp3/mp4等文件)的一种抽象和封装,该文件中包含了多路流,包括音频流、视频流、字幕流等。该结构体的使用,贯穿了ffmpeg使用的整个流程。两个重要的学习链接:[总结]视音频编解码技术零基础学习方法[总结]FFMPEG视音频编解码零基础学习方法...

2021-08-13 15:54:18 292

原创 typedef用法总结

定义一个 typedef,每当要用到相同类型和大小的数组时,可以这样: typedef char Line[81]; 此时Line类型即代表了具有81个元素的字符数组,使用方法如下:  Line text, secondline;  getline(text);

2021-08-11 09:35:21 333

转载 SD开挂载显示文件名不全

挂载的时候要用这个命令 mount -t vfat /dev/sdb1 /mnt/USB/ fat32 识别为vfat ,fat16识别为fat可以参考mount相关知识:1.mount 命令 [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点 -l 查询系统中已经挂载的设备,-l 会显示卷标 -a 依据配置文件/etc/fstab的内容,自动挂载 -t 系统文件,加入系统类型指定挂载类型,可以ext3,ext4, iso9660等系统

2021-08-09 10:08:29 126

原创 QT学习记录

public: MainWindow(QWidget *parent = nullptr);Qt类的构造函数都会有一个parent参数。这个参数通常是QObject* 或者是 QWidget* 类型的。很多情况下它都会有一个初始值0,因此,即便你不去给它复制也没有丝毫的问题。作用parent参数指明了组件的父组件当父组件delete时,Qt可以保证所有子组件——也就是parent指针指向这个组件的所有组件——都会被正确的delete掉。这是Qt能够帮助我们管理一部分内存的原因所在。Qt

2021-08-06 16:21:46 158

转载 Makefile 例子:1

在多文件的项目中,一个工程中的源文件比较多,其按类型、功能、模块分别放在若干个目录中,为了项目更加规整,我们常常要将源文件头文件执行文件等分开,所以在编译Makefile时就要做好整个项目的编译准备工作,Makefile定义了一系列的规则来指定,哪些文件需要编译,需要生成什么目标,需要生成库等等。下面就用实例来列出这些规则,这也是一个基本框架,后边如果需要添加更多的源文件和目录就可以如法炮制,这就可以作为一个较为通用的规则适配到更多的工程中,我也是在这里做一下记录,已被今后需要。有几种思路:1.在每层

2021-07-16 10:33:37 101

原创 shell复习笔记

shell复习笔记1. ls -l /bin/*sh #查看系统中的脚本解释器。2.#!/bin/bash #开头第一行的#,不是注释,其他都是#指定由哪一个解释器来执行脚本中的文件。 3.sh test.sh #指定解释器sh执行。sh是bash的软连接。bash test.sh #指定解释器bash执行。./path/test.sh #指定路径执行4.sh test2.sh #用sh执行,系统会启动新的进程执行子脚本,执行完就返回父shell,

2021-07-13 08:53:12 146

原创 嘉立创提示外形不完整

1.有其他2D线图形“”层“”不对。2.转孔层,画到禁止层去了,禁止层设置了禁止铜和导线。

2021-04-02 10:42:28 3629

原创 pads挖空铜箔方式

进入编辑封装,先画个铜箔,然后旁边画一个2D线(或形状),右击特性,选择为铜挖空区域。再把形状放到铜箔里面。鼠标放到空白区域箭头右击选择形状,将铜箔和挖空区域的形状一起框选,右击合并,这样就完成了挖空。如果合并失败,多试几次。注意要框选到要合并的形状。一般将挖空铜箔的形状放到,需要编辑的铜箔里,会消失看不见了。因为被覆盖了。想看到,就要把铜箔的线径设置小一点。如果,合并之后是凹凸不齐,是因为铜箔线宽设置太大了。需要设置小一点。...

2021-03-15 17:11:07 5336

原创 如何在宝贝详情页中制作一张图片多个链接

详情页中一张图加链接都很简单,问题来了,如何在一张图的不同地方加不同链接呢?分享给大家,一起看看吧!工具:Adobe Dreamweaver CS51.打开软件 首先打开Adobe Dreamweaver CS5软件,在初始页面中可以从“文件”中新建,也可以直接点击“HTML"。2.之后点击“插入”图像,在弹出的窗口中找到你编辑的图片插入就好了在点击玩确定的文件名后会弹出对话筐,不用管,直接点确定就OK了,有两个,全都点确定就好了。3.添加链接在软件窗口的左下角,有一个“绘制矩形热点”这样的

2021-03-08 08:51:10 2488

转载 IIC通信协议总结

(1)概述I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。经常IIC和SPI接口被认为指定是一种硬件设备,但其实这样的说法是不尽准确的,严格的说他们都是人们所定义的软硬结合体,分为物理层(四线结构)和协议层(主机,从机,时钟极性,时钟相位)。IIC,SPI的区别不仅在与物理层,IIC比SPI有着一套更为复杂的协议层定义。下面来分

2021-01-15 16:48:11 282

转载 C语言结构体初始化的四种方法

博客原文:https://blog.csdn.net/ericbar/article/details/79567108定义struct InitMember{ int first; double second; char* third; float four;};方法一:定义时赋值struct InitMember test = {-10,3.141590,"method one",0.25};需要注意对应的顺序,不能错位。方法二:定义后逐个赋值stru

2021-01-11 16:26:36 1446

原创 用c语言表达C++和java

一、以C结构(struct)表达类(class),并创建对象(object)。1.struct 里不能定义函数本身,但是可以定义函数指针(function pointer)属性。typedef struct cc { int id; void (*hello)(); // * 不能将 C 函数的实现代码下入stuct里面。} CC;这个 hello 就是一个函数指针属性。2.在外面实现结构体的函数,(相当于类的方法)。static void my_hello(){ printf("He

2021-01-11 11:33:55 196

转载 HAL层

https://outfox.blog.csdn.net/article/details/8069588看这个上面这个大牛分析得很仔细。

2021-01-09 17:08:08 1791

原创 make menuconfig、Makefile、Kconfig和.config和 LED驱动案例

Linux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编译修改内核有问题无从下手,自己写的驱动不知道怎么编进内核,不知道怎么配置内核,这些问题都和Makefile、Kconfig、.config有关,下面简单谈谈Makefile、Kconfig和.config。三者的作用:1.deconfig 文件:一般由平台厂商提供,内核编译用做.config的参考,注意:如果,缺少该文件,无法进行编译。文件位于:/kernel/…/arch/arm/co

2020-12-29 17:44:21 702

原创 Makefile之Linux内核模块单独编译

前些天写一个驱动模块。竟然写内核模块Makefile时出了问题,于是将其总结下来,下次再用时拿过来改下就行了。#General Purpose Makefile for Linux Kernel module by guoqingboKERN_DIR = /home/gqb/development/linux-kernel-2.6.37#KERN_DIR = /usr/src/$(shell uname -r)#KERN_DIR = /lib/modules/$(shell uname -r)/b

2020-12-21 17:29:01 1239

原创 寄存器和ioremap的使用

一、寄存器1.寄存器概述寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。按照功能的不同,可将寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,也只能并行输出。移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,或串行输入、并行输出,十分灵活,用途也很广。2.寄存器的大小:8位的单片机,

2020-12-21 17:14:33 741

转载 make menuconfig后自动重新配置的原因(全志A20)

重点:要在内核目录下(linux-3.4)运行make menuconfig,才会出现图形界面,在其他目录下运行无效。前一篇博客说到的问题,经过补课后才知道,出现这个问题的原因。1、kernel目录下的Makefile中ARCH赋值方式为:export KBUILD_BUILDHOST := $(SUBARCH)ARCH ?= $(SUBARCH)CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)2、根目录下的Kconfig内容为:mainmenu

2020-12-21 09:03:40 1625 1

原创 Android 系统编译之裁剪Apk

一、为什么要裁剪APK?Android系统在编译过程中,会自带一些我们没必要的软件。每次系统编译打包时,都会默认将这些软件打包到image里面,升级的时候就会有这些软件。并且暂用内存。并且,大部分的系统默认软件我们是用不到的,那就需要将他们裁剪掉。使其不包含在image中打包升级。二、APP的源码文件的位置1、android自带的app的源码位置android的自带的apk源码位置在“android4.4\packages\apps”的文件夹下面。2、厂家自带的app源码位置我买的是芯灵思的

2020-12-15 17:47:35 1601

转载 Android Studio 代码检查Lint工具

Android Studio作为Google官方推荐的IDE,功能非常强大,其中提供了一套静态代码分析工具,它可以帮助我们检查项目中存在的问题,让我们更有规范性的开发App。它可以检查出:xml文件中是否存在hardcode硬编码、unused resources没有使用到的资源、probable bug可能的bug等等。那么现在我们来测试使用它看看:Android Lint的使用找到Analyze目录下的Inspect Code检查代码选项点击然后弹出下面这个框框,在这个列表选项中我们可以选择In

2020-12-15 09:06:50 494

转载 Java 内部类详解

一、前言内部类平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下。从开发的角度来讲,内部类能少用就少用,优先考虑普通类。二、内部类的基本概念在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。内部类形式如下:package com.wz.innterclassdemo;class Outer { // 外部类 private String msg = "Hello World "; // 普通属性 class Inner { //

2020-12-15 09:01:45 64

转载 Java 构造方法私有化与单例模式

先看一个程序:class Singleton { // 定义一个类 public void print() { System.out.println("Hello World"); }}public class Test { public static void main(String args[]) { Singleton inst = null; // 声明对象 inst = new Singleton(); // 实例化对

2020-12-15 08:48:36 211

原创 Java IO操作详解

https://blog.csdn.net/wei_zhi/article/details/52933233

2020-12-15 08:34:53 74

转载 Java synchronized之“可重入锁”

概念可重入锁:自己可以再次获取自己的内部的锁。比如有线程A获得了某对象的锁,此时这个时候锁还没有释放,当其再次想获取这个对象的锁的时候还是可以获取的,如果不可锁重入的话,就会造成死锁。可重入锁也支持在父子类继承的环境中。实例package com.test.sync;public class Main { public int i = 10; synchronized public void operateMainMethod(){ try {

2020-12-15 08:34:12 122

转载 Java - 字符串 与 ASCII码 相互转换

将字符串转成ASCII /** * 字符串转换为Ascii * @param value * @return */ public static String stringToAscii(String value) { StringBuffer sbu = new StringBuffer(); char[] chars = value.toCharArray(); for (in

2020-12-15 08:31:40 1428

原创 强烈推荐的几个Android studio插件

https://blog.csdn.net/wei_zhi/article/details/52861085

2020-12-14 16:47:17 328

原创 Java 多线程详解(一)

Java 多线程详解(一)https://blog.csdn.net/wei_zhi/article/details/52787749Java 多线程详解(二)https://blog.csdn.net/wei_zhi/article/details/52793277Java 多线程详解(三)https://blog.csdn.net/wei_zhi/article/details/52805572

2020-12-14 16:45:44 123

转载 Java 代码块详解

在程序编程中,可以直接使用“{}”定义一段语句。根据定义的位置以及声明关键字的不同,可以分为四种:普通代码块、构造代码块、静态代码块和同步代码块。一般来说代码块是不能单独运行的,它必须要有运行主体。一、普通代码块普通代码块是定义在方法之中的代码块。我们先观察一下代码:package com.wz.thisdemo;public class TestDemo { public static void main(String args[]) { if (true) {

2020-12-14 16:41:31 103

原创 Java反射机制 详解

https://blog.csdn.net/wei_zhi/article/details/52730249

2020-12-14 16:27:05 153

转载 Java 正则表达式详解

一、正则表达式的引出先完成一个简单的程序:判断一个字符串是否全部由数字组成。public class TestDemo { public static void main(String[] args) throws Exception { String str = " 13412a 4124214141232"; if (isNumber(str)) { System.out.println("字符串由数字所组成!"); }

2020-12-14 16:20:25 151

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除