使用PThread+消息队列创建一个生产者消费者模型
摘要:一、概述 案例:使用pthread+消息队列(单链表环形队列) 实现生产者消费者模型 各个类的职责说明: 1.message_queue.cpp消息队列 ps:这个类最主要的方法有两个(这个类是线程安全的),一个是enqueueMessage(Message)向消息队列中放入数据,另一个是deque
阅读全文
posted @
2021-11-22 16:53
飘杨......
阅读(693)
推荐(0) 编辑
C使用sprintf函数拼接字符串或者字符串和其他数据类型拼接
摘要:一、概述 案例:1.将两个字符串拼接起来 2.将一个字符串和一个int类型的数据拼接起来 二、代码示例 1.拼接两个字符串 void test2(){ char str1[10]="洛洛杨"; char str2[10] = "我儿子"; char buffer[20]; sprintf(buffe
阅读全文
posted @
2021-11-22 16:20
飘杨......
阅读(2526)
推荐(0) 编辑
Linux注册信号处理函数
摘要:一、概述 案例:编写一个小例子,注册一个信号处理函数,处理进程中断信号(SIGINT),我们运行程序后按住Ctrl+C不能退出这个程序,因为我们在代码中已经对这个信号进行捕获了。,捕获之后它就只走我们自己的逻辑而不走系统默认的逻辑。 信号机制: 进程A给进程B发送信号,进程B收到信号之前执行自己的代
阅读全文
posted @
2021-11-19 10:55
飘杨......
阅读(1239)
推荐(0) 编辑
使用mmap函数建立共享映射区,实现两个不相干的进程之间通讯
摘要:一、概述 案例:使用mmap建立共享映射区,实现两个不相干的进程之间通讯。 存储映射I/O (Memory-mapped I/O) 使一个磁盘文件与存储空间中的一个缓冲区相映射。从缓冲区中取数据,就相当于读文件中的相应字节;将数据写入缓冲区,则会将数据写入文件。这样,就可在不使用read和write
阅读全文
posted @
2021-11-19 10:40
飘杨......
阅读(220)
推荐(0) 编辑
android使用opengles渲染一张图片
摘要:一、概述 案例:使用opengles+egl渲染一张图片 关键类介绍: 1.新建一个DrawPictureActivity.java用于充当显示容器:初始化SurfaceView并设置SurfaceView的callback回调函数。并在其onSurfaceCreated函数中对DrawPictur
阅读全文
posted @
2021-11-19 10:09
飘杨......
阅读(1725)
推荐(0) 编辑
Fatal signal 4 (SIGILL), code 1 (ILL_ILLOPC), fault addr 0xc5614e64 in tid 22126 (w.ywmediaplayer),
摘要:一、概述 案例场景:在使用opengles+egl+surfaceview实现纹理贴图的时候出现的异常。 二、解决办法 原因:在报错位置的方法内,为加上return,因为此方法是明确指定要有返回值的,结果写的时候忘记了。而难受的是编译通过,运行报错。
阅读全文
posted @
2021-11-17 14:42
飘杨......
阅读(2359)
推荐(0) 编辑
android opengles绘制三角形(四边形)
摘要:一、概述 案例:编写一个opengles程序绘制一个三角形、四边形。其中opengles上下文环境及窗口管理由我们自己来维护。即通过SurfaceView+EGL+OpenGL ES来实现绘制一个三角形(四边形) 制作步骤: 1.创建Activity并为这个Activity创建一个布局,在布局中写一
阅读全文
posted @
2021-11-17 10:05
飘杨......
阅读(909)
推荐(0) 编辑
C/C++使用FIFO实现非父子进程之间的通讯
摘要:一、概述 案例:编写两个进程,要求实现两个进程之间的通讯,A进程循环写数据,B进程循读取管道中的数据。 fifo简单介绍:使用fifo这个系统提供的Api函数可实现两个进程之间的相互通讯。其通讯原理是通过mkfifo函数创建一个fifo文件,进程A和进程B通过操作者fifo文件来完成双方的通信。由于
阅读全文
posted @
2021-11-16 09:59
飘杨......
阅读(889)
推荐(0) 编辑
音视频同步原理及同步策略概述
摘要:一、概述 在视频播放的过程中,既能听到视频画面的声音也能看到视频画面,而且人物、画面的出现时机和场景都能和对应的口型(声音)对的上。即视频画面和声音要同步。假如音画不同步,画面和声音就会错乱。而视频画面的渲染和音频的渲染都是再各自不同的线程中进行的,即画面渲染用OpenGL ES,音频的渲染用的是扬
阅读全文
posted @
2021-11-12 13:24
飘杨......
阅读(2131)
推荐(1) 编辑
Android 华为mate30系统相册加载不出来或者加载视频第一帧很慢
摘要:一、概述 案例:公司测试自己的手机华为mate30,鸿蒙2.0操作系统。用App选择相册的时候视频第一帧加载非常慢(有些视频第一帧加载不出来),如果第一帧没加载出来的情况下点击做预览就会出现黑屏和ANR。但是其他像小米、vivo、华为其他型号的手机就没有这个问题。 二、解决方法 找问题过程: 1.由
阅读全文
posted @
2021-11-11 13:24
飘杨......
阅读(2373)
推荐(0) 编辑
Linux使用pipe管道实现父子进程之间通讯
摘要:一、概述 管道的基本概念理解: 1.管道本质上是一块内核缓冲区(一端将数据写入内核,另一端从内核中读取数据),内部的实现是环形队列 2.管道有读写两端,读写两端是两个文件描述符 3.数据的流向是从管道的写端流到管道的读端(数据的流向是单向的) 4.数据被读走了之后,在管道中就消失了 5.pipe只能
阅读全文
posted @
2021-11-11 09:40
飘杨......
阅读(819)
推荐(0) 编辑
Android 最简单的视频播放器之OpenGL ES视频渲染工具封装(三)
摘要:一、概述 OpenGL ES的全称是OpenGL for Embeded System,它是OpenGL的一个子集。其本质上一个一个图形图像处理库。OpenGL ES是优化版,专门针对嵌入式设备的,性能非常的优异。 下面的代码就是利用OpenGL ES 的java api来做视频的渲染工作(主要是操
阅读全文
posted @
2021-11-03 16:30
飘杨......
阅读(1157)
推荐(0) 编辑
Android最简单的视频播放器之MediaCodec硬件解码器封装(二)
摘要:一、概述 MediaCodec是Android提供的硬件编解码器API,根据此api用户可以对媒体格式的文件执行编解码。其单独没法工作还需要配合上一节介绍的MediaExtractor 案例:本例最主要的是三个类,分别是BaseDecoder.java 、AudioDecoder、VideoDeco
阅读全文
posted @
2021-11-03 16:29
飘杨......
阅读(1103)
推荐(0) 编辑
Android 最简单的播放器之MediaExtractor封装(一)
摘要:一、概述 案例:使用MediaExtractor+MediaFormat加载媒体文件信息。为后面使用MediaCodec硬件解码提供基础封装工具类 二、封装代码 1.IExtractor接口(定义公共方法) public interface IExtractor { /** * 获取媒体格式 * *
阅读全文
posted @
2021-11-03 15:55
飘杨......
阅读(821)
推荐(0) 编辑
Android最简单的视频播放器之GLSurfaceView+OpenGL ES+MediaCodec硬件解码实现(四)
摘要:一、概述 案例:使用硬件解码MediaCodec+OpenGL ES来实现一个视频播放器。 源码下载 重点概要: 1.音视频文件提取器MediaExtractor 2.音视频硬件解码API MediaCodec 3.视频渲染使用OpenGL ES、音频渲染使用AudioTrack封装的AudioPl
阅读全文
posted @
2021-11-02 14:09
飘杨......
阅读(2269)
推荐(0) 编辑