- 博客(34)
- 资源 (5)
- 收藏
- 关注

原创 从零完成智能指针
写C/C++程序常常苦恼于内存的释放管理,需要程序开发人员自己去管理,拥有内存控制权限的同时也带来了很多头疼的释放操作,从而导致内存的泄露。那到底有哪些“不正规”操作导致了内存泄漏呢:new了一个对象忘记delete的 delete后忘记将指针置为NULL的 异常或者中断(程序退出)发生在delete之前的 可见new delete需要耗费程序开发人员不...
2019-07-16 23:54:24
336
3

原创 安卓MediaPlayer源码跟读解析
简介: 安卓通过MediaPlayer这个类提供了一整套接口呈现给给客户实现视音频的播放。可是凡事必究其根,我们今天就来看看安卓的MediaPlayer框架(基于Android 8.0)究竟是怎么实现的。因为框架层全是C/C++代码,建议读者拥有相关基础,没有也没关系,都能看懂。概要: 先给出网上扒的MediaPlayer状态图,MediaPlayer常用...
2019-06-22 11:39:58
3122
3

原创 安卓源码消息机制----AMessage,ALooper,AHandler
在安卓底层框架中,大量使用了AMessage,ALopper,AHandler来实现消息循环处理机制。比如在Nuplayer底层播放器中使用了七八个进程来异步处理事务,其错综复杂程度如果单单使用一般的通信机制来处理,可能有点水果刀宰牛的感觉。于是强如谷歌另开发了一套消息循环处理机制来实现消息队列,这就是AMessage,ALopper,Ahandler三剑客。 顾名思义,消息,循...
2019-06-21 16:17:25
2711

原创 JNI入门介绍(Android Studio 3.4)
最近入手安卓的开发与学习,就迫不及待的下载了最新版的AS3.4。可是当我开发JNI程序时,却发现网上的方法大多已经过时,所以在此更新一波以做备忘。 环境:Win10 X86 64位 Android Studio 3.4稳定版 ...
2019-06-09 19:21:10
7668
5

原创 TS封装格式解析出ES视频流
本博客的目的是手写一个程序DEMO,它的作用是将一段TS封装格式的视频解析为一段包含H264编码的ES视频流。 一,DEMO前期准备。 1.1 知识准备。TS全称transport stream,是基于MPEG-2的封装格式(所以也叫MPEG-TS),通常后缀为.ts,.mpg,.mpeg。TS封装格式如今广泛应用于数字电视,在即时通讯传输业务上...
2019-05-31 10:48:53
2830
原创 Error:Cause: unable to find valid certification path to requested target
当你遇到Error:Cause: unable to find valid certification path to requested target,如果按照网上的方法总是不灵验时,考虑一下升级系统版本号(笔者是这样的,哎心塞~)。...
2019-12-02 16:23:55
296
原创 ERROR: Cause: executing external native build for cmake XXX/XXX/CMakeLists.txt
尝试一下把CMakeLists.txt文件放到Src目录下,并修改相应路径。
2019-11-25 14:58:00
4749
原创 求最接近数n的2的次方数
我们当然可以直接暴力求解(负次方不考虑):int findTableSizeof2(const int target){ if(target < 0) return 0; int power = 0, temp = target; int temp2power = 1; while(1){ temp/=2; ...
2019-11-19 20:38:38
4580
2
原创 MP4文件格式分析
Mp4算是一种比较复杂也比较常用的媒体格式,它是在“ISO/IEC 14496-14”标准文件中定义的,属于MPEG-4的一部分,是“ISO/IEC 14496-12(MPEG-4 Part 12 ISO base media file format)”标准中所定义的媒体格式的一种实现,后者定义了一种通用的媒体文件结构标准。MP4目前被广泛用于封装h.264视频和AAC音频,是高清视频的...
2019-11-14 14:17:20
455
原创 安卓音频输出设备切换时framwork代码流程
安卓系统维护着很多种的streamType并且根据音频策略尽量做到了互不影响。这其中的复杂繁复程度绝不是我们使用手机播放个音乐那么简单。比如我们接上蓝牙耳机播放网易云音乐,此时此刻来了电话会怎样?底层代码流程会怎么处理?这些都是我们需要了解并熟知于心的。笔者也是刚接触不久,作此文仅当备忘与加强记忆。 比如我们正在播放音乐,玩家接入了蓝牙耳机会怎么处理呢?...
2019-09-28 13:56:23
1121
1
原创 Crash常见信号列表
信号机制是 Linux 进程间通信的一种重要方式,Linux 信号一方面用于正常的进程间通信和同步,如任务控制(SIGINT, SIGTSTP,SIGKILL, SIGCONT,……);另一方面,它还负责监控系统异常及中断。 当应用程序运行异常时, Linux 内核将产生错误信号并通知当前进程。 当前进程在接收到该错误信号后,可以有三种不同的处理方式。(1)忽略该信号。(2)捕捉该信号并执...
2019-08-20 10:01:23
1333
原创 安卓音量设置流程之MasterVolume
先附上时序图吧,后面会跟上代码讲解: 一、概述 安卓系统的音量主要有MasterVolume和StreamVolume来控制,这对于安卓开发人员来说并不陌生。MasterVolume就是系统音量,这个全局的变量影响着Android系统的所有音频通路;StreamVolume则对应着Android系统各种各样的StreamType音频流类型,比如...
2019-07-20 13:38:10
4236
原创 安卓音频系统启动流程
自Android6.0后,Audio系统便和Media系统分离,独立模块。所以了解Audio系统的启动流程就很有必要,它的启动入口位于:main_audioserver.cpp ,由rc文件引导,主要作用是调用了AudioFlinger和AudioPolicyService这两大模块的初始化接口。 1 进程入口//xref: /frameworks/av...
2019-07-19 11:05:31
1134
原创 安卓视频播放器(TV)
最近写了一款视频播放器的Demo,基于安卓智能电视的(电视与手机的程序大同小异),各种功能都已经完善,特此分享给大家。 https://github.com/Vashonisonly/VideoPlayer...
2019-07-01 19:58:47
2557
原创 安卓MediaPlayer框架之Binder机制
一、Binder简介 Binder是Android系统进程间通信的主要方式之一。 1.在ASOP中,Binder使用传统的C/S通信方式:即一个进程作为服务端提供诸如视音频解封...
2019-06-21 10:37:00
632
原创 输出16进制文件出现很多ffffff的问题解决办法
最近由于一个小需求,需要输出16进制数到文件中,本以为是一个小小的demo就可以解决,谁知道出现了这么个情况: 冷静分析了一下,但凡最高位是1的情况都会多出这么多fffffff,看来是范围超界了。原来:我用来缓存数据的buffer是char型的,16进制数据当然要用unsigned char来表示,不然就会出现上述情况。 修改之后,就豁然开朗了!...
2019-06-12 22:12:31
5768
5
原创 Ubuntu16/18下java编译环境的配置(jdk)
有时候我们用sudo spt-get install 安装的jdk总是找不到bin包,所以我们还是手动安装配置一下更为妥当。这样一方面能更完善的安装配置,又能加深我们的记忆,加强我们的操作能力。 环境:Ubuntu18 64位,安装jdk1.8. 其他环境的安装和目标文件的配置都是大同小异。 一,JDK文件的下载 当然是前往ORACLE官网下载...
2019-06-12 11:06:18
429
转载 深入理解Binder
转载自:https://blog.youkuaiyun.com/innost/article/details/47208049。详细讲解Binder机制
2019-06-09 21:35:59
202
原创 基于Qt的一款五子棋应用(包括AI,双人对战,联网对战,华丽的UI界面,音效等)
先将程序开源,后期补上相应文档介绍,具体代码请参考我的github:https://github.com/Vashonisonly/GoBang- 其中联网对战模块尚且不够完善,后面会修复的。...
2019-06-05 16:14:52
2130
4
原创 TS封装格式小白入门分析之抓包码流分析介绍
首先应当介绍几个基本概念,前面提到TS Header中含有13b的PID,关于PID常见的类型取值如下: PID取值 PID值使用描述 X0000 ...
2019-05-23 15:39:54
3775
1
原创 TS封装格式小白入门分析总结(二)之工具的使用
要分析TS文件格式,EasyICE应该是当之无愧的标杆了。本文基于TS封装格式入门分析讲解,使用工具抓包分析讲解。
2019-05-23 15:00:28
973
2
原创 TS封装格式小白入门分析总结
TS全称transport stream,是基于MPEG-2的封装格式(所以也叫MPEG-TS),通常后缀为.ts,.mpg,.mpeg。TS封装格式如今广泛应用于数字电视,在即时通讯传输业务上大方光彩,本文将详细介绍TS文件的生成过程,以及对其数据结构的详细分析。 关于视音频的基础知识可以参考雷神的博客:https://blog.youkuaiyun.com/leixiaoh...
2019-05-23 14:27:30
6678
2
原创 Qt打包程序提示“应用程序无法正常启动(0xc000007b)”解决方案
如果您用windeployqt打包完成后运行exe文件仍然提示缺少“***dll”文件,然后您找到了这个dll文件放到当前目录下,然后自信的点击exe文件(没错,这个傻吊就是我)却报出了如下错误: 那么有一种可能会不会是您使用的Qt打包工具错了呢?比如我的编译器是: 那么我们使用的打包工具应该是这个:仅仅作为一种可能情况的...
2019-05-07 15:14:56
19021
26
原创 DP算法求解最大连续子数组的和
最近面试好几次遇到同一个面试题:给定一个整数数组,数组里可能有正数、负数和零。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。 《算法导论》里用分治算法解决此类问题,使时间复杂度达到lgN,后来发现此题用动态规划求解更好一点。 动态规划的思想是用已知的结果决策之后的一层。此题中,假设数组为int items[7] = {...
2019-03-29 18:38:00
497
原创 回溯算法与动态规划基于背包问题的浅析
经典问题描述:有n 个物品,它们有各自的重量,现有给定容量w的背包,如何让背包里装入的物品具有最大的重量? 回溯算法解背包问题 假设我们有五个物品,重量分别为2,3,3,7,5,背包所能容纳的最大重量为10.怎么解呢?最笨的...
2019-03-26 19:47:49
1210
1
翻译 C++面试知识点(基础知识篇1)
本文所来源题目转载自http://www.cnblogs.com/Forever-Kenlen-Ja/p/9142799.html。做此答案的补充,一方面为了自己查漏补缺,另一方面希望能给求职者一点帮助。本篇结合了网上一些见解,为入门级别,如有错误望指正,如有侵权请联系作者删除。 1、多态的实现 答:多态即一个接口多种实现,主要体现在静态多态与动态多态。静态多态...
2019-03-25 17:30:30
153
原创 2048小游戏献给大家!
**2048小游戏献给大家!**不多说,直接上代码!#include #include <windows.h>#includeusing namespace std;//定义表格全局变量;int const ROW = 4;int const COL = 4;int game[ROW][COL]...
2018-11-14 14:52:33
717
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人