- 博客(61)
- 资源 (1)
- 收藏
- 关注
原创 win webrtc vs2019编译 depot_tools/ninja.py: Could not find Ninja in the third_party of
ninja.exe' 不是内部或外部命令,也不是可运行的程序
2023-02-08 14:41:32
3281
2
原创 C++ 类和对象(一)
1、类的定义clase Box{ public: //类的成员变量 int height; int width; int length; //类的成员函数 void set_length(int l); int get_volume(void);};2、对象2.1、定义box1和box2就是Box类的对象。Box box1;Box box2;
2022-04-21 15:08:43
1221
原创 十、数据结构-排序算法:插入排序
插入排序,就是简单的把下一个元素和前面已经排好序的元素一一对比。比如对“3,1,7,5,2,4,9,6”做升序排序:第一次插入结果:3第二次插入1,1和3对比,1<3,结果是:1、3第三次插入7,7和3对比,7>3,结果:1、3、7第四次插入5,5和7对比,5<7,5再和3对比,5>3,结果:1、3、5、7............代码实现:...
2020-04-21 12:00:50
266
原创 九、数据结构:字符串
字符串在c语言里还是常用,存储方式有三种:定长顺序存储、堆分配存储、块链存储定长顺序存储:即数组,有固定的长度,不可改变。堆分配存储:可以改变长度,用动态数组来存储块链存储:用链表来存储字符串1、定长顺序存储,需要预先知道要存储的字符串的长度,事先分配数组大小。2、堆分配存储,需要手动malloc分配空间,使用后要用free释放空间。可以改变数组大小,改变方法用realloc函...
2020-04-20 15:55:23
369
原创 八、数据结构:线性表:队列(先进先出)
1、队列是先进先出,栈是后进先出。2、队列的操作还是入队列和出队列,入队列就把数据放到队列的尾部,出队列就把队列中的第一个数据拿出来。队列需要两个标识,top和tail,分别标识队列的第一个元素和最后一个元素的下一位置,方便队列的操作3、以下是队列的基本操作//说明:队列的尾指针并不是指向队列的最后一个元素,而是指向队列最后一个元素的下一个,由于这里所说的指针并不是一个真正的...
2020-03-18 13:11:01
5138
原创 七、数据结构:线性表-栈(后进先出)
1、栈是一种先进后出的顺序表,和顺序表的区别是:顺序表可以操作任意元素,但是栈只能对栈顶元素进行操作,即后进先出原则。2、栈的操作就只有入栈和出栈两个。3、实现入栈和出栈栈的栈顶用top标识,入栈时top加一,出栈时top减一,top为-1时表示栈空。#include <stdio.h>#define MAX 5int push(int *a,int top,i...
2020-03-17 20:07:37
1679
原创 六、数据结构:线性表-循环单链表
1、循环单链表就是在单链表的基础上,把最后一个节点指向第一个节点。2、下面用循环单链表来实现约瑟夫环。约瑟夫环的原理是这样:一张圆桌做M个人,指定从第k个人开始报数,报到n的人退出,然后从下一个人开始报数,同样报到n的人退出,剩下的最后一个人就是最后的胜者。比如圆桌坐着5个人编号:1,2,3,4,5指定从3开始报数,报到2的人退出,那么第一次报数:3开始,4退出第二次报数:...
2020-03-17 17:27:21
629
原创 五、数据结构:线性表-双向链表
1、双向链表就是一个节点包括三部分:指向前面一个节点的指针,数据,指向后一个节点的指针。2、双向链表比静态链表好理解好操作多了。3、双向链表的节点typedef struct DoubleLink{ struct DoubleLink *previous; struct DoubleLink *next; int data;}doubleLink;...
2020-03-16 20:19:48
177
原创 四、数据结构:线性表-静态链表
1、静态链表是一个存储了很多节点的数组,每一个节点包括两部分:数据和下一个节点的数组下标。一条静态链表包括一个数据表和一个备用表。数据表就是存放数据,备用表就是这块内存中空余的内存。如上图,每一个节点的内容如下typedef struct{ char data; int next;}staticLink;在途中就相当于一个staticLink类型的数组:st...
2020-03-16 14:35:54
224
原创 三、数据结构:线性表-单链表
1、单链表是由一个一个的节点组成的,每一个节点包括两部分:数据和指向下一个节点的指针。一个单链表包括:第一个节点、中间节点、尾节点永远有一个指针指向第一个节点,这个指针就用来表示这个单链表。第一个节点可以是一个没有数据的节点,称为头节点,头节点后的一个节点才开始存放数据叫做首元节点。当然也可以没有头节点,第一个节点就是首元节点。2、声明一个节点typedef struct L...
2020-03-13 15:54:23
290
原创 二、数据结构:线性表-顺序表
顺序表,就是把一堆数据放到连续的内存里。1、创建一个顺序表typedef struct Table{ int *header; //这里并不是一个单纯的指针,而是一个不确定长度的数组 int length; //当前顺序表的长度 int size; //顺序表占用的空间大小}2、初始化顺序表#define Size 5table ini...
2020-03-12 15:26:11
203
原创 一、数据结构:基础
1、数据结构本质上是讨论数据的存储方式,讨论数据的存储方式只有一个目的,那就是方便以后对数据的利用,以及对存储空间负责。2、数据结构包括以下几种(1)线性表结构:顺序表、链表、栈、队列(2)树结构:普通树、二叉树、线索二叉树(3)图结构4、线性表结构(1)顺序表:类似数组,把数据按照顺序存储到一块连续的存储空间内。(2)链表:链表就是把数据存放到并不连续的存储空间内,每...
2020-03-12 10:21:44
163
原创 mysql数据库修改用户权限
1、登陆:mysql -u root -p2、查看现有用户:select host ,user ,authentication_string from mysql.user;3、新建用户:create user 'username'@'host' identified by 'password'eg: create user "testuser"@'host' identified b...
2020-02-18 10:32:59
4629
1
原创 gstreamer:caps negociation
参考https://blog.youkuaiyun.com/techx/article/details/44134911简单的理解,caps negociation 是在两个element通过pad连接以后,要进行对话,确定媒体格式和相关的属性。一、caps negociationplaybin 中的element连接好以后,就要进行caps negociation了,caps negociati...
2019-08-29 15:27:23
597
转载 GTimer计时器
GTimer只是个计时器,当您需要量测两个执行时间点的间隔时就可以使用,例如程序执行的开始与结束时间,您可以使用g_timer_new()建立一个新的GTimer,若不再需要时则使用g_timer_destroy()加以销毁。在g_timer_new()之后,会自动启动计时,您也可以使用g_timer_start()再度启动计时,并于g_timer_elapsed()被调用时,传回自启动后的...
2019-07-18 14:18:35
1290
转载 django admin一些非常有用的设置
https://www.cnblogs.com/wumingxiaoyao/p/6928297.html
2019-07-12 17:41:36
276
原创 django 通过admin管理多个数据库的方法
官方文档:https://docs.djangoproject.com/en/dev/topics/db/multi-db/如果不通过django对数据库进行操作就不要看什么配置路由巴拉巴拉巴拉的了第一步:setting.py中连接数据库,注意:第一个必须要是default默认数据库DATABASES = { 'default': { 'ENGINE': 'd...
2019-07-12 17:39:37
2034
5
原创 C++ 单例模式
单例模式即某个类只能创建一次实例。为了防止对象被多次创建,防止多实例造成一些混乱。实现方式:定义一个static变量,在new对象前先判断一下static变量不为NULL才new。原理:被声明为static的成员变量是一个公共变量,只有一块内存空间,每个实例都拥有这块内存空间,其中一个实例改了它,那其他实例获取到的就是改了以后的值。注意:static类型的类对象必须要在类外面进行初...
2019-07-04 14:25:06
242
原创 mysql 数据库 插入数据,如果数据库中已经存在该条记录就更新
tablename这个表有三个字段,a、b、c,a这个字段是主键。现在要往表里插入数据,如果主键a对应的这条数据已经在数据库中存在 ,就更新这条数据inset into tablename(a,b,c) values('a','b','c') on duplicate key update b = 'b',c = 'c';...
2019-06-28 10:19:16
4696
原创 pytest 跨目录import 报错没有相关模块
目录结构:--A-----a.py--B-----b.py在b.py 中使用a.py中的内容:首先在A目录下加上__init__.py,目录结构变成:--A-----__init__.py-----a.py--B-----b.py在b.py 中使用sys.path.append((os.path.abspath(os.path.join(os.p...
2019-06-17 10:41:55
2684
原创 gstreamer播放教程二:字幕
参考:https://blog.youkuaiyun.com/sakulafly/article/list/2https://gstreamer.freedesktop.org/documentation/tutorials/playback/subtitle-management.html如何获取字幕、音轨、视频流个数,及其具体信息如何切换字幕,切换音轨,切换视频流如何外挂一个字幕如何设...
2019-01-16 19:58:51
951
原创 linux 设置环境变量
1、临时环境变量,更换控制台或者重启以后消失控制台执行:$PATH="$PATH":/filepath2、针对所有用户生效vi /etc/profileexport PATH="$PATH:/filepath"如果要立即生效可以执行:source /etc/profile 3、针对当前用户生效vi ~/.bashrc在末尾添加Export PATH="$P...
2019-01-15 16:21:38
180
原创 gstreamer播放教程一:playbin——获取媒体的流信息、切换流。
以下程序:获取一个媒体文件中流的数目以及流的信息,并且可以切换音轨。参考:https://blog.youkuaiyun.com/sakulafly/article/list/2https://gstreamer.freedesktop.org/documentation/tutorials/playback/subtitle-management.html可以理解为:使用playbin播放媒体,...
2019-01-10 14:30:14
6014
2
原创 gstreamer 常用element
一、bin,这些bin在内部包含了element,但是在外部还是把它看做一个element。1、playbin:它会处理播放器从source经过解复用、解码到显示的过程,同时它也非常灵活,有很多的设置项。2、uridecodebin:从一个uri获取数据,然后解码成原始数据。二、文件输入和输出1、filesrc:读取一个本地文件然后用caps输出媒体数据2、filesink:这...
2019-01-07 17:54:27
1654
1
原创 QT5 有关connect
1、按钮与槽函数连接 QAbstractButton *stepButton = new QPushButton(tr("step[e]")); connect(stepButton, SIGNAL(clicked()), this, SLOT(stepPlay()));2、action与槽函数连接QAction *addAct= new QAction("name",this)...
2018-11-26 17:01:59
1192
原创 QT5安装
QT5 以后下载安装包,安装完成就自己带了qtcreator了,不用纠结还要安装qtcreator。只是安装完成以后,桌面不会自己生成快捷方式,需要自己去找。1、首先下载安装包,下载也是很糟心,该下哪个版本呀,下多少位的呀,下那种编译方式的呀。版本的话5以后的吧。多少位这个就要慎重了,注意64位的是不能使用32位的库的,奇怪。编译方式,mingw是自带了的,不用自己去下载。msvc...
2018-11-09 15:12:31
469
原创 编译链接过程中出现“无法解析的外部符号”,原因及解决办法总结
1、错误为:error LNK2019: 无法解析的外部符号 ___report_rangecheckfailure,该符号在函数 _OBJ_create_objects 中被引用原因:__report_rangecheckfailure是用来检查堆栈缓存溢出的,如果编译的时候打开GS(project property--》Configuration properties--》c/c++......
2018-11-09 15:00:25
122859
3
原创 vs编译动态链接库的方法及使用
1、编译动态链接库(1)在vs中新建项目,把要编译的动态链接库添加到项目里(2)重新生成就行了,然后会在输出目录(debug)下生成dll文件和lib文件。坑:(1)链接出现找不到 msvcrt_winxp.obj。解决办法:1、安装winDDK。WinDDK下载地址http://www.microsoft.com/en-us/download/confirmation.a...
2018-11-09 14:37:29
5373
原创 windows 上vs2017配置gstreamer的开发环境
拖了好久,结果发现是有一个文件位置不对。T-T1、下载runtime和SDK包https://gstreamer.freedesktop.org/data/pkg/windows/1.14.3/也可以下载最新版 https://gstreamer.freedesktop.org-----------> download----->windows----->然后下...
2018-10-24 12:20:04
5753
9
原创 HLS流媒体协议简介
1、工作原理HLS协议的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。2、简述在服务器端,流媒体文件被切割成一个一个的小分片,这些小分片有着相同的时长(常用10s),每一个小分片是一个ts文件。同时 产生一个索引文件(m3u8),索引文件里存放了ts文件的URL。客户端请求方式分两种,一种是点播(vod),一种是直播(live)vod:客户端一次获取...
2018-10-23 10:18:08
2185
转载 GObject[6] 常用的宏定义
GObject经常要用到并且需要自己定义的宏对于 GObject 的子类化,那么在声明类的时候,在头文件中直接插入类似下面的一组宏定义:#define P_TYPE_T (p_t_get_type ())#define P_T(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), P_TYPE_T, PT))#define P_IS_T(obj) ...
2018-10-19 10:41:37
334
原创 GObject [4] 子类继承
其实子类继承也就是基于父类创建一个子类,创建类的方法还是和前面一样,同样需要一个实例结构体,一个类结构体,属性的隐藏也是一样的。上文创建的HWDList类相当于是GObject的子类,那现在的继承问题就是创建一个类,这个类的父类是HWDlist。同样的,子类可以继承父类的属性和方法。...
2018-10-19 10:33:52
283
原创 GObject [3] 子类对象私有属性的模拟-隐藏
1、隐藏什么,为什么要隐藏?隐藏的就是非类类型数据,也就是不是我们要封装成类的数据。隐藏以后就简化了.h文件,.c文件复杂了,使用类的人当然是希望他要看到的.h文件越简单越好。而.c这部分代码通常是第三方并不关注的。2、如何隐藏?方法很多,这里写出两种。第一种,很简单,加上注释 /*private*/ 和/*public*/第二种,将上一篇的例子进行隐藏以后的结果如下:...
2018-10-19 10:15:31
201
1
原创 GObject [二] 简单封装一个类
简单说,GObject就是一个让c语言实现面向对象的工具。或者是让GObject子类化的过程以下就是步骤:1、在.h文件中包含<glib-object.h>2、在.h文件中创建实例结构体和类结构体,以封装一个类。3、在.h文件中定义P_TYPE_T宏,声明p-t-get-type函数。p:项目缩写 T:名称 比如: HW_TYPE_DLIST4、在.c文...
2018-10-19 10:08:56
382
原创 GObject [一] 命名规范
1、创建一个结构体,结构体名可以这样:_项目缩写结构体名,例如 struct _HWDlist{}; // HW为项目缩写;Dlist是这个结构体的名称,首字母大写为了不用每次都写那么麻烦,可以在结构体定义上面使用typedef进行类型重命名。例如:typedef struct _HWDlist HWDlist;2、文件的命名,可以将文件名命名成:项目缩写-文件名,例如:hw-...
2018-10-19 09:48:04
239
原创 FFmpeg 入门[四] 解码函数及数据结构总结
1、大体流程(1)打开视频文件 (2)获取视频流 (3)得到流的编码器 (4)获取该编码器的具体信息 (5)根据(3)(4)查找编解码器 (6)打开编码器 (7)初始化SDL显示图像需要的环境 (8)读取数据帧 (9)解码数据帧 (10)将解码得到的数据帧用SDL显示出来2、解码函数分析(1)av_register_all() 注册库 (2)avformat_op...
2018-10-18 16:29:03
445
原创 FFmpeg入门[三] FFmpeg+SDL2实现简单视频播放器
只做了视频解码,所以没有声音参考:https://blog.youkuaiyun.com/leixiaohua1020/article/details/38868499作了一些更详细的注释,接下来一篇将总结用到的函数,以及数据结构如果编译错误,提示 被声明为已否决,就打开项目——右键——属性——c/c++——SDL检测——写成否。//// FFmpeg_1.cpp : 此文件包含 "main...
2018-10-18 14:58:38
396
原创 GObject[5] 接口
1、接口不是用来搞代码复用以简化对象设计的,而是用来简化对象的上层建筑的设计。2、接口的使用很简单,只要把一个类继承这个接口,然后实现接口中的方法。3、接口的模拟大致分为三个部分:接口申明 接口定义 接口使用4、接口的申明,以下代码(my-iusb.h)就申明了一个MyIUsb的接口,其实也和封装一个类差不多。实力结构体,空的就行。 类结构体,里面第一句要指出父类是GTyp...
2018-10-18 14:27:34
254
原创 FFmpeg的几个重要结构体
AVFormatContext 这个结构体描述了一个媒体文件或媒体的构成和基本信息https://blog.youkuaiyun.com/leixiaohua1020/article/details/14214705AVCodecContext 这是一个描述编解码器上下文的数据结构,包含了众多编解码器需要的参数信息 https://blog.youkuaiyun.com/leixiaohua1020/article/...
2018-10-16 15:33:52
884
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人