自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 FFMPEG源码之ffmpeg.c解析

函数功能:该函数用于解析命令行参数并进行相应处理,包括拆分命令行参数为内部表示形式、应用全局选项、配置终端和设置信号处理程序、打开输入文件、应用同步偏移量、创建复杂的滤波器图、打开输出文件、检查滤波器的输出。如果出现错误,会将错误信息输出到日志。

2023-07-25 23:37:37 877

原创 FFMPEG源码之过滤器

如果有多个过滤器可以通过遍历过滤器源码数组来创建和连接多个过滤器。每次循环迭代,我们创建一个新的过滤器,并与前一个过滤器进行连接。最后一个过滤器将连接到输出过滤器。请注意,在每次迭代中,我们使用前一个过滤器的输出过滤器上下文作为当前过滤器的输入。下面是使用FFmpeg过滤器功能实现将input.mp4文件中的视频宽度扩大两倍并水平翻转的代码流程。

2023-07-19 22:33:34 339

原创 装饰者模式

在具体装饰器的 operation 函数中,我们先调用父类的 operation 函数,然后在结果中添加特定的装饰标识。它通过创建一个装饰者类,该类包装了原始对象,并在原始对象的基础上添加新的行为或功能。在抽象装饰器的 operation 函数中,我们调用持有的抽象组件对象的 operation 函数。在客户端代码中,我们实例化了具体组件的对象,并通过多层装饰,添加了不同的功能。在客户端代码中,通过创建具体组件类的对象,并依次用具体装饰者对象进行装饰,以实现对组件的功能扩展或修改。

2023-07-17 17:46:21 109

原创 适配器模式

然后,我们创建了一个适配器类 Adapter,它继承自目标接口 Target,并在适配器类中包含一个原始类 Adaptee 的指针。适配器模式的主要功能是将一个类的接口转换为其他类或接口所期望的接口。适配器模式通过创建一个适配器类来实现接口转换,这个适配器类包装了原始类的对象,并将原始类的接口转换为目标接口。最后,在客户端代码中,我们实例化了原始类的对象和适配器类的对象,并通过适配器类的指针调用目标接口的函数。这只是适配器模式的一个简单示例,实际使用中,适配器模式可以根据具体的需求进行更复杂的实现。

2023-07-17 16:16:35 60

原创 FFMPEG源码之函数讲解

上述代码中,首先使用avformat_open_input函数打开了名为"input.mp4"的媒体文件,并通过av_find_best_stream函数查找最佳的视频流。此示例仅为了演示av_find_best_stream函数的基本用法。确保在使用FFmpeg库的其他函数之前正确初始化库,并在使用完毕后进行释放资源的操作。av_find_best_stream函数是FFmpeg库中用于查找最佳匹配的媒体流的函数。av_find_best_stream函数在视频处理和媒体播放等领域有广泛的应用。

2023-07-15 18:06:06 1061

原创 FFMPEG源码之解码数据结构解析

AVFormatContext 结构体在 FFmpeg 库的头文件 libavformat/avformat.h 中有定义。它是 FFmpeg 库中进行媒体文件输入和输出的核心数据结构之一。AVFormatContext 的主要功能是对媒体文件进行封装格式的处理和管理。它是一个上下文结构,保存了音视频流以及其它附加信息的相关数据和操作。

2023-07-13 17:24:50 369

原创 FFMPEG源码之解码流程

【代码】FFMPEG源码之解码流程。

2023-07-13 13:46:38 189

原创 设计模式之观察者模式

在上面的示例中,主题类(Subject)维护了一个观察者列表,并提供了方法来添加(attach)、删除(detach)和通知(notify)观察者的功能。具体观察者类(ConcreteObserver)继承自观察者类,并实现了update()方法来定义观察者接收到通知后的行为。在主函数中,我们创建了一个主题对象(Subject)和两个观察者对象(ConcreteObserver),然后将观察者对象添加到主题对象中。例如,观察者模式还可以支持观察者接收主题的特定状态更新,以便只对感兴趣的状态进行相应的处理。

2023-07-12 17:46:33 38

原创 设计模式之单例模式

在上面的例子中,Singleton类的构造函数被声明为私有,这样其他类无法直接创建实例。需要注意的是,C++11后提供了更简便的实现方式,称为线程安全的延迟初始化。您可以使用std::call_once和std::once_flag来实现延迟实例化并确保线程安全。在这种实现方式中,std::call_once和std::once_flag确保只有一个线程可以执行实例化操作,实现了线程安全的延迟初始化。在单例模式中,一个类只允许创建一个对象(实例),并提供了一个全局访问点来获取这个对象。

2023-07-12 16:44:35 40

原创 设计模式之工厂模式

在上述示例中,抽象产品 Product 定义了产品的通用接口,具体产品 ConcreteProduct 实现了具体产品的功能。抽象工厂 Factory 定义了创建产品的接口,具体工厂 ConcreteFactory 实现了具体产品的创建。工厂模式(Factory Pattern):提供一个统一的接口来创建对象,隐藏对象的具体实现细节。符合开闭原则,当需要添加新的产品时,只需要添加对应的具体产品和具体工厂,不需要修改现有代码。将客户端代码与具体产品的创建过程解耦,使客户端代码更加灵活可扩展。

2023-07-11 18:06:33 40

原创 日常代码疑问记录

【代码】日常代码疑问记录。

2023-06-09 17:45:44 36

原创 EFFECTIVE-C++读书笔记

EFFECTIVE-C++读书笔记。

2022-08-31 10:22:28 279

原创 python基础语法

2022-08-29 16:14:43 257

原创 浅析SSL/TLS的会话流程和源码实现

浅析SSL/TLS的会话流程和源码实现SSL/TLS的概念SSL/TLS的会话交互流程功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入SSL/TLS的概念   官方解释TLS叫做安全传输层协议(TLS)用于在两个通信应用程序之间

2021-11-30 15:26:17 2411 1

原创 2021-09-07

条件变量与互斥锁的区别一、区别二、条件变量的工作流程和补充一、区别1.概念:互斥锁是用来做互斥的,条件变量是用来做同步的2.工作方式:互斥锁是不断轮询,消耗内存。条件变量是等待唤醒,内存消耗小3.多个条件变量还可以同时被唤醒,锁只能等一个一个被解锁,.二、条件变量的工作流程和补充1.pthread_cond_wait的流程主要是分为以下三步操作:①释放Mutex;②阻塞等待;③当被唤醒时,重新获得Mutex并返回。2.必须和互斥锁配合使用,以防止多个线程同时请求pthread_cond_wa

2021-09-07 11:09:10 160

原创 shell脚本命令小记

echo(选项)(参数)选项-e:激活转义字符。使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:•\a 发出警告声;•\b 删除前一个字符;•\c 最后不加上换行符号;•\f 换行但光标仍旧停留在原来的位置;•\n 换行且光标移至行首;•\r 光标移至行首,但不换行;•\t 插入tab;•\v 与\f相同;•\ 插入\字符;•\nnn 插入nnn(八进制)所代表的ASCII字符;$( )与${ }的区别:链接: https://blog.csdn

2021-01-09 11:27:52 145

原创 asterisk服务器的搭建和配置

asterisk服务器的搭建和配置前言一、安装二、修改配置文件1. 配置用户信息2. 配置打电话策略三、重启测试前言  Asterisk 是一个开放源代码的软件VoIP PBX系统,它是一个运行在Linux环境下的纯软件实施方案。Asterisk是一种功能非常齐全的应用程序,提供了许多电信功能,能够把你的 x86 机器变成你自己的交换机,还能够当作一台企业级的商用交换。一、安装  Asterisk安装可以通过在官网上下载源码,自己手动解压编译安装,这种办法比较麻烦,有可能还需要更新各种依赖库,我

2020-12-16 21:15:06 6212 3

原创 ping功能的原理解析和源码实现

目录一、前言介绍二、工作原理三、实现流程1.ICMP报文解析四、总结一、前言介绍 二、工作原理 ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者,这有点象潜水艇声纳系统中使用的发声装置三、实现流程1.ICMP报文解析 这里就得说下icmp报文的格式,我们需要自己手动组一个icmp的包发给主机进行探测 类型 编码 校验和 标识符 顺序号 四、总结

2020-11-26 21:10:45 2011

原创 DNS协议解析

DNS报文格式:头部解析:查询区域格式:回答区域格式 :这里以www.baidu.com的dns解析为例,通过分析发送和接受报文,更加明确协议的内容:发送报文分析:接收报文分析:...

2020-06-19 15:59:41 175

原创 配置DHCP,自动获取IP

硬件环境:am1808内核:linux-2.6.33busybox版本:busybox-1.7.01.配置内核[*]Networking support -->Networking supportNetworking options -->[*]Packet socket[*]IP:kernel level autoconfiguration[*...

2020-03-05 13:20:39 766

原创 编译内核之启动流程分析

源码配置编译: 本文主要是针对linux-2.6.22.6来进行配置编译和源码的分析,这里韦老师已经做好补丁文件和配置文件,直接在此基础上进行配置编译解压缩 tar xjf 压缩文件打补丁 patch -p1 <补丁文件 (这里韦老师已经为我们做好了补丁文件)配置linux有两...

2019-10-21 13:32:59 327

原创 C语言实现单色位图的放大

一般网上很少有C语言实现单色位图的放大程序,下面主要是通过C来实现单色位图的放大#define FXZOOMRATIO 5.8 //x轴放大倍数#define FYZOOMRATIO 5.8 //y轴放大倍数#pragma pack(push, 2)typedef struct { WORD bfType; DWORD bfSize; WORD ...

2019-10-08 14:40:38 773

原创 C语言实现生成二维码的单色位图

硬件环境: Arm 移植过二维码的库qrencode 本文主要是实现一种单色位图的二维码的生成,前期需要自己移植二维码的库,下面就是具体的生成代码,主要流程就是将二维码库函数生成的数据放到自己已经构建好的单色位图中void MakeQrencode(const char *QRTEXT) { QRcode * qrCode; int version =...

2019-10-08 14:22:39 1795 1

原创 uboot修改源码之支持烧写文件系统

烧写文件系统 tftp 30000000fs_mini_mdev.jffs2 nand erase.part root nand write.jffs2 300000002600005b89a8启动之前修改启动参数 setbootargs console=ttySAC0 root=/dev/mtdblock3 rootfstype=jf...

2019-09-27 12:33:18 372

原创 uboot之裁剪和修改参数

环境变量的设置 内核默认分布空间 boot params kernel root 0x00000000-0x00040000 : "bootloader" 0x00040000-0x00060000 : "params" 0x00060000-0x00260000 : "kernel" 0x00260000-0x100000...

2019-09-27 12:28:02 1557

原创 uboot源码修改之支持DM9000

首先找到dm9000目录下的makefile,可以看到一般有两种网卡,cs8900和dm9000,我们用的是dm9000,所以先对头文件进行设置#if 0#define CONFIG_CS8900 /* we have a CS8900 on-board */#define CONFIG_CS8900_BASE 0x19000300#define CONFIG_CS...

2019-09-27 12:22:32 240

原创 源码修改之从nand启动,支持nor和nand

1.将之前写过的bootloader中init.c拷贝到到单板目录smdk2440下 修改重名函数,避免相互调用出错 2.修改start.s 将原来的重定位代码重新进行修改 bl nand_init bl nan...

2019-09-24 18:27:33 448

原创 uboot源码之时钟和串口修改

在uboot源码中添加单板首先添加单板相关文件, board目录下将原来的2410复制成2440,在其基础上修改 cpboard/samsung/smdk2410 board/samsung/smdk2440 -rf添加单板的配置文件,include目录下 复制 cp include/configs/smdk2410.h includ...

2019-09-20 15:54:49 526

原创 unoot的移植和第一阶段源码分析

首先是对uboot源码的大致架构进行分析,在建立工程时加入有效的目录文件board目录 单板相关,由于不支持2440,所以只能使用 samsung/smdk2410 文件夹,加入smdk2410整个目录下所有的源码Arch目录 平台相关,arm的cpu类型存在于arch/arm/cpu下,2440属于arm920t,将arch/arm/cpu/arm92...

2019-09-19 17:09:00 304

原创 Nandflash的寄存器配置

Nandflash的寄存器设置 NFCONF 配置寄存器主要是设置命令的锁存周期,根据下面2440的nand的时序,当WE在使能之前,CLE要先使能,等CLE稳定之后WE才能使能,然后等待一段时间才去拉低CLE .这里就有两个稳定的时间,分别是WE命令使能之前与之后,也就是建立时间与保持时间,就跟他们时间名的后缀一样,S->ser, H->hold...

2019-09-12 15:57:14 1240

原创 Sdram的初始化

寄存器设置 BWSCON 使能sdram时,BWSCON=(1<<24) | (1<<28) =0x22000000 BANKCONn Bank0 ~ Bank5 控制寄存器设置,由于设置的是内存。所以这五个寄存器默认状态就行 0x00000700 ...

2019-09-12 15:45:06 331

原创 有序链表的构造,打印,删除

本文主要是介绍一种有序链表的构造方式#include<stdio.h>#include<stdlib.h>/*构建有序链表 List:0 1 2 3 4 5 6 7 8 9 */typedef struct List{ int data; struct List *next; }List_Node;List_Node *ListCre...

2019-04-17 19:35:19 178

原创 Github的使用

第一步 注册Github的账户,里面会设置自己的账户名,这个要记得,上传代码的时候需要用到 然后创建自己的仓库---->Create a New Repository,如下图 创建完成之后第二步 1.下载Git 使用命令 "sudo apt-get install git" ...

2019-01-23 15:14:18 131

大彩移植程序

大彩基本型显示屏一直到STM3F1

2017-08-26

空空如也

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

TA关注的人

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