原创 使用 dlopen 和 dlsym 來使用 C++ 中的函數、類

1 問題簡介 正常情況下,dlopen 和 dlsym 是用來處理 C 庫中的函數的,但對 C++ 來說,情況稍微複雜,如在 Android framework media 框架中加載 C++ 軟解庫組件時使用到 dlsym 來鏈

原创 Android_P_Audio_系統(1) — Auido 系統簡介

1 音頻基礎 1.1 聲音的三要素 1. 音量(Volume) 也叫做響度(Loudness),人耳對聲音強弱的主觀感覺就是響度,響度和聲波振動的幅度有關。一般說來,聲波振動幅度越大則響度也越大。當我們用較大的力量敲鼓時,鼓膜振動

原创 Android HIDL HAL 接口定義語言詳解

1. HIDL 概述 在 Andoird 8.0 版本框架代碼中,加入了 HIDL(HAL 接口定義語言),HIDL 的出現是爲了將用戶層和 HAL 層分割開,它指定了 HAL 和用戶之間的接口,讓用戶能夠替換 Android 框

原创 Android_P_Audio_系統(2) — AudioTrack

1 AudioTrack 用例介紹 AudioTrack 用於 Android 平臺音頻數據輸出,屬於 Audio 系統對外提供的 API 類,因此它在 Java 與 Native 層均有對應的源碼實現。先從 Java 層的一個用

原创 圖片 bmp 格式詳解

1 概述 BMP(Bitmap-File)圖片文件格式,又稱爲 Bitmap (位圖)或是 DIB(Device-Independent Device,設備無關位圖),是 Windows 系統中廣泛使用的圖像文件格式。 由於它可以

原创 常見視頻封裝格式(3) — MP4

1 概述 日常生活中,看到的視頻文件的後綴名如 .mp4、.avi、.rmvb 都是屬於視頻文件的封裝格式。所謂封裝格式,就是以怎樣的方式將視頻軌、音頻軌、字幕軌等信息組合在一起。說得通俗點,視頻軌相當於飯,而音頻軌相當於菜,封裝

原创 常見視頻封裝格式(2) — TS

概述 日常生活中,看到的視頻文件的後綴名如 .mp4、.avi、.rmvb 都是屬於視頻文件的封裝格式。所謂封裝格式,就是以怎樣的方式將視頻軌、音頻軌、字幕軌等信息組合在一起。說得通俗點,視頻軌相當於飯,而音頻軌相當於菜,封裝格

原创 常見視頻封裝格式(1) — AVI

-> 概述 日常生活中,看到的視頻文件的後綴名如 .mp4、.avi、.rmvb 都是屬於視頻文件的封裝格式。所謂封裝格式,就是以怎樣的方式將視頻軌、音頻軌、字幕軌等信息組合在一起。說得通俗點,視頻軌相當於飯,而音頻軌相當於菜,

原创 Android HIDL 之 hal 進程啓動及服務註冊過程

1. 引言 前面章節 HAL 接口定義語言詳解 中介紹了 HIDL 接口的設計架構,下面一節通過詳解 Android 9.0 圖形顯示合成 Composer HAL 的啓動與服務註冊過程。 我們知道,在 HIDL 的設計理念中,HA

原创 Android HIDL HAL 接口定義語言詳解(1)

1. HIDL 概述 在 Andoird 8.0 版本框架代碼中,加入了 HIDL(HAL 接口定義語言),HIDL 的出現是爲了將用戶層和 HAL 層分割開,它指定了 HAL 和用戶之間的接口,讓用戶能夠替換 Android 框架,

原创 Android 系統 ANR 分析詳解

什麼是 ANR ANR 產生的原因 ANR 出現流程分析 發生 ANR 如何定位 如何避免和解決 ANR 附 Google 官網說明鏈接:Keeping your app responsive 1. 什麼是 ANR ANR:Ap

原创 android HAL 硬件抽象層

1. 開發 Android 硬件抽象層 1.1 HAL 層模塊編寫規範 Android 系統的硬件抽象層以模塊的形式來管理各個硬件訪問接口。每一個硬件模塊都對應有一個動態鏈接庫文件。 在系統內部,每一個硬件抽象層模塊都使用結構體 hw

原创 android zygote 進程分析

1. 概述 在 Android 系統中,所有的應用程序以及系統服務進程 SystemService 都是由 zygote 進程孕育 (fork)出來的。zygote 進程的作用可以概括爲以下三點: 創建 java 虛擬機,加載系統資

原创 android_9.0 MediaScanner 媒體掃描詳解

1. 概述 MediaScanner 是 Android 多媒體系統中重要的一員,MediaScanner 與媒體文件預掃描相關。我們知道,Android 系統每次開機或者重新插拔 SD 卡之後都會去掃描系統存儲空間中的媒體文件,並將

原创 HLS 編解碼協議詳解

1 概述 HTTP Live Streaming(HLS)是一個由蘋果公司提出的基於 HTTP 的流媒體網絡傳輸協議。是蘋果公司 QuickTime X 和 iPhone 軟件系統的一部分。它的基本原理是在服務端把文件或媒體流分成許多