自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (10)
  • 收藏
  • 关注

原创 FFMpeg硬件加速实现源码分析 - 硬件加速释放

本篇是系列文章的收官之篇,最后我们讲解硬件加速释放,特别是硬件解码释放,先看下流程图:在提到,avcodec_free_context是退出流程的调用接口,用来释放用户创建的解码器。

2025-11-14 11:40:44 358

原创 FFMpeg硬件加速实现源码分析 - 硬件解码

本篇重点分析硬件解码流程,即avcodec_send_packet和avcodec_receive_frame内部调用流程。

2025-11-13 16:05:15 822

原创 FFMpeg硬件加速实现源码分析 - 硬件加速初始化

先看下类图:本篇继续讲解下半部分的类图关系,即设置AVCodecContext的hw_device_ctx、hw_frames_ctx、internal->hwaccel_priv_data(即VTContext)和hwaccel。

2025-11-07 17:02:56 984

原创 FFMpeg硬件加速实现源码分析 - 打开解码器

(2)、AVCodec则是具体解码器的信息,包括名字、ID、支持的像素格式、profiles等,AVCodec是嵌套在FFCodec结构体里面的第一个成员变量,所以指向AVCodec的指针和指向FFCodec的指针是重叠的,这个知识点很重要,例如FFMpeg通过AVCodecContext的codec变量,根据用户选择的像素格式来查找硬件加速hwaccel时,就需要强制转换为FFCodec。关于硬件加速初始化流程,请阅读文章:FFMpeg硬件加速在iOS平台实现源码分析 - 硬件加速初始化流程。

2025-11-06 10:16:19 597

原创 FFMpeg硬件加速实现源码分析 - FFMpeg接口调用流程

(4)、创建avctx->hw_device_ctx(AVHWDeviceContext):av_hwdevice_ctx_create, iOS平台出入AV_HWDEVICE_TYPE_VIDEOTOOLBOX。(5)、设置硬件加速像素格式回调:avctx->get_format,在回调函数里面iOS平台选择AV_PIX_FMT_VIDEOTOOLBOX。(1)、发送数据:avcodec_send_packet,调用底层实际的硬件加速解码接口解码视频帧,并且暂存结果。(后面有专门文章介绍此步骤)

2025-11-05 10:33:20 344

原创 FFMpeg硬件加速实现源码分析

1、回顾下FFMpeg的API调用过程。接下来拆分5篇文章具体介绍,敬请期待。3、分析硬件加速初始化流程。5、分析释放硬件解码流程。2、分析打开解码器流程。4、分析硬件解码流程。

2025-11-05 09:36:31 563

原创 图形渲染组件

Metal, 渲染管线、OpenGL、Vulkan、图形渲染

2021-11-29 17:56:53 2470

原创 图形渲染剖析

渲染管线、Metal、图形渲染、OpenGL、GPU。

2021-11-24 15:28:01 5941

原创 WebRTC移动端自定义音视频

WebRTC是基于点对点视频通话,底层协议栈主要是SRTP、UDP,基于SDP会话协议交互通话前报文(会话描述、ICE报文),通过ICE代理搜集双方的地址信息,大多数情况下音视频数据来源于手机的摄像头和麦克风,本文探讨的是基于源码自定义外部音视频数据。1、源码下载要开通VPN,下载基于iOS版本的源码https://webrtc.github.io/webrtc-org/native-code/ios/,需要注意的是如果源码在Linux平台下载,记得拷贝到mac之后要执行gclient sync同步

2021-07-23 15:49:55 1617

原创 WebRTC - ICE, STUN and TURN理解

WebRTC前期建立连接中,需要用到ICE、STUN以及TURN协议,下面对这三个协议做详细描述:1、ICE协议ICE - Interactive Connectivity Establishment:交互连接建立协议,是一种为基于offer和answer模型的UDP多媒体会话建立的NAT(网络地址翻译器)穿越协议,2、STUN协议3、TURN协议...

2021-04-20 18:12:05 609

原创 编解码 - 帧内预测过程剖解

帧内编码指的就是像预测、变换等压缩操作所使用的数据是来自本帧内,非其它视频流中的帧。下面详细讲解预测过程:1、寻找最佳预测像素集合(帧内预测的目标)使用已经编码或者重建好的相邻块来作为参考源,主要指的就是top或者left部分块(参考的是光栅扫描顺序),用以上参考块来预测当前的块,之所以用相邻块是因为跟当前块的相似度最高,相识度高意味着冗余度高,冗余度高意味着压缩率好。常用的预测模式:水平、垂直、对角线和其它角度方向,如下图所示:2、生成残余值就是预测块和当前块的差值,如上图所示,不

2021-04-19 14:37:59 1033

原创 基于块的编码器架构

现代的codecs,像H.265和VP9采用的是混合、基于块预测的架构,如下图所示:在这个模型中,视频序列的每一帧图片会被分为帧内预测和帧间预测帧,就是我们所说的I帧和P、B帧,编码器对于复杂的场景变换自动插入I帧,并且会有自己的检测算法。以下详细描述整个视频编码流程:1、拆分块:每一帧拆分成块形状区域:H.264的macroblocks,即我们说的16x16;VP9的64x64;H.265的CTU(编码树单元);AV1的128x128,然后每一块按照光栅顺序输入到编码管线当中。每一个块还可以递

2021-04-14 12:03:40 475

原创 OpenGL ES对于缓存的管理

缓存是指图形处理器能够控制和管理的连续的RAM。对缓存管理分三个阶段:1、构建阶段生成独一无二的标识符:glGenBuffer()。绑定运算使用的缓存:glBindBuffer()。初始化数据:glBufferData()or glBufferSubData()。2、启动阶段启用或者禁止缓存:glEnableVertextAttribArray() or glDisa...

2020-01-10 22:25:17 492 1

原创 Masonry布局过程剖解

自动布局的核心公式:obj1.attr = mutiplier * obj2.attr + constant (默认mutiplier = 1)第一阶段:创建约束创建者,收集约束试图、约束属性、参考试图、参考属性、约束关系、偏移量。1、创建MASConstraintMaker,初始化的时候传入当前试图作为约束试图。2、收集约束属性:通过调用约束创建者left、right、top、b...

2019-12-06 11:05:36 461

原创 AFNetworking请求和响应解析过程剖解

AFNetworking 3.x是我们熟悉的iOS常用的网络库,这里对它的源码进行分析,我们从最简单的get请求,剖解一下从请求开始,到响应拿到结果的过程。第一阶段:任务创建1、请求创建和序列化:NSMutableURLRequest创建、设置HTTP方法、设置头部信息、根据请求方法序列化参数到地址或者body里面来形成字符串。2、创建NSURLSessionDataTask...

2019-12-05 16:01:14 521

用Swift 4.0开发iOS

国外顶级苹果移动开发教材,著名讲师Craig Grummit亲自执笔,iOS开发入门必备,值得拥有。

2018-10-24

Enterprise IoT

物联网技术框架。

2017-08-28

iOS直方图,输入图片,输出YRGB直方图

iOS直方图,基于硬件加速分析每张图片的YRGB,然后通过核心图形框架绘制直方图。

2020-12-23

iOS Apps for Masterminds (第四版 - iOS 12)

最新iOS 12编程教材,国外技术牛人J.D Gauchat亲自执笔,继H5编程之后又一力作,国外畅销编程书,你值得拥有一本。

2018-09-14

Swift 4.0高效编程的50个建议

美国亚马逊Swift编程畅销书,最新Swift 4.0版本,对于进入iOS开发人员必备,你值得拥有。

2018-10-18

精通OC语言

Pro Objective-C高清英文版,提高自己对语言的深入了解,提升编程开发能力,iOS进阶。

2018-07-26

app软件架构

提高iOS的架构认知,最新的app软件架构书籍值得拥有。

2018-07-04

Beginning OpenGL

It is great book for OpenGL.

2013-01-23

Swift设计模式详解(直接源码)

《软件架构与模式》书本用Swift 4.0实现的设计模式,值得学习一番。

2018-10-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除