5 简简单单_hosten

尚未进行身份认证

出于爱好 热爱编程 欢迎指导

等级
TA的排名 15w+

WebRTC系列 -- iOS 视频播放

视频播放渲染的核心文件(webrtc_video_engine.cc):在WebRtcVideoReceiveStream的RecreateWebRtcVideoStream()函数中创建了webrtc::VideoReceiveStream*视频数据接收类;同时会在该方法中监听OnFrame(const webrtc::VideoFrame& frame)方法获取视频帧数据;...

2019-10-11 11:21:00

IOS底层原理 -7.多线程

文章目录1. iOS中多线程方案2. GCD 同步,异步,串行,并行2.1 从一到面试题入手认识下GCD:2.2 多线程易混淆的名词2.3 面试题解析3 多人线程与runloop3.1 面试题13.2 面试题24 队列组5 线程安全问题1. iOS中多线程方案最底层API pthread: 是一套通用的跨平台的多线程API,是基于c语言,线程的生命周期需要手动管理;NSThread:是对...

2019-09-28 09:14:10

IOS底层原理 -6.runloop

文章目录1. 简介2. Runloop 对象获取1. 简介iOS 中负责程序运行循环,在程序运行过程中循环做一些事情;保持程序的运行,程序运行时会在main函数中创建一个runloop,负责主线程的持续运行;及处理app中的各种事件的响应,例如:NSTimer,UITouch等;在程序需要处理事件时候runloop就唤起线程,当不许处理事件的时候线程进入休眠状态,这样可以节省线程资源。在OC...

2019-09-23 09:29:21

WebRTC系列 -- iOS 视频采集

文章目录1. 采集1.1 采集控制1.2 采集输出1. 采集1.1 采集控制webrtc 相机的初始化及参数设置都在RTCCameraVideoCapturer类中;这个类中调用系统AVFoundation中的AVCaptureSession,关于在iOS上捕获 视频这里不做过多介绍,推荐objc中国的文章;这里需要注意的是webrtc中只调用了视频采集没有使用音频,同时 设置 captur...

2019-09-23 10:57:13

IOS底层原理 -5.运行时(2)

文章目录1. 面试题:isKindClass和isMemberOfClass1. 面试题:isKindClass和isMemberOfClass NSLog(@"%d",[[NSObject class] isKindOfClass:[NSObject class]]); //这里最终比较的是NSObject类对象的metaClass是不是与其类对象是不是相同,结...

2019-09-10 20:18:00

WebRTC系列 -- iOS ADM音频数据流处理流程及源码阅读记录

播放数据数据流的中转中心-AudioTransportImplAudioTransportImpl 继承自AudioTransport,移动端主要实现两个接口,录制数据传递接口RecordedDataIsAvailable(...)和播放数据获取NeedMorePlayData();先看一下NeedMorePlayData():int32_t AudioTransportImpl::Nee...

2019-09-09 11:00:51

IOS底层原理 -5.运行时(1)

OC是一种动态性比较强的语言,所有的函数调用都是基于消息机制;简介参照:isa指针;isa在前面介绍过,可以实例对象可以通过其找到类对象,类对象通过isa可以找到原类对象;在arm64后isa并不直接是Class类型,而是union,同时用位域位域(w3c)来存储更多信息(struct test{uintptr_r nonpointer :1; }), char _bool;//将所有BO...

2019-09-03 23:21:04

IOS底层原理 - 1.OC对象本质

综述: objective-c 的代码(clang -rewrite-objc mian.m -o mian.cpp)最终转成c/c++代码,然后转成汇编代码,最终以机器码执行;那么OC的对象最终在转成c、C++代码后是什么呢?其实C/C++中都能容纳不同类型的数据结构就是结构体,所以Objective-C 的对象/类主要是基于结构体实现注:生成arm64架构的cpp文件1:一个oc对象的内存...

2019-08-17 15:12:22

WebRTC系列 - 源码编译等

一,本地分支查看问题首先进入代码的SRC目录下,执行GIT中分支查看本机代码所在的GIT中分支,会发现一般有两个(一个是版本号的,另一个主),代码所在的分支就是在带版本号的目录下; //更新源码CD SRC $混帐取$ git的拉//更新编译工具$ gclinet同步 出现xcode-select: error: tool 'xcodebuild' requires Xc...

2019-07-06 11:21:00

oc 运行时

1. runtime详细描述一、runtime简介 The Objective-C language defers as many decisions as it can from compile time and link time to runtime. Whenever possible, it does things dynamically. This means that the la

2019-04-10 13:22:18

Swift 高阶函数

var json: JSON = ["name": "Jack", "age": 25, "list": ["a", "b", "c", ["what": "this"]]]// json["list"][3]["what"] = "that"//这

2018-06-04 09:46:45

Photoshop 系列:照片调色记录

1:一般的一张照片最先调整的应该是色阶:shift+Ctrl+L(自动色阶)2:调整饱和度:+20-303:色彩平衡调整:一般调整暗部和高光:1):阴影调整2):高光调整4: 增加锐化1)复制图层 2)选择复制的图层后,选择滤镜–》其他–》高反差保留: 需注意:半径不能给太大3)混合模式选择:柔光

2017-12-27 21:01:20

Photoshop 系列:色阶-曲线-色相和饱和度

-,色阶1:该图片整体偏亮:从色阶图中可以看出暗部缺少信息:那么就应该把最右侧的往左边拖动及拖到有信息的位置。亮部可以向左微动: 注意:图片中右侧是亮不标注有误三,色相/饱和度下图中我想把天空加蓝,那么我们选择蓝色通道调整,画面中其他颜色就不会改变

2017-12-26 13:55:12

swift笔记--基础(二)

六, ==Optinal== 可选类型(难点):swift特色语法之一;是一种对类型安全的体现,Int?,float!注意的是后面的符号必须紧贴前面的类型,中间不能有任何的空白;只有Optional类型可以为空值(oc中的nil),确保非optional的对象不能为空,也无法赋值为空;任何的类型都可以作为Optional类型:let tupleTest :(Int,String)? =...

2017-09-21 07:53:59

swift笔记--基础(一)

综述swift有四种类型:枚举,结构器,类,函数类型(前两种是值类型,后两个是引用类型),及一种复合类型元组此学习笔记基于4.0语法一些小知识Palygtound:从Xcode6开始出现 可以快速查看结果,语法特性改变时候可以快速查看。创建工程时候选择Playground工程,即:Xcode初始化启动时候初始化的第一项一些变化: 在Swift中布尔类型与整数类型是完全分离的用Bo

2017-09-14 07:41:34

linux学习记录--UNIX发展史和发行版本

一,简史 二,内核版本与发行版本(www.kerne

2017-08-17 21:51:42

Effective Objective-- 对象,消息,运行期

1:属性 * 在实现自定义初始化方法的时候,一定以要遵循属性定义中所宣称的“copy”语义,因为属性定义就相当于类和待设置的属性值之间所达成的契约: - (instancetype)initWithChat:(NSString*)chat{ if (self = [super init]) { _chat = [chat copy]; return

2017-06-08 08:34:47

Effective Objective-- 第一章

摘录: 1. 将引入头文件的时机尽量拖后,只在确有需要时才引入,这样就可以减少类的使用者所需引入头文件的数量。

2017-06-01 08:26:59

ubuntu 编译licode

几个常用的命令:1,解压 tar -zxvf aliedit.tar.gz2,复制sudo cp -i test.c /local/arm3,删除1,安装Java,参考: Ubuntu安装JDK7/JDK8的两种方式 这里我只记录第一种:1.添加ppasudo add-apt-repository ppa:webupd8team/javasudo apt-get update2.安

2017-02-04 10:42:47

iOS 一些笔记

一,获取导航栏相关属性获取包含导航栏的高度: CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame]; CGRect rectNav = self.navigationController.navigationBar.frame; CGFloat maxY = rectSta...

2017-01-19 10:41:40

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。