🌓

MediaCodec 全链路深度剖析(一):开篇 —— 当你点下"播放",究竟发生了什么?

系列导读:本系列将从 Kotlin/Java 应用层出发,一路向下,穿越 JNI、Native framework、Codec2、HAL、驱动,直至 SoC 内部的 VPU/GPU/NPU 硬件电路,完整拆解一帧视频从磁盘到屏幕的代码链路与数据流转。 本文是第 1 篇 · 开篇总览,不涉及具体代码细节,目的是建立一张「全景地图」,让你知道自己在下面哪一层、...

阅读全文

如何构建一个好用的SDK

如何去设计一个好用的SDK,自己做了很久的SDK,实际上并没有过多去思考过这个问题。最近对起总结一下,在回答这个问题之前,我们可以自己思考一下:对于接入者,怎样才算是一个好的SDK?对我自己而言,如果我要去接入一个SDK的话,可能会去考虑分别针对几个阶段: 接入前: 有清晰的文档能告诉我这个SDK 的环境要求,比如 minSdkVersion compile...

阅读全文

JPEG压缩之DCT离散余弦变换

在digital_video_introduction的一节中讲解 视频编解码器是如何工作的?提到了 DCT,此前没有太关注,最近有对相关的原理进行学习了解,本文对 DCT 离散余弦变换相关的内容进行整理总结。JPEG 使用的是 二维 DCT,因为它处理的是图像(二维信号),理解二维 DCT 的基础是一维 DCT。 一维离散余弦变换一维 DCT 将一个长度为...

阅读全文

H264码流结构理解整理

本文将带你深入H.264文件的内部,从宏观到微观,逐一剖析其各个组成部分的作用、相互关系以及一些精妙的设计哲学。在了解H264之前需要有以下的一些基础知识: 宏观结构:从文件到帧一个H.264原始码流(.h264或.264文件)并不是一个简单的“视频文件”,它不包含音频、字幕等元信息。它是一个纯粹的、编码后的视频数据比特流。这个流的结构可以看作一个分层模型,...

阅读全文

手写一个精简版Koin:深入理解依赖注入核心原理

在现代 Android 应用开发中,依赖注入(Dependency Injection, DI)已成为构建松耦合、可测试代码的重要技术。Koin 作为一个轻量级的Kotlin依赖注入框架,因其简洁的DSL和易用性深受开发者喜爱。最近对其源码进行学习了解,通过手写一个极度精简的 Koin 核心代码,来透彻理解Koin的注册、解析和参数传递机制。 本文代码基于...

阅读全文