Android自动化测试一 UiAutomator官方介绍

2024-07-30
阅读 2 分钟
1.6k
了解android测试需要查询android官方文档,android官方培训教程Getting Started with Testing介绍了android提供的测试类型,测试接口等,相较与网上总结的android自动化测试框架,官方文档显然分类更合理,定位更准确.
封面图

webrtc信令交互流程

2024-07-29
阅读 2 分钟
478
上述序列中,WebRTC并不提供Stun服务器和Signal服务器,服务器端需要自己实现。Stun服务器可以用google提供的实现stun协议的测试服务器(stun:stun.l.google.com:19302),Signal服务器则完全需要自己实现了,它需要在ClientA和ClientB之间传送彼此的SDP信息和candidate信息,ClientA和ClientB通过这些信息建立P2P连接来...
封面图

Webrtc线程模型

2024-07-29
阅读 3 分钟
1.2k
Boost:大而全,缺少一些可以直接上手的东西如线程消息队列,智能指针并非线程安全。QT core:非常好C++11:也需要线程消息队列,线程安全智能指针。chromium的base库:太大了当我看到webrtc的base时,非常惊讶的发现它正是我想要的,特点:
封面图

webrtc模块管理

2024-07-28
阅读 4 分钟
290
对于实时音视频应用来讲,媒体数据从采集到渲染,在数据流水线上依次完成一系列处理。流水线由不同的功能模块组成,彼此分工协作:数据采集模块负责从摄像头/麦克风采集音视频数据,编解码模块负责对数据进行编解码,RTP模块负责数据打包和解包。数据流水线上的数据处理速度是影响应用实时性的最重要因素。与此同时,从...
封面图

webrtc sdp协议介绍

2024-07-28
阅读 11 分钟
481
RFC3264: An Offer/Answer Model with the session Description Protocol(SDP),用来概述一个请求/响应模型
封面图

webrtc Android源码分析一

2024-07-27
阅读 13 分钟
734
nativeCreateVideoSource初始化PeerConnectionFactory(pc/peerconnectionfactory) 创建PeerConnection方法中: {代码...} 构造PeerConnection对象pc,并调用初始化方法Initialize,Initialize中: {代码...} 调用CreateCall_w创建call对象: {代码...} 使用call对象以及PeerConnectionFactory中channel_manager(PeerConnectio...
封面图

webrtc 音频设备操作之opensl与jni

2024-07-27
阅读 9 分钟
405
webrtc 音频设备操作之opensl与jni本节主要分享视频通话中android和ios上操作音频设备的方式,如调解音量大小,启用扬声器处理音频设备代码目录:src/modules/audio_device/ {代码...} 第一种方式就是直接调用Android或ObjectC的API,代码如下(WebRtcAudioTrack.java): {代码...} 通过调用Android提供的AudioManager类来操作...
封面图

TS文件结构解析

2024-07-26
阅读 6 分钟
784
ts是日本高清摄像机拍摄下进行的封装格式,全称为MPEG2-TS。ts即"Transport Stream"的缩写。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。MPEG2-TS主要应用于实时传送的节目,比如实时广播的电视节目。
封面图

webrtc代码管理工具gclient入门

2024-07-26
阅读 10 分钟
424
google的chromium项目是用gclient来管理源码的checkout, update等。 gclient是google专门为这种多源项目编写的脚本,它可以将多个源码管理系统中的代码放在一起管理。甚至包括将Git和svn代码放在一起。
封面图

MP4文件结构解析

2024-07-25
阅读 4 分钟
796
目前MP4的概念被炒得很火,也很乱。最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准。随后MP4概念被转移到视频上,对应的是MPEG-4标准。而现在我们流行的叫法,多半是指能播放MPEG-4标准编码格式视频的播放器。但是这篇文章介绍的内容跟上面这些都无关,我们要讨论的是MP4文件封装格式,对应的标准为ISO/IEC 1449...
封面图

FLV格式解析

2024-07-25
阅读 6 分钟
412
FLV(Flash Video)是现在非常流行的流媒体格式,由于其视频文件体积轻巧、封装播放简单等特点,使其很适合在网络上进行应用,目前主流的视频网站无一例外地使用了FLV格式。另外由于当前浏览器与Flash Player紧密的结合,使得网页播放FLV视频轻而易举,也是FLV流行的原因之一。
封面图

linux编译参数CPPFLAGS、CFLAGS、LDFLAGS的理解

2024-07-24
阅读 2 分钟
1.3k
linux编译参数CPPFLAGS、CFLAGS、LDFLAGS的理解编译步骤:CPPFLAGS : 预处理器需要的选项 如:-I (大写i指定头文件路径)CFLAGS:编译的时候使用的参数 –Wall –g -cLDFLAGS :链接库使用的选项 –L -l (大写L指定动态库的路径,小写L指定动态库的名称)CFLAGS 表示用于C编译器的选项CXXFLAGS 表示用于C++编译器的选项这两个...
封面图

C++11 promise介绍及使用

2024-07-24
阅读 3 分钟
403
std::promise是C++11并发编程中常用的一个类,常配合std::future使用。其作用是在一个线程中保存一个类型typename T的值,可供绑定的std::future对象在另一线程中获取该值。
封面图

Android线程思考

2024-07-23
阅读 6 分钟
1.2k
在编程中我们经常遇到多线程相关的问题,记得刚工作的时候对线程没有太多概念,只知道new Thread()run函数中是新的线程,函数多调用几层,特别是一些别人的回调函数中,就忽略了线程引起的并发问题,产生了并发修改异常的崩溃。今天总结一些线程相关的知识。
封面图

C++11 chrono库详解

2024-07-23
阅读 6 分钟
545
要使用chrono库,需要#include<chrono>,其所有实现均在std::chrono namespace下。注意标准库里面的每个命名空间代表了一个独立的概念。所以下文中的概念均以命名空间的名字表示! chrono是一个模版库,使用简单,功能强大,只需要理解三个概念:duration、time_point、clock
封面图

C++11 智能指针之shared_ptr

2024-07-22
阅读 4 分钟
685
基于Alexa的全链路智能语音SDK基于C++实现了跨平台特性,跑通了Android、Mac、Linux等设备,在兼容iOS时发现iOS未提供音频采集和播放的C++接口,所以需要改造SDK,允许SDK初始化时注入外部的采集器和播放器实现类,同时SDK中的Android播放器是基于ffmpeg解码 + opensl实现,但是考虑到包体积的问题,准备也基于这个接口...
封面图

C++11 智能指针之shared_from_this

2024-07-22
阅读 4 分钟
411
shared_ptr 作用:C++中采用new和delete来申请和释放内存,如果管理不当,很容易出现内存泄露;std::shared_ptr,std::unique_ptr,std::weak_ptr,三种智能指针类,可以自动管理内存使用示例:智能指针对象和一般的指针用法几乎完全相同 {代码...} 原理:只能指针包含两个成员变量:引用计数指针,管理对象的指针当引用计...
封面图

C++11 并发指南五(condition_variable 详解)

2024-07-21
阅读 11 分钟
529
前面三讲《C++11 并发指南二(std::thread 详解)》,《C++11 并发指南三(std::mutex 详解)》分别介绍了 std::thread,std::mutex,std::future 等相关内容,相信读者对 C++11 中的多线程编程有了一个最基本的认识,本文将介绍 C++11 标准中 <condition_variable> 头文件里面的类和相关函数。

C++11 并发指南三(mutex详解)

2024-07-21
阅读 5 分钟
580
Mutex 又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 <mutex> 头文件中,所以如果你需要使用 std::mutex,就必须包含 <mutex> 头文件。
封面图

Android C++系列:函数知识知多少

2024-07-20
阅读 1 分钟
324
1. 背景函数可以理解为功能的封装,很基础的功能单元,但是因为它虽然看似简单,但是里面涉及了不少知识点和技巧,我们花一篇文章来整理。2. 函数定义函数有以下几部分定义:返回类型函数名称形参列表函数体函数调用的形式是函数名(),函数调用过程涉及到控制权转移。函数体其实是一个语句块,语句块会涉及到作用域的问题...
封面图

Android C++系列:Linux信号(三)

2024-07-19
阅读 4 分钟
403
可重入函数不含全局变量和静态变量是可重入函数的一个要素可重入函数见man 7 signal在信号捕捉函数里应使用可重入函数在信号捕捉函数里禁止调用不可重入函数例如:strtok就是一个不可重入函数,因为strtok内部维护了一个内部静态指针,保存上一 次切割到的位置,如果信号的捕捉函数中也去调用strtok函数,则会造成切割字...
封面图

Android C++系列:Linux信号(二)

2024-07-19
阅读 3 分钟
387
如果在进程解除对某信号的阻塞之前这种信号产生过多次,将如何处理?POSIX.1允 许系统递送该信号一次或多次。Linux是这样实现的:常规信号在递达之前产生多次只 计一次,而实时信号在递达之前产生多次可以依次放在一个队列里。本文不讨论实时信 号。每个信号只有一个bit的未决标志,非0即1,不记录该信号产生了多少 次,阻...
封面图

Android C++系列:Linux信号(一)

2024-07-18
阅读 4 分钟
411
信号的概念信号的编号kill -l {代码...} 信号机制man 7 signal {代码...} First the signals described in the original POSIX.1-1990 standard. {代码...} 表中第一列是各信号的宏定义名称,第二列是各信号的编号,第三列是默认处理动作:Term表示终止当前进程;Core表示终止当前进程并且Core Dump(Core Dump 用于gdb调...
封面图

Android C++系列:Linux线程(四)线程同步

2024-07-18
阅读 9 分钟
425
多个线程同时访问共享数据时可能会冲突,这跟我们前面信号文章所说的可重入性是同样的问题。比如两个线程都要把某个全局变量增加1,这个操作在某平台需要三条指令完成:
封面图

Android C++系列:Linux线程(三)线程属性

2024-07-17
阅读 5 分钟
586
linux下线程的属性是可以根据实际项目需要,进行设置,之前我们讨论的线程都是采用线程的默认属性,默认属性已经可以解决绝大多数开发时遇到的问 题。如我们对程序的性能提出更高的要求那么需要设置线程属性,比如可以通过设置线程栈的大小来降低内存的使用,增加最大线程个数。
封面图

Android C++系列:Linux线程(二)线程原语

2024-07-17
阅读 5 分钟
387
void *arg:指定线程将要加载调用的那个函数的参数 返回值:成功返回0,失败返回错误号。之前介绍的系统函数都是成功返回0,失败返回-1,而错误号保存在全局变 量errno中,而pthread库的函数都是通过返回值返回错误号,虽然每个线程也都有一个errno,但这是为了兼容其 它函数接口而提供的,pthread库本身并不使用它,通过...
封面图

Android C++系列:Linux线程(一)概念

2024-07-16
阅读 1 分钟
327
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kern...
封面图

Android C++系列:Linux文件IO操作(二)

2024-07-16
阅读 7 分钟
386
注意这个读写位置和使用C标准I/O库时的读写位置有可能不同,这个读写 位置是记在内核中的,而使用C标准I/O库时的读写位置是用户空间I/O缓冲区中的位置。比如用fgetc读一个字节,fgetc有可能从内核中预读1024个字节到I/O缓冲区中,再返回第一 个字节,这时该文件在内核中记录的读写位置是1024,而在FILE结构体中记录的读...
封面图

Android C++系列:Linux文件IO操作(一)

2024-07-15
阅读 3 分钟
338
事实上Unbuffered I/O这个名词是有些误导的,虽然write系统调用位于C标准库I/O缓 冲区的底层,但在write的底层也可以分配一个内核I/O缓冲区,所以write也不一定是直接 写到文件的,也可能写到内核I/O缓冲区中,至于究竟写到了文件中还是内核缓冲区中对于 进程来说是没有差别的,如果进程A和进程B打开同一文件,进程A写到...
封面图

Android C++系列:Linux文件系统(二)

2024-07-15
阅读 6 分钟
351
Linux支持各种各样的文件系统格式,如ext2、ext3、reiserfs、FAT、NTFS、iso9660 等等,不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式,然而这些文件系统 都可以mount到某个目录下,使我们看到一个统一的目录树,各种文件系统上的目录和文件 我们用ls命令看起来是一样的,读写操作用起来也都是一样的,这是...
封面图