自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (5)
  • 收藏
  • 关注

原创 C++ STL标准库基础

1.1、C++ STL是什么,有什么作用?1.2、C++ STL的发展历程是怎样的?1.3、C++ STL版本有哪些?1.4、熟悉使用STL是每个C++程序员的必备技能1.5、泛型是什么,C++泛型编程又是什么?1.6、C++ STL要学习哪些知识?1.7、如何衡量一个算法的执行效率?1.8、什么是GUN开源精神,它经历了怎样的发展历程?...

2021-03-28 09:39:23 172

原创 基于FFmpeg + SDL 的视频播放器的在制作 - SDL显示

目录视频显示知识 SDL简介 VC下SDL开发环境的搭建 示例程序运行 SDL视频显示的函数 SDL视频显示的数据结构 进阶 - 示例程序运行 进阶 - SDL中多线程和事件视频显示知识视频显示的流程,就是将像素数据“画”在屏幕上的过程 例如显示YUV,就是将YUV“画”在系统的窗口中SDL简介作用:SDL(Simple DirecMedia Layer)库的作用说白了就是封装了复杂的视音频底层交互工作,简化了视音频处理的难度; 特点:跨平台;开源结构SDL结构如下所

2021-03-14 19:26:07 194

原创 基于FFmpeg + SDL 的视频播放器的制作 - FFmpeg视频解码器

目录视频解码知识 VC下FFmpeg开发环境的搭建 示例程序运行 FFmpeg解码的函数 FFmpeg解码的数据结构视频解码知识纯净的视频解码流程压缩编码数据 -> 像素数据 例如解码H.264,就是“H.264码流->YUV”一般的视频解码流程视频码流一般存储在一定的封装格式(例如MP4、AVI等)中。封装格式中通常还包含音视频码流等内容。 对于封装格式中的视频,需要先从封装格式中提取视频码流,然后再进行解码 例如解码MKV格式的视频文件,就是“MKV ->

2021-03-14 18:22:32 272

原创 基于FFmpeg+SDL的视频播放器的制作-基础知识

基础知识目录视频播放器原理 封装格式(MP4、RMVB、TS、FLV、AVI) 视频编码数据(H.264、MPEG2、VC-1) 音频编码数据(AAC、MP3、AC-3) 视频像素数据(YUV420P、RGB) 音频采样数据(PCM)前言本课程的作用本课程是视音频技术最基础的入门课程 本课程的内容是是视音频相关行业的必备基础知识 本课程对未来的生活有一定的帮助学习本课程的条件C语言 熟悉Visual C++开发环境视频播放器原理常用播放器跨平台系列(非D

2021-03-13 21:15:02 196

原创 基于FFmpeg + SDL 的视频播放器的制作-大纲

课程大纲视音频基础知识 FFmpeg命令行工具的使用 视频解码器(FFmpeg) 视频显示(SDL) 视频播放器(FFmpeg + SDL) 视频播放器-图形界面版(FFmpeg + SDL)视音频基础知识视频播放器原理 封装格式 视频编码数据 音频编码数据 视频像素数据 音频采样数据视频编码器​​​​​​​目的:掌握FFmpeg解码视频的函数 内容:实现“H.264->yuv”视频显示(SDL)目的:掌握SDL显示视频的函数 内容:实现“YUV_-&gt

2021-03-13 17:57:57 114

原创 166. 分数到小数

#define _MAX 10000int find(long long *_con, long long *_rem, long long _c, long long _r, int _cr_len, int *_pos){ int i=0; for (i=0; i<_cr_len; i++) { if (_con[i]==_c && _rem[i]==_r) { *_pos = i; return 0; } } return -1;.

2021-03-10 19:35:40 62

原创 164. 最大间距

class Solution{public: int maximumGap(vector<int>& nums) { if (nums.size() < 2) return 0; sort(nums.begin(), nums.end()); int i = 0, offset_max = 0; for (i=1; i<nums.size(); i++) { if (i == 1) { offset_max .

2021-03-10 19:34:09 58

原创 162. 寻找峰值

class Solution{public: int findPeakElement(vector<int>& nums);};int Solution::findPeakElement(vector<int>& nums){ int i = 0; int tmp = 0; int rtmp = 0; if (nums.size() == 1) return 0; for (i=0; i<nums.size(); i+.

2021-03-10 19:32:19 64

原创 152. 乘积最大子数组

int maxProduct(int* nums, int numsSize){ if (nums==NULL || numsSize<0) { return -1; } int i = 0, j = 0; int max = 0, max_tmp = 1; for (i=0; i<numsSize; i++) { max_tmp = 1; for (j=i; j<numsSize; j++) { max_tmp *= nums[j]; .

2021-03-10 19:30:44 49

原创 151. 翻转字符串里的单词

char * reverseWords(char * s){ if (s == NULL) return NULL; int i = 0, j = 0, k = 0, s_len = 0, char_len = 0; int exist_space = 0; char *tmp_s = NULL, tp = 0; s_len = strlen(s); tmp_s = (char *)malloc(s_len+1); memset(tmp_s, 0, s_len+1); f.

2021-03-10 19:29:13 59

原创 150. 逆波兰表达式求值

class Solution{public: int evalRPN(vector<string>& tokens);};int handle(int n1, int n2, string s){ if (s == "+") return n1+n2; else if (s == "-") return n1-n2; else if (s == "*") return n1*n2; else if (s == "/") return n1/n.

2021-03-10 19:27:06 66

原创 UDP-RTP协议解析

一、RTP协议 数据传输协议RTP,用于实时传输数据。RTP报文由两部分组成:报头和有效载荷二、RTP的会话过程 当应用程序建立一个RTP会话时,应用程序将确定一对目的传输地址。目的传输地址由一个网络地址和一对端口组成,有两个端口:一个给RTP包,一个给RTCP包,使得RTP/RTCP数据能够正确发送。RTP数据发向偶数的UDP端口,而对应的控制信号RTCP数据发向相邻的奇数UDP端口(偶数的UDP端口+1),这样就构成一个UDP端口对。RTP的发送过程如下,接收过程则相反...

2021-03-07 21:29:11 2648

原创 H264视频处理

一、原理H.264原始码流(又称为“裸流”)是由一个一个的NALU组成的。他们的结构如下图所示其中每个NALU之间通过startcode(起始码)进行分隔,起始码分成两种:0x000001(3Byte)或者0x00000001(4Byte)。如果NALU对应的Slice为一帧的开始就用0x00000001,否则就用0x000001。H.264码流解析的步骤就是首先从码流中搜索0x000001和0x00000001,分离出NALU;然后再分析NALU的各个字段。二、协议2.1.基本概..

2021-03-07 16:30:09 781

原创 PCM数据分析

一、音频基础知识声音的本质是空气压力差造成的空气振动,振动产生的声波可以在介质中快速传播,当声波到达接收端时(比如:人耳、话筒),引起相应的振动,最终被听到 声音有两个基本属性:频率与振幅。声音的振幅就是音量,频率的高低就是音调,频率的单位是赫兹(Hz) 当声波传递到话筒时,话筒里的碳膜会随着声音一起振动,而碳膜下面是一个电极,碳膜振动时会触碰电极,接触时间的长短跟振动幅度有关(即:声音响度),这样就完成了声音信号到电压信号的转换。后面经过电路放大后,就得到了模拟音频信号 计算机不能直接处理连..

2021-03-07 15:48:35 2779

原创 RGB、YUV像素数据处理

The scope of the terms Y′UV, YUV, YCbCr, YPbPr, etc., is sometimes ambiguous and overlapping. Historically, the terms YUV and Y′UV were used for a specific analog encoding of color information in television systems, while YCbCr was used for digital encodin

2021-03-07 15:04:13 432

原创 ffmpeg-学习计划

一、音视频基础知识 掌握以下的基础知识,针对每个知识点,要做好学习笔记,资源来自大雷神的博客,以及自己上网搜相关的资料RGB、YUV像素数据处理 - (1day) PCM音频采样数据处理 - (1day) H.264视频码流解析 - (1day) AAC音频码流解析 - (1day) FLV封装格式解析 - (1day) UDP-RTP协议解析 - (1day) 二、ffmpeg程序的使用(ffmpeg.exe,ffplay.exe,ffpr...

2021-03-01 23:15:25 126

原创 嵌入式系统设计师需要掌握什么

考试大纲和教材目录见www.ceiaec.org/资格考试/教材目录)嵌入式系统设计师考试说明62616964757a686964616fe59b9ee7ad94313332313964331.考试要求:(1) 掌握计算机科学基础知识;(2) 掌握嵌入式系统的硬件、软件知识;(3) 掌握嵌入式系统分析的方法;(4) 掌握嵌入式系统设计与开发的方法及步骤;(5) 掌握嵌入式系统实施的方法;(6) 掌握嵌入式系统运行维护知识;(7) 了解信息化基础知识、计算机应用的基础知识;(8) 了解信息

2021-03-01 17:08:30 552

原创 第三章 类与对象(Class && object)-5

十三.const修饰符13.1.数据成员 const修饰类的成员变量,表示成员常量,不能被修改,同事它只能在初始化列表中赋值(C++11支持类中初始化)。可被const和非const成员函数调用。而不可以修改。class A{public: A() :value(99) {}private: const int value; };13.2.常成员函数13.2.1.const修饰函数的意义 承诺在本函数内部不会修改类内...

2021-02-28 22:10:34 108

原创 第三章 类与对象(Class && object)-4

十.案例与系统 string 与 MyString10.1.string的使用#include <iostream>using namespace std;int main(){ //string s("china");//构造器 string s = "china"; //构造器 string s2(s); //拷贝构造器 string s3 = s2; //拷贝构造器 string s4; s4 = s3; //赋值运算符

2021-02-27 13:51:09 99

原创 CPP官方地址

http://www.cplusplus.com/reference/string/string/?kw=string

2021-02-25 12:09:47 31030

原创 第三章 类与对象(Class && object)-3

八.赋值运算符重载(operator=)8.1.发生的时机 用一个已有对象,给另外一个已有对象赋值。两个对象均已创建结束后,发生的赋值行为。8.2.定义类名{ 类名 &operator(const 类名 & another) { 拷贝体 }};class A{ A &operator(const A & another) { //函数体 return *..

2021-02-24 11:55:27 103

原创 166. 分数到小数

给定两个整数,分别表示分数的分子numerator 和分母 denominator,以 字符串形式返回小数 。如果小数部分为循环小数,则将循环的部分括在括号内。如果存在多个答案,只需返回 任意一个 。对于所有给定的输入,保证 答案字符串的长度小于 104 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fraction-to-recurring-decimal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。.

2021-02-22 19:55:01 101

原创 第三章 类与对象(Class && object)-2

三.析构器(Destructor)3.1.对象销毁时期栈对象离开其作用域 堆对象被手动delete3.2.析构器的定义及意义class 类名{ ~类名() { 析构体 }};class A{ ~A() { }} 在类对象销毁时,自动调用,完成对象的销毁。尤其是类中已申请的堆内存的释放。 规则:对象销毁时,自动调用。完成销毁的善后工作。 无返回值,与类名相同,无参。不可以...

2021-02-20 12:07:01 186

原创 第三章 类与对象(Class && object)-1

一.stack声明与定义 引入构造器实现 自定义 栈大小#include <iostream>#include <stdlib.h>#include <stdio.h>#include <string.h>using namespace std;class Stack{public: Stack(int size=1024); ~Stack();// void init(); bool isEm..

2021-02-20 10:14:10 58

原创 66. 加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:[1]解题思路:..

2021-02-19 18:18:35 67

原创 50. Pow(x, n)

实现pow(x,n),即计算 x 的 n 次幂函数(即,xn)。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25解题思路:1、使用遍历的方式,去用每个数相乘,得结果。但是这种的解题思路简单,在leecode提交的时候显示超时。...

2021-02-19 16:39:56 59

原创 第二章 封装(Encapsulation)-1

一.封装1.1.从struct说起 当单一变量无法完成描述需求的时候,结构体类型解决了这一问题。可以将多个类型打包成一体,形成新的类型。这是C语言的封装的概念。 但是,新类型并不包含,对数据的操作。多有操作都是通过函数的方式,去进行封装。 Struct Date#include <iostream>using namespace std;struct Date{ int year; int month; int day;}...

2021-01-03 23:52:57 129

原创 第一章 C++对C的扩展-5

十.命名空间(namespace scope)10.1.为什么要引入namespace 命名空间为了大项目开发,而引入的一种避免命名冲突的一种机制。比如说,在一个大型的项目中,要用到多家软件开发商提供的类库。在事先没有约定好的情况下,两套类库可能在存在同名的函数或是全局变量而发生冲突。项目越大,用到的类库越多,开发人员越多,这种冲突就越明显。10.2.默认Namespace(Global & Function) Global scope 是一个程序中最大的scope。也是...

2020-12-30 21:20:35 84

原创 第一章 C++对C的扩展-4

八.内联函数(inline function)8.1.内联 C语言中有宏函数的概念。宏函数的特点是内嵌到调用代码中去,避免了函数调用的开销。但是由于宏函数的处理发生在预处理阶段,缺失了语法检测和有可能带来的语义差错。8.2.语法 C++提供了inline关键字,实现了真正的内嵌。 宏函数 VS inline函数#include <iostream>#include <string.h>using namespace std;#if...

2020-12-30 19:12:12 79

原创 第一章 C++对C的扩展-3

6.5.引用的本质浅析6.5.1.大小与不可再引用 引用的本质是指针,是个什么样指针呢?可以通过两方面来探究,初始化方式和大小。#include <iostream>using namespace std;struct TypeP{ char *p;};struct TypeC{ char c;};struct TypeR{ char& r;};int main(){// int a;// in..

2020-12-24 23:26:23 108

原创 第一章 C++对C的扩展-2

四.操作符重载 前面用到的<<本身在C语言中时位操作中的左移运算符。现在又用作流插入运算符,这种一个字符多钟用处的现象叫做重载。在C语言本身就有用重载的现象,比如&即表示取地址,又表示位操作中的与。*即表示解引用,又表示乘法运算符。只不过C语言并没有发放重载机制。 C++提供了运算符重载机制。可以为自定义数据类型重载运算符。实现构造类型也可以像基本类型一样的运算特性。#include <iostream>#include <iomanip&g...

2020-12-18 00:18:19 126

原创 第一章 C++对C的扩展-1

一.类型增强1.1类型更严格 const类型的指针赋值给非const类型的指针。C可以编译通过,但是在C++编译不过去。int main(){ const int a = 100; int b = a; const int *pa = &a; int *pb = pa; return 0;}1.2.布尔类型(bool) C语言的逻辑真假用0和非0来表示。而C++有了具体的类型。int main(){ b...

2020-12-09 00:55:01 153

原创 libxml2在海思3559a上的移植

链接:http://note.youdao.com/noteshare?id=e47249ca7b25592414f2c03487972e54&sub=E64B7D5737AA401086DA2C41A8EBD7D1

2020-08-12 17:09:41 161

原创 ACE交叉编译(海思3559a)

链接:http://note.youdao.com/noteshare?id=db1d17b3d954874a0c1ec75be5029da8&sub=D93EAB4B273547FA9B4B34F62F1FABE6

2020-07-28 14:00:53 368

原创 linux内核驱动入门之helloworld

本文基于https://blog.csdn.net/u013280091/article/details/103575050hello.c#include <linux/init.h>#include <linux/module.h>static int __init hello_init(void){ printk (KERN_ERR "hell...

2019-12-20 09:42:15 124

原创 更换ubuntu系统内核版本

本文是将ubuntu12.04版本下低版本内核升级到高版本(3.2.0-23-generic-pae ---> 4.0.4)一、www.linux.org下载内核版本下载链接:https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/下载完成后开始进行解压sudo tar -zxf linux-4.0.4.tar.gz -C...

2019-12-17 15:03:18 1328

qtplayer.rar

qtplayer.rar

2021-07-05

sintel_640_360.yuv

sintel_640_360.yuv

2021-05-14

NT99142datasheet

快捷开发板摄像头NT99142-数据手册,专用于快捷开发板(N32926)

2018-05-08

UNIX 网络编程卷2

UNIX网络编程

2017-05-18

深入理解计算机系统

这是一本不错的书籍,对linux爱好者在学习linux的道路上会有很大的帮助。

2015-11-06

空空如也

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

TA关注的人

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