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的信号都不会排队等待;它们只是被简单地丢弃。 一个进程可以有选择性地阻…
thumbnail
进程控制
进程控制 进程控制 获取进程ID 每个进程都有一个唯一的非零正数进程ID(PID) getpid函数返回调用进程的PID getppid函数返回他的父进程的PID #include <sys/types.h> #include <unistd.h pid_t getpid(void); pid_t getppid(void); 创…
thumbnail
OSD实时刷新时间
OSD实时刷新时间 源码链接:https://gitee.com/kidwjb/codec_video_audio 海思的OSD(On-Screen Display)部分叫做区域管理,用户一般都需要在视频中叠加OSD用于显示一些特定的信息、(如:通道号、时间戳等),必要时还会填充色块。这些叠加在视频上的OSD和遮挡在视频上的色块统称为区域。 海思m…
thumbnail
Qt多线程显示VPSS输出数据
Qt多线程显示VPSS输出数据 Qt多线程显示VPSS输出数据(基于海思mpp) 代码链接:https://gitee.com/kidwjb/codec_video_audio 在进行实际开发时有时候除了会使用视频编码(VENC模块)输出264文件推流以外,有时还需要进行实时图像显示在设备上,那么接下来笔者提供一种集成Qt基于海思mpp的实时图像显…
thumbnail
V4L2快速上手指南
V4L2快速上手指南 v4l2应用编程 查询设备的属性/能力/功能 打开设备之后,接着需要查询设备的属性,确定该设备是否是一个视频采集类设备、以及其它一些属性 查询设备的属性,使用的指令为VIDIOC_QUERYCAP ioctl(int fd, VIDIOC_QUERYCAP, struct v4l2_capability *cap); 此时通过…
thumbnail
多线程条件变量
多线程条件变量 条件变量 条件变量是用来通知共享数据的状态信息的机制。由于涉及共享数据,因此条件变量是结合 互斥量来使用的。 创建&销毁条件变量 POSIX 用pthread_cond_t 类型的变量来表示条件变量。程序必须在使用pthread_cond_t变量之前对其进行初始化。对那些静态分配的、使用默认属性的pthread_c…
thumbnail
Linux文件目录操作
Linux系统中我们经常习惯于直接使用shell命令进行文件目录操作,但是对于我们的程序来说,有时候并不能像我们使用shell命令一样方便,这时候就需要使用Linux系统的系统调用和自带库函数对文件目录进行操作。 system() or 系统调用? 当然也有人可能会说Linux不是有system函数吗,可以直接使用system(cmd)函数传入sh…