作者:赵广建编著
页数:422页
出版社:北京航空航天大学出版社
出版日期:2024
ISBN:9787512443174
电子书格式:pdf/epub/txt
网盘下载地址:下载Android系统多媒体进阶实战
内容简介
本书是一本 Android系统多媒体工程师的实战手册,基于 Android 12版本源码讲解,从结构上将Android系统多媒体分为5章进行介绍,包括第1章 Android系统环境篇、第2章音频篇、第3章相机篇、第4章编解码篇、第5章图形篇。
本书旨在帮助读者系统、深入、快速学习 Android系统多媒体模块,并且将其用于工作实战、兴趣研究等。本书将每个多媒体模块多余的层层封装全部剥离,去掉 Runtime和Java层的干扰,以 C 实战示例展示每个多媒体模块最重要、最本质的内容,帮助读者以最短的时间在模块之间横向迁跃学习,以应对时代快速变化产生的新需求。
本书适用于 Android系统及相关技术开发人员。
本书特色
由表及里,洞悉脉络:深入探索Android12多媒体核心
寻根溯源,揭其奥秘:以实例为引,细致讲解实战开发经验
串联知识,联网成体:由点及面,帮您全面理解相关技术
积学储能,飞跃成长:助您日益精进,成为一专多强的开发者
目录
第1章 Android系统环境篇1.1 WSL系统介绍与安装过程1.1.1 WSL虚拟化架构介绍1.1.2 WSLg图形化环境安装1.2 编译 Android系统源码1.2.1 下载、编译 Android12源码1.2.2 下载、编译 Android12内核源码1.2.3 介绍几种刷机模式1.2.4 刷 机1.2.5 运行 Android设备第2章 音频篇2.1 音频基础知识第1章 Android系统环境篇1.1 WSL系统介绍与安装过程1.1.1 WSL虚拟化架构介绍1.1.2 WSLg图形化环境安装1.2 编译 Android系统源码1.2.1 下载、编译 Android12源码1.2.2 下载、编译 Android12内核源码1.2.3 介绍几种刷机模式1.2.4 刷 机1.2.5 运行 Android设备第2章 音频篇2.1 音频基础知识2.1.1 奈奎斯特采样定律2.1.2 ADC2.1.3 DAC2.1.4 PCM2.1.5 DAI2.1.6 ASLA2.1.7 采 样2.1.8 量 化2.1.9 编 码2.1.10 音频帧2.1.11 采样率2.1.12 通道数2.2 常见的音频通路介绍2.2.1 音频播放2.2.2 音频录音2.2.3 打电话2.2.4 接电话2.2.5 蓝牙打电话2.2.6 蓝牙接电话 2.3 AudioServer 初始化过程 2.3 .1 AudioServer 服务创建过程 2.3 .2 AudioServer 进程启动过程 2.4 AudioFlinger 服务注册过程 2.4.1 AudioFlinger: :instantiate() 实例化过程 2.4.2 AudioFlingerServerAdapter 实例化过程 2.4.3 AIDL 自动生成Server 端返回值生成规则 2.5 AudioPolicyService 服务注册过程 2.6 AAudioService 服务注册过程 2.7 OpenSL ES 原理与实战 2.7.1 Android 平台 OpenSL ES 支持功能 2.7.2 OpenSL ES 关键数据结构 2.7.3 OpenSL ES 引擎播放过程 2.7.4 OpenSL ES 引擎解码音频实战 2.7.5 OpenSL ES 引擎录音过程 2.7.6 OpenSL ES 引擎录音实战 2.8 AAudioService 原理与实战 2.8.1 Android 平台 AAudio 支持的功能 2.8.2 AAudio 引擎播放音频过程 2.8.3 AAudio 引擎独占模式播放 PCM 实战 2.8.4 AAudio 引擎录音实战 2.9 Oboe 原理与实战 2.9 .1 Oboe 使用 AAudio 引擎 2.9 .2 Oboe 使用 OpenSL ES 引擎 2.9 .3 Oboe 播放音频实战 2.9 .4 Oboe 录音实战 第3 章 相机篇 3 .1 相机基础知识 3 .1 .1 PAL 制式 3 .1 .2 NTSC 制式 3 .1 .3 逐行扫描 3 .1 .4 隔行扫描 3 .1 .5 帧 3 .1 .6 场 3 .1 .7 显示分辨率 3 .1 .8 图像分辨率 3 .1 .9 ISO 3 .1 .10 光 圈 3 .1 .11 快 门 3 .1 .12 白平衡 3 .1 .13 RAW 格式 3 .2 Camera 模块层级关系 3 .3 Camera 核心服务一: media.camera 3 .3 .1 init 进程解析cameraserver.rc 3 .3 .2 CameraServer 的启动过程 3 .4 Camera 核心服务二:android. hardware.camera. provider@2.4: :ICameraProvider/legacy/0 3 .5 Camera 核心服务三:android.frameworks.cameraservice.service@2.2: :ICameraService/default 3 .6 Camera 通过 AIDL、HIDL 与底层通信过程 3 .6 .1 Camera2 到 CameraService 通信过程(AIDL 通信方式) 3 .6 .2 CameraService 到 Camera HIDL 通信过程 3 .6 .3 Camera HIDL 到 HAL 通信过程(HIDL 通信方式) 3 .7 Camera Preview 过程 3 .7.1 Camera Preview 准备阶段之创建与传递Surace 过程 3 .7.2 Camera Preview 之startPreview 过程时序图 3 .7.3 Camera Preview 之创建预览数据流通道过程 3 .7.4 Camera Preview 之获取相机元数据过程 3 .7.5 Camera Preview 之获取预览数据过程 3 .8 Camera 之采集视频 NV21 数据实战 第4 章 编解码篇 4.1 编解码基础知识 4.1 .1 RGB 4.1 .2 YUV 4.1 .3 视频编码 4.1 .4 视频解码 4.1 .5 封装格式 4.1 .6 像 素 4.1 .7 宏 块 4.1 .8 帧 4.1 .9 GOP 序列 4.1 .10 帧内预测 4.1 .11 帧间预测 4.1 .12 IDR 帧 4.1 .13 I 帧、P 帧、B 帧 4.1 .14 PTS 4.1 .15 DTS 4.1 .16 帧 率 4.1 .17 码 率 4.1 .18 刷新率 4.1 .19 位 深 4.1 .20 YUV 常见存储方式 4.1 .21 YUV444、YUV422、YUV420 采样模式 4.2 MediaCodec 模块层级关系 4.2.1 MediaCodec、ACodec、Codec 2.0 关系图 4.2.2 音视频编解码、 封装、 解封装流程 4.3 MediaCodec 核心服务一:android. hardware. media.omx@1 .0: :Omx/default 4.3 .1 Omx 服务加载厂商硬编解码器 4.3 .2 Omx 服务加载软编解码器 4.3 .3 vendor. media.omx 服务查询不到的问题 4.4 MediaCodec 核心服务二:android. hardware. media.omx@1 .0: :IOmxStore/default 4.5 MediaCodec 核心服务三:android. hardware. media.c2@1 .2: :IComponentStore/software 4.6 MediaCodec 视频编码部分 4.6 .1 MediaCodec 创建视频编码器过程 4.6 .2 MediaCodec 配置视频编码器过程 4.6 .3 MediaCodec 启动编码器过程 4.6 .4 MediaCodec 编码输出 H.264 数据过程 4.7 MediaMuxer 之视频封装部分 4.8 NuMediaExtractor 之视频解封装部分 4.9 AAC 音频码流分析 4.9 .1 AAC 格式帧头字段分析 4.9 .2 AAC 格式帧头解析实战 4.10 H.264 视频码流分析实战 4.10.1 H.264 编码格式构成 4.10.2 NALU 头信息结构 4.10.3 有符号与无符号指数哥伦布编解码介绍 4.10.4 零阶无符号指数哥伦布编码和解码示例 4.10.5 零阶有符号指数哥伦布编码和解码示例 4.10.6 解析 H.264 码流的SPS、PPS 实战 4.11 MediaCodec 之音视频编解码实战 4.11 .1 MediaCodec 之 YUV 编码实战 4.11 .2 MediaCodec 之 H.264 解码实战 4.11 .3 MediaCodec 之 PCM 编码实战 4.11 .4 MediaCodec 之 AAC 解码实战 4.12 MediaMuxer 音视频封装与 NuMediaExtractor 解封装实战 4.12.1 MediaMuxer 之 H.264 封装实战 4.12.2 NuMediaExtractor 之 mp4 解封装视频实战 4.12.3 MediaMuxer 之 AAC 封装实战 4.12.4 NuMediaExtractor 之 mp4 解封装音频实战 第5 章 图形篇 5 .1 图形基础知识 5 .1 .1 View 5 .1 .2 Surface 5 .1 .3 SurfaceHolder 5 .1 .4 SurfaceView 5 .1 .5 GLSurfaceView 5 .1 .6 SurfaceTexture 5 .1 .7 TextureView 5 .1 .8 SurfaceFlinger 5 .1 .9 BufferQueue 5 .1 .10 Gralloc 5 .1 .11 HWC 5 .1 .12 EGL 5 .1 .13 EGLSurface 5 .1 .14 OpenGL ES 5 .1 .15 Vulkan 5 .1 .16 VSYNC 5 .1 .17 DRM 5 .1 .18 Fence 同步机制 5 .2 SurfaceFlinger 模块通信关系 5 .3 HWC 服务启动过程 5 .3 .1 第一部分: 加载 HWC 底层库 5 .3 .2 第二部分: HWC 底层库函数创建映射关系 5 .3 .3 第三部分: 将 HWC 底层库能力传给上层 5 .4 SurfaceFlinger 服务启动过程 5 .4.1 第一部分: 服务启动过程 5 .4.2 第二部分: 初始化并设置渲染引擎对象过程 5 .4.3 第三部分: 创建并设置 HWC 客户端对象过程 5 .5 Gralloc 跨硬件申请图形共享 Buffer 过程 5 .6 OpenGL 控制 GPU 合成、 显示过程 5 .6 .1 第一部分:EGL 加载 GPU 通信库过程 5 .6 .2 第二部分: OpenGL 通过 GPU 渲染、 合成过程 5 .6 .3 第三部分:EGL 通过 DRM 显示过程 5 .7 HWC 合成提交 DRM 显示过程 5 .8 图形实战案例 5 .8.1 正常渲染实战 5 .8.2 离屏渲染实战 5 .8.3 Fence 同步机制实战 5 .8.4 OpenGL 渲染nv21 格式视频实战 5 .8.5 ION 跨硬件使用共享内存实战 5 .8.6 映射 GPU 显存实战 5 .8.7 DRM 输出显示实战