- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 AudioFramework面试题
首先会用通知AudioManager.java,告诉现在要设置usb了,然后会通过jni调到APM中到函数中.在中会分别调用。
2025-04-06 20:31:01
901
原创 getOutputForAttr解析
getOutputForAttr三部曲根据输入attr参数到Engine模块去确定音频StreamType属性确定规则主要对比使用输入参数attr的与ProductStrategy的attr对比,依次对比contentType、usage等,相等就选择该ProductStrategy的配置streamType。(其实这里通过attr的几个参数(usage/content-type/flag)基本上就是确认唯一的streamType和ProductStrategy)
2025-03-29 11:20:14
536
原创 AudioFlinger与AudioPoliceManager初始化流程
fill:#333;创建AudioFlingerServerAdapter创建AudioFlinger对象创建DevicesFactoryHalInterface创建EffectsFactoryHalInterface调用createPreferredImpl遍历HAL版本 (7.0->>4.0)检查hasHalService?加载libaudiohal@version.so获取createIDevicesFactory函数调用createIDevicesFactory。
2025-03-29 11:17:53
1230
原创 Android Audio音量设置
fill:#333;color:#333;color:#333;fill:none;是否Java层调用adjustStreamVolume静音调整?mute。
2025-03-29 11:13:45
742
原创 耳机插入audiotrack重新创建过程.md
在USBHostManager.java中存在线程UsbService host thread,作用是监听usb拔插消息的。当USB耳机插入后USBHostManager会接收到usb设备事间调用usbDeviceAdded函数。
2025-03-29 11:09:40
856
原创 学习Android Audio 焦点记录
定义:音频焦点是系统为应用分配的一种资源,用于控制音频播放的优先级。作用:避免多个应用同时播放音频,导致声音混乱。音频焦点框架主要就是对各个APP的焦点进行注册、通知、释放。焦点释放可能会在framework完成那么app也就收不到相应的焦点通知了。
2025-03-12 20:06:43
1000
1
原创 播放器系列4——PCM重采样
在本项目中使用ffmpeg对pcm数据进行重采样,使其输出格式满足SDL的要求。重采样主要改变了三部分内容采样率采样格式声道数。
2025-03-04 20:43:27
756
原创 播放器系列3——解码
音频编码格式是将音频数据转换为可存储或传输的格式的过程。在音频领域,常见的编码格式包括PCM(脉冲编码调制)、MP3、AAC等。每种格式都有其特定的特点和应用场景。视频编码格式是将视频数据压缩成更小的数据块,以便于存储和传输。常见的视频编码格式包括H.264、H.265、VP8、VP9等。这些格式在压缩效率和视频质量之间取得了平衡。YUV编码是一种广泛应用于数字视频和图像处理中的颜色编码方式,其核心思想是将图像的颜色信息分解为亮度(Y)和色度(U和V)两个部分。
2025-03-04 20:42:20
893
原创 播放器系列2——解复用
功能: 打开媒体文件并初始化AVFormatContext参数ps: 指向AVFormatContext指针的指针url: 媒体文件路径fmt: 指定输入格式,通常为NULL以自动检测options: 额外的选项字典返回值: 成功返回0,失败返回负值错误码示例fprintf(stderr, "无法打开文件\n");return -1;在我们开始学习FFmpeg之前,我们先来了解一下容器的概念。说到容器大家一定会想到水杯、箱子、罐子等,这些都是容器的例子。
2025-03-02 10:02:23
991
原创 播放器系列1——总概述
读取视频文件、读取网络文件、读取音频文件,大概分为这三种,目前代码中仅实现了读取视频文件播放,也就是当没有video数据的时候播放器不可使用。
2025-02-21 22:34:57
429
原创 通过基类CWinThread创建线程对话框
点击图一前两个按钮将弹出图二对话框,对话框二中时间在循环+1,图一三按钮是一个循环按钮,点击之后,会产生一个下图循环。产生的效果就是,若是线程开的对话框,仍然在+1,若不是则要等循环过后在执行+1。图一图二1)在资源视图中添加对话框IDD_GUIDLG。并且生成类CMyDlg2)在项目中添加基于CWinThread基类的自定义名称子类CMyThread.3)在图一...
2019-04-12 20:06:32
451
原创 SetWindowOrgEx和SetViewportOrgEX区分 SetWindowExtEx和SetViewPortExtEX区别
SetWindowOrgEx和SetViewportOrgEX都是移动坐标原点。不同在于一个是移动窗口左边一个是逻辑坐标系。使用这四个函数之前要设置映射模式SetMapMode函数下面的连接为他的使用方法。https://blog.youkuaiyun.com/charlessimonyi/article/details/8264572Ellipse(hdc, -200, -200, 200, 200...
2019-03-28 10:09:04
405
原创 windows高级程序设计杨立祥教授输出字符
sysmet.h/*----------------------------------------------- SYSMETS.H -- System metrics display structure -----------------------------------------------*/#define NUMLINES ((int) (sizeof sysme...
2019-03-13 11:33:44
253
原创 windows高级程序设计杨立祥教授1主框架分析
已经听了5节课了,杨立祥老师可以说是目前我听过讲课最有意思的老师了。这么课主要讲的是windows程序设计,目前在讲扫雷部分,之所以选择讲解这个程序是因为小小的扫雷包含了大部分windows程序思想和基础的API调用。首先讲的是windows的消息机制(1)比如用户点击鼠标,输入设备会像操作系统发射鼠标相应信息,操作系统会判断此时鼠标的位置在哪个应用程序窗口上边。选定应用程序,操作...
2019-03-06 11:11:53
580
1
原创 基于opencv4.0文本矫正
上一篇的代码如果然后处理下面图片就会失效,因为没有明显的轮廓信息。但观察图片就会发现图中每行文字都在一条直线上,所以这时候考虑用霍夫检查,通过画出的每行直线计算角度然后矫正图片。1.图片灰度化2.canny运算,找出文字轮廓3霍夫检测,得到每行直线4计算角度矫正图片#include <iostream>#include <opencv2/openc...
2019-03-04 20:47:10
599
原创 基于opencv4.0图像旋转
参考了https://github.com/starhiking/opencv-programme/blob/master/recorrection.cpphttps://www.cnblogs.com/skyfsm/p/6902524.html这两篇文章,详细内容大家去这两个博客看吧,我这边就是记录一下怎么实现的方便以后自己复习。我们的目的就是将斜着的图案改变角度。看到这个图片先...
2019-03-04 16:00:37
974
1
原创 MFC在CDockablePane中添加对话框
1.创建MFC项目,选择使用菜单栏和工具栏,这时会发现CMainFrame基类是CFraneWndEx 2.建好项目打开类向导,添加MFC类,基类是今天的主角CDockablePane3.在CMainFrame类的OnCreate中添加如下代码 if (!dock.Create(_T("窗口"), this, CRect(0, 0, 500, 500), TRUE, ...
2019-02-25 17:33:42
2448
2
原创 进阶算法——希尔,快速,堆排序,归并排序
希尔算法:希尔算法是在插入排序上的改进,因为插入排序在基本有序的队列中,会排序很快,所以希尔算法相比插入排序,是通过循环将数组变成基本有序。先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况...
2019-01-16 15:33:16
355
原创 基本的算法——冒泡,插入,选择
冒泡基本思想:(从小到大排序)1.比较相邻的两个数,如果第一个比第二个大交换他们的位置。2对每个元素进行相同的操作,一直到结尾。这时数组的最后一个数一定是最大的数字。3.再次重复操作,不过不用比较最后一个数字,这时倒数第二个数字为数组第二大。4.重复操作,直到排序结束。 选择排序:影响算法速度的关键因素有两点:1,数字之间的比较 2.数字位置之间...
2019-01-16 10:46:03
204
原创 二叉树非递归遍历
二叉树遍历一般想到的都是递归遍历这里介绍使用栈进行遍历首先添加单项链表https://blog.youkuaiyun.com/weixin_40317531/article/details/85985566由于但单向链表是企业链表所以可以用户设置节点将每个节点串联起来。下图为链表节点下图为二叉树节点下图,初始化链表节点非递归void NonRec...
2019-01-16 09:44:52
179
原创 传智数据结构——二叉树
参考本文http://blog.51cto.com/9291927/20687451、树的简介树是一种非线性的数据结构,是由n(n >=0)个结点组成的有限集合。如果n==0,树为空树。如果n>0,树有一个特定的结点,根结点根结点只有直接后继,没有直接前驱。除根结点以外的其他结点划分为m(m>=0)个互不相交的有限集合,T0,T1,T2,...,Tm-1,每个结...
2019-01-09 20:11:05
244
原创 智博数据结构——约瑟夫问题
约瑟夫问题例题:N个人围成一个圆形(联想循环链表),首先第一个人从1开始一个人一个人顺时针报数,报到第M个人,令其出列。然后再从下一个人从1顺时针报数,报道第M个人,在令其出列,如此下去,求出列顺序。假设m=8,n=3循环链表https://mp.youkuaiyun.com/postedit/85985566#include "CircleLinkList.h"#include &l...
2019-01-07 10:03:33
340
原创 博智数据结构——单项循环链表
单项循环链表的尾节点不再指向NULL而是指向头节点。下图为申请链表节点和链表下图 循环链表的初始化,由于刚刚初始化没有插入数据,所以头节点的下一个指向指针是自己的地址。#include "CircleLinkList.h"#include <string.h>#include <stdio.h>typedef struct PERSON{ ...
2019-01-07 09:40:16
264
2
原创 博智数据结构——企业链表
企业链表节点中不包含数据项,只有指针项,数据项用户自己定义,只需要把链表节点放入用户自定义数据项的顶端即可。链表的结构体定义如下:#ifndef LINKLIST_H#define LINKLIST_H#include <stdlib.h>#include <stdio.h>//链表小结点typedef struct LINKNODE{...
2019-01-06 21:57:42
195
原创 博智数据结构——单项链表
链表由一系列节点组成,每个节点包含两个域( 指针域和数据域)包含有个没有任何数据的头节点是方便,其他数据的插入删除,起到标志位的作用。#ifndef LINKLIST_H#define LINKLIST_H#include <stdlib.h>#include <stdio.h>//链表节点typedef struct LINKNODE{ voi...
2019-01-06 21:19:27
849
4
原创 智博数据结构——数据结构
假期在学习数据结构就把视频课的代码上传到博客上嘻嘻。#include "DynamicArray.h" 头文件#ifndef DYNAMIC_ARRAY#define DYNAMIC_ARRAY#include <stdlib.h>#include <stdio.h>#include <string.h>typedef struct { ...
2019-01-06 16:16:07
416
转载 MultiByteToWideChar与WideCharRoMultiByte 多字节转UNICODE
#include <iostream>#include <wchar.h>#include <windows.h>using namespace std; int main(){ //多字节转换宽字节 char * ptr = "测试123"; cout << "strlen(ptr)= " <&a
2018-12-17 16:50:09
390
原创 记录第一次百度实习生面试经历
so sad,面试失败惹。不过也发现自身的不足,加油。28号晚上六点左右接到去北京面试的通知,当时我还在长春呢,协调了一下30号周五12点在科技园一号楼面试。一面时间比较久大约一个小时20分钟左右,前半部分问了c++的概念包括 虚函数,纯虚函数与虚函数不同,为什么要使用虚函数,然后让我写了一个用虚函数的例子(手写),然后问了我static在局部还有全局用法,c的存储方式,这一部分回答的还可...
2018-12-01 13:24:45
2686
原创 多线程 事件对象 关键代码段
#include<iostream>#include <windows.h>using namespace std;DWORD WINAPI Fun1Proc( LPVOID lpParameter);DWORD WINAPI Fun2Proc( LPVOID lpParamter);HANDLE g_hEvent;int tickets = 10...
2018-11-27 21:45:19
254
原创 MFC 写入读取记事本(中文写入)
今天上网找了一个MFC读入记事本的程序,因为我用的是单字节所以把拿来的程序改了改。首先实现的是打开记事本的操作CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("ALL Files(*.TXT)|*.TXT||"), AfxGetMain1Wnd()); CString strP...
2018-11-27 19:50:13
1821
原创 进程若运行,则无法第二次运行。
int main(){ HANDLE hThread1; HANDLE hThread2; hMutex = CreateMutex(NULL, FALSE, (TEXT("tickets"))); if (hMutex) { if (GetLastError()==ERROR_ALREADY_EXISTS ) { cout << "only ont in...
2018-11-16 09:01:18
183
原创 第一个多线程程序
#include<windows.h>#include <iostream>DWORD WINAPI fun1Proc( LPVOID lpParameter //thread data);DWORD WINAPI fun2Proc( LPVOID lpParameter //thread data);int index = 0;...
2018-11-15 17:41:22
148
原创 MFC单文档基于CScrollView类显示
今天看到之前老师写的一个单文档项目,看到可以在客户区依附滚动条。所以试了一下。首先cu'aanch创建一个基于CScrollView类的MFC类。这里我们起名为CShowImage.下图代码是自动生成的。有网友说还要在构造函数声明要不然会报错,我试了一下没有问题,不声明也是可以的。这样客户区就出现滚动条了,我想将图片在客户区显示,在没有载入图像的时候滑动滚动条报错,调试发现if(...
2018-11-13 19:30:30
745
2
原创 opencv+MFC单文档添加对话框控件并且显示图片
分割单文档首先为单文档客户群开辟一个空间,可以在空间上添加控件。1.自定义一个类这里起名时CDview,基类时CFormView,添加成功后资源视图中会出现IDD_DVIEW在这里面添加控件就可以了。2.在CMainFrame头文件中声明CSplitterWnd m_wndSplitter;并且在CMainFrame源文件中添加两个头文件。因为SingleDocView...
2018-11-12 22:03:36
2038
3
原创 基于MD5 AES的软件加密系统
暑假导师让给一个之前做的激光光斑检测软件进行加密。 这个任务让我很难受,在优快云找了好久,还好有大神写的文章。加密的思路是,获取安装软件电脑的CUP序列号(每台电脑序列号不同),然后对序列号进行加密,这样就能保证软件只能在注册的电脑上使用。 上图为整个系统的思路。 客户将AES加密后的密文发送给我,然后我在推出客户电脑的CUP序列号然后经过MD5加密,将加密后得到的数字相对比,一...
2018-07-26 20:50:10
576
2
原创 const define typedef.txt
const和#define之间的区别const推出的目的是为了取代预编译指令,消除它的缺点,同时继承它的优点。(1)编译器处理的方式不同。 define是在预处理阶段展开; const是在编译运行阶段展开,在编译的时候确定其值;(2)类型和安全检查不同。 define没有类型,不进行类型检查,也不进行安全检查,这样在进行替换的时候有可能发生意想不到的错误; const常量有具体的类型,在编...
2018-04-27 15:10:58
130
原创 exter与static的用法
在一个源程序的所有源文件中,一个外部变量只能在某个文件中定义一次,而其他文件可以通过extern声明来访问它(定义外部变量的源文件中也可以包含对该外部变量的extern声明)。外部变量的定义中必须制定数组的长度,但extern声明则不一定要制定数组的长度。在文件file1中extern int sp;extern double val[];void push (double f){.....}do...
2018-04-27 15:05:58
656
转载 vs2015打开类向导时异常来自HRESULT:0X8CE0000B
难受 这个问题真的烦,然后查了好多解决办法,发现了一个比较简单的办法就是。首相关闭VS2015,然后在工程目录中找到,.vc.db文件 删除。然后在打开项目 就OK啦。...
2018-04-25 21:28:02
2620
4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人