- 博客(58)
- 资源 (3)
- 收藏
- 关注
原创 C语言位操作符常用
8,从无符号类型x的第p位开始, 取n位数。3, 求二进制中0的个数。6, 判断一个数的奇偶性。1, 交换两个变量的值。5, 求一个数的相反数。4,求一个数的绝对值。7,求两个数的平均数。
2023-09-07 15:30:58
289
原创 C语言实现面向对象(一) 实现数据与接口的封装
C++中对一个类中的数据及接口有属性的描述, : public, private, protected三种. 本文采用C语言的方式实现三种属性
2023-06-30 14:40:15
675
原创 linux驱动概念学习笔记
1, 什么是用户空间和内核空间?2, 为什么要区分用户空间和内核空间?3, 如何从用户空间进入内核空间?4, 设备号的具体意义是什么?5, printk对打印消息的分类有哪些?6, 如何修改printk的打印等级?7,linux内核编程中怎么创建线程?8,linux驱动开发中i2c的开发流程.9,怎么调试linux驱动程序?如调试i2c的驱动程序10,linux驱动代码中schedule()函数的作用11,字符设备驱动中的filp的私有数据的作用是什么?
2023-03-13 09:35:46
580
原创 Linux驱动学习记录 cpu主频
scaling_cur_freq:保存着 cpufreq模块缓存的当前 CPU频率,不会对 CPU硬件寄存器进。stats目录下给出了 CPU各种运行频率的统计情况,比如 CPU在各频率下的运行时间以及变频次数。cpuinfo_cur_freq:当前 cpu工作频率,从 CPU寄存器读取到的工作频率。负载低的时候降低 CPU频率,scaling_max_freq:governor(调频)可以调节的最高频率。cpuinfo_min_freq:governor(调频)可以调节的最低频率。
2023-02-12 19:34:07
2036
原创 Linux驱动之系统移植----uboot移植(有设备树版本),完整移植.
linux驱动uboot移植, 针对网络驱动, phy驱动 设备树的修改
2023-01-07 20:23:09
2878
原创 linux驱动之调试技巧--- 应用程序远程gdb+vscode调试应用程序, 串口kgdboc调试.ko驱动程序
gdb+vscode图形化调试模式串口kgdboc调试.ko模块的结合联动调试
2022-11-27 00:49:20
3721
3
原创 linux驱动之中断(二)---- 中断驱动程序(tasklet,workqueue,thread_irq)
中断驱动程序(tasklet,workqueue,thread_irq)
2022-11-06 15:50:16
1087
原创 字节跳动 C++面试力扣算法题笔记(一)
一, 单向反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。难度:简单/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * Lis
2022-03-12 20:53:17
2166
1
原创 ffmpeg之mp4文件解封装截取一段视频并重封装
#include <iostream>#include <fstream>#include <thread>extern "C"{#include <libavformat/avformat.h>}//预处理指令导入库#pragma comment(lib, "avformat.lib")#pragma comment(lib, "avutil.lib")#pragma comment(lib, "avcodec.lib")#defin
2021-12-21 13:36:45
1768
原创 ffmpeg解封装到抽取h264
对mp4封装的文件进行解封装并抽取h264重要结构体:AVFormatContext{.... unsigned int nb_streams;//流的数量 AVStream **streams; //存储的流数组 void *priv_data; //存放参数信息 AVIOContext *pb; //I/O 在封装的时候用来写入文件 int64_t duration; //整个媒体的时长 int64_t bit_rate; //整个媒体的比特率 char *url; //打开
2021-12-18 16:57:08
1639
原创 ffmpeg解码步骤及使用硬解码
本文记录h264文件解码, 以及解码如何使用硬件加速解码需要分割h264码流, 这里不介绍h264码流NALU的结构#include <iostream>#include <fstream>#include "xvideo_view.h"using namespace std;extern "C"{#include <libavcodec/avcodec.h>#include <libswscale/swscale.h>}//预处理指令导入
2021-12-13 23:58:55
4715
原创 sws_scale函数像素数据格式的转换yuv转rgba
本文介绍如何使用ffmpeg中的接口转换像素数据格式.假定现有 yuv.yuv(YUV420P格式)文件需要转为RGBA格式将rgb.rgb转成yuv格式#include <iostream>#include <fstream>using namespace std;extern "C"{#include <libavcodec/avcodec.h>#include <libswscale/swscale.h>}//预处理指令导入库#pr
2021-12-09 17:10:34
2136
原创 FFmpeg视频编码步骤
未编码的视频数据放在AVFrame中, 编码的视频数据放在AVPacket本文不介绍源码级的代码, 如何使用ffmpeg的API将AVFrame转为AVPacket并保存在文件中. 以H264编码格式为例子假定有一个400*300尺寸的YUV420P格式的input.yuv文件,需要编码成h264AVFrame跟AVPacket的数据都是需要资源释放的, 不然会内存泄露, 特别是AVPacket数据空间小, 不容易发现废话不多说直接上代码#include <iostream>#inc
2021-12-08 23:18:48
916
1
原创 AVFrame存放一帧视频原始数据
FFmpeg中的AVFrame结构体是用于存放音视频的原始数据的也就是音频的 PCM数据和视频的 YUV数据或者RGB数据这里记录一下视频帧数据的存放通过C++的文件IO来对AVFrame读写, 需要了解AVFrame的成员含义, 以及YUV/RGB数据的存放格式AVFrame的几个重要的成员:uint8_t *data[AV_NUM_DATA_POINTERS];用来存放具体的未压缩的数据 ,如 yuv数据 y就存在 data[0]数组 u就存在data[1]数组 v就粗在data[
2021-12-03 18:40:41
2038
原创 vs2019+Qt搭建带有ffmpeg库,SDL渲染库工程(可以进入ffmpeg源码调试的工程)
前提准备:Qt5.15.x 并在安装使要选择MSVC2017/MSVC2019编译器virtual Studio 2019 并在扩展中安装Qt插件编译好的ffmpeg库及头文件(如何编译ffmpeg源码)SDL库及头文件(SDL源码目录中有VirtualC的目录, 可以直接编译)准备好后应该是这样的:ffmpeg动态库(*.pdb是支持调试用的文件):ffmpeg的头文件:ffmpeg的lib库:SDL动态库:SDL头文件:大概有89个头文件SDLlib库:创建放工程
2021-12-01 23:15:21
1897
原创 FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库
先决条件:需要安装msys2(是一个在windows中模拟linux操作系统的软件) 由于在linux中编译ffmpeg比较简单,所以利用一下msys2, 直接去官网下载安装即可需要安装visual studio 2019一,配置mys2使用vs2019+msys2的环境来编译ffmpeg源码1,打开vs2019命令行工具想要编译出64位的库就选64位的命令行工具, 这里选用32位的作为示范2,输入cl命令 确认下存在编译工具3,打开msys2_shell.cmd文件 : 修
2021-11-28 16:20:48
2683
1
原创 SDL渲染视频尺寸放大导致像素锯齿的问题
//设定缩放算法解决锯齿问题, 采用线性插值算法SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "1");
2021-11-28 15:21:59
1147
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人