buffer 流的常见处理策略 最近发现,无论是之前做的语音和图像识别,还是最近做的视频直播,都涉及到一个场景: buffer 流的处理。 所以这里简单梳理下常见的处理策略。 2021-06-13 技术沉淀 图像处理 音频处理
图像压缩原理及 libjpeg 源码分析 最近在做图像处理项目的性能优化时发现,RGB 转 JPG 压缩的文件大小有波动,而这个会显著影响图像上传耗时。 为什么会有波动呢?通过了解 JPG 压缩编码的原理,我找到了答案。 2020-06-28 技术沉淀 图像处理 JPG 视频处理
Android 图片压缩内存泄漏问题 最近在做 Android 相关的 YUV 图像压缩处理时,发现某些设备有内存泄露问题,这里作个简单梳理。 2019-12-28 技术沉淀 Android 图像处理 JPG
Kotlin/Native 跨平台实战从入门到“放弃” JetBrains 推出的 Kotlin 语言相信 Android 和 Java 开发者都不陌生。作为一门现代编程语言,不仅支持函数式、Coroutine 等特性,而且拥有良好的 Java 互操作性,将 Java 社区海量的开源项目为我所用。所以,Google 官方已将其列为 Android 的首选语言,对标 Apple 的 Swift。 而最近推出的 Kotlin/Native 则是基于 LL 2019-01-23 技术沉淀 Android iOS Kotlin 跨平台
图形渲染性能优化之纹理格式 PNG 是我们非常熟悉的一种无损压缩图片格式,常用于网络图片传输。而在图形渲染场景,对于 PNG 素材,我们一般要先将其解码为位图,然后转换为 GPU 纹理,处理完之后再释放内存中的位图对象。(iOS 有 GLKTextureLoader 帮我们封装了这一过程,但其实内部还是会做转换)在这一过程中,解码消耗 CPU,存储位图消耗内存;如果需要处理多帧纹理,则不断分配和释放内存还会造成内存“抖动” 2018-10-01 技术沉淀 Android 图像处理 iOS 图形渲染 ETC1 PVRTC
还在用 OpenGL? Metal 和 Vulkan 了解一下! 最近做一个移动端动效的项目需要用到 OpenGL。我们知道它基于 C 语言实现,拥有跨平台支持;但诞生于上世纪 90 年代的它,必然有历史局限性: 不支持预编译 Shader; 不支持多 CPU 线程; 不支持直接访问底层 GPU CommandBuffer; 所以,苹果 WWDC 2014 推出了新的图形渲染技术 Metal,并且从 iOS 12 开始将 OpenGL 相关 API 标记为 2018-09-09 技术沉淀 iOS 图形渲染 OpenGL Metal Vulkan SPIR-V
我的 2017 今年个人技术发展最大的变化,就是终于有机会全身心投入到 iOS 开发了。主要两点收获: 熟悉了 iOS 交叉编译,及 C/C++ 代码跨平台移植; 熟悉了主流局域网设备发现方式,顺便复习了子网掩码、UDP 广播/多播等网络知识,并做了 兼容多平台的 UDP 方式实现;核心代码采用纯 C 语言实现,说实话毕业后好久没写 C 语言了,欢迎大家提 issue 或者 fork; 后面也会将主要精力 2017-12-31 年度总结
iOS 引用 C/C++ 项目:平台差异导致的代码移植 由于 Linux(包括 Android)在嵌入式和服务端的流行,很多 C/C++ 代码都是专为 Linux 而写;加上历史原因,很可能还是基于 GCC 编译; 而 iOS/MacOS 基于类 Unix 系统 BSD,并且从 2011 年的 OS X 10.7 开始,默认的 C++ Runtime 就从 GNU 的 libstdc++ 迁移到 LLVM 的 libc++,二者不完全二进制兼容(Xco 2017-08-30 技术沉淀 iOS C++ Clang epoll kqueue pthread