年度归档: 2026 年

13 篇文章

thumbnail
虚拟内存的使用
虚拟内存的使用 内存映射 内存映射指的是Linux通过将一个虚拟内存区域和一个磁盘上的对象关联起来,从而初始化这片虚拟内存区域的内容 虚拟内存可以映射到两种类型的对象中的一种: Linux文件系统中的普通文件:一个区域可以映射到一个普通磁盘文件的连续部分,例如一个可执行文件。文件区被分成页大小的片,每一片包含一个虚拟页面的初始内容。因为按需页面调度…
thumbnail
虚拟内存的运作
虚拟内存的运作 什么是虚拟内存 在一个系统中的进程是与其他进程共享CPU和主存资源的,如果太多的进程占用太多的内存,那么部分进程就无法运行,且内存容易遭到破坏。为了更加有效地管理内存并减少出错,现代操作系统提出了虚拟内存的概念 虚拟内存:虚拟内存是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互。它为每个进程提供了一个大的,一致的且私用的…
thumbnail
FFMPEG音视频流合并源码分析
音视频流合并 音视频流合并 笔者目前有两个流分别是音频流和视频流,现在需要合并成复合流用于保存文件和网络推流 笔者的ffmpeg接口移植的RV1126,可前去借鉴RV1126的SDK 具体线程如下: 生产者线程 消费者线程 ────────────────────────────────────────────────────────── get_…
thumbnail
海思mpp视频编码
海思mpp视频编码 海思MPP框架 代码仓库:https://gitee.com/kidwjb/codec_video_audio/tree/master/%E6%B5%B7%E6%80%9D 海思mpp主要分为:视频输入(VI)、视频处理 (VPSS)、视频编码(VENC)、视频解码(VDEC)、视频输出(VO)、视频侦测分析 (VDA)、视频拼…
thumbnail
C++封装性
C++封装性 本篇文章是笔者在编写C++代码时遇到对于C++封装性问题的思考,由于笔者一直对C比较熟悉,C++是半吊子入门,没有系统学习,所以如有提出简单的问题望大家见谅长期更新 全局变量定义在哪 在编写代码时遇到需要在源文件定义一个全局变量,如果是C语言我可能会直接定义成一个全局变量,但是在C++中我是应该定义在类成员中还是就定义成源文件中的全局…
thumbnail
源文件头文件那些事
源文件头文件那些事 不知道是否很多人也和我有一样的疑惑,哪怕写了这么久的C\C++代码,但是仍然会对某个需要引用的头文件到底应该放到头文件还是源文件停顿,如果是源文件需要用到的函数放到哪里;如果是头文件类声明某个成员需要外部定义类型又放到哪里;所用到的某个定义又要放到哪里 那么就跟随我一起解开这些影响不大但是又事关代码规范的小秘密吧 外部头文件引用…
thumbnail
海思mpp音频编码
音频编码 音频编码 海思MPP AUDIO模块包括音频输入、音频输出、音频编码、音频解码四个子模块。音频输入(AI)和输出模块(AO)通过对芯片音频接口的控制实现音频输入输出功能。音频编码和解码模块提供对G711、G726、ADPCM等格式的音频编解码功能,并支持录制和播放LPCM格式的原始音频文件。 详细音频模块介绍详见《海思MPP 媒体处理软件…
thumbnail
单生产者多消费者框架
单生产者多消费者框架 学会这篇文章,让你如直哉撩发一般轻松战胜多线程调度😀 前言 场景: 编码后获得一帧视频数据,现在需要网络推流和保存本地文件,那么是创建一个生产者线程和两个消费者线程吗?一个消费者线程获取到数据用掉之后是不是还得保留给下一个消费者线程? 背景: 原本只有推流场景,那么就是基础的单生产者消费者,生产者编码生成一帧数据后放入队列并通…
thumbnail
FFMPEG&网络推流
FFMPEG&网络推流 FFMPEG 记录ffmpeg的开发学习过程,代码借鉴了许多RV1126的sdk 解复用模块(Demuxer) 解复用模块负责识别文件类型,媒体类型,分离出各媒体原始数据流,打上时钟信息后送给下级decoder filter。其核心是AVFormatContext结构体,它封装了整个媒体文件的信息,管理所有的音视频流…
thumbnail
Linuxの信号
Linuxの信号 信号允许进程和内核中断其他进程,它是一种更高层的软件形式异常。 一个发出而没有被接收的信号叫做待处理信号(pendingsignal)。在任何时刻,一种类型至多只会有一个待处理信号。 如果一个进程有一个类型为k的待处理信号,那么任何接下来发送到这个进程的类型为k的信号都不会排队等待;它们只是被简单地丢弃。 一个进程可以有选择性地阻…