内容简介
本书聚焦于使用英特尔的GPU来进行视频加速处理的方案。首先介绍视频处理的理论基础,然后介绍英特尔的GPU处理器架构,接着介绍英特尔推荐的视频处理开发套件Media SDK的环境搭建、框架和功能支持,以及开源框架的环境如何在英特尔的平台上搭建等。接下来是实战的部分,首先介绍视频处理中的两个技术难点——内容管理和码率控制,接下来是编程实战,并针对开发者反馈较多的情况,介绍性能评测和性能优化的部分以及视频会议中视频处理的应用。作者简介
目录
封面
版权信息
前折页
序
前言
第1章 视频处理之理论基础
1.1 人眼视觉系统概述
1.2 RGB和YUV色彩空间模型
1.2.1 RGB色彩空间模型
1.2.2 YUV色彩空间模型
1.2.3 YUV色彩模型与RGB色彩模型的转换
1.3 数字图像概述
1.3.1 数字化过程——采样
1.3.2 帧和场
1.3.3 视频图像属性
1.4 传统视频压缩技术理论和算法概述
1.4.1 信息论概述
1.4.2 视频数据的冗余特性
1.4.3 变换技术
1.4.4 量化技术
1.4.5 预测技术
1.4.6 Z字形扫描
1.4.7 熵编码
1.4.8 可分层编码
1.4.9 多视点视频编码
1.5 常见视频图像处理算法
1.5.1 去隔行扫描
1.5.2 帧率转换
1.5.3 电视电影刷新率转换
1.5.4 缩放
1.6 视频行业主要标准
1.6.1 电视制式
1.6.2 视频图像标准
1.6.3 视频编解码行业标准
1.7 视频图像质量评价
1.7.1 主观质量评价
1.7.2 客观质量评价
1.8 本章小结
第2章 英特尔GPU概述
2.1 英特尔GPU处理器架构概述
2.2 视频引擎
2.3 英特尔GPU路线图和命名
2.4 本章小结
第3章 Media SDK总览
3.1 处理对象
3.2 功能模块
3.3 API设计
3.4 软件架构
3.4.1 会话
3.4.2 分配器
3.4.3 数据缓存
3.4.4 异步流水线
3.5 例程和教程概述
3.5.1 基本开发流程
3.5.2 解码过程
3.5.3 编码过程
3.5.4 转码过程
3.5.5 视频图像处理
3.5.6 例程的使用
3.6 新一代开发套件OneVPL
3.7 本章小结
第4章 Media SDK环境搭建
4.1 Linux环境搭建
4.1.1 选择内核版本
4.1.2 选择Media SDK版本
4.1.3 安装依赖库和例程
4.1.4 通过vainfo验证安装结果
4.2 Windows环境搭建
4.2.1 开发环境部署
4.2.2 例程编译过程
4.2.3 基于GitHub的例程编译过程
4.2.4 查看当前平台的视频处理能力
4.2.5 自带Tracer工具
4.3 本章小结
第5章 Linux视频加速软件框架
5.1 直接渲染管理器
5.1.1 内存管理
5.1.2 命令提交
5.1.3 模式设置
5.1.4 权限管理
5.2 libdrm
5.3 VA-API
5.3.1 核心概念
5.3.2 编程流程
5.3.3 示例程序
5.3.4 调试
5.4 GmmLib
5.5 本章小结
第6章 开源框架的使用和环境搭建
6.1 FFmpeg
6.1.1 Linux编译指南
6.1.2 Windows编译指南
6.2 GStreamer
6.2.1 基于GStreamer官网的编译指南
6.2.2 通过Intel OpenVINO安装GStreamer
6.2.3 GStreamer与AI的协同工作
6.3 OpenCV
6.3.1 Linux编译指南
6.3.2 Windows编译指南
6.4 本章小结
第7章 高并发视频分析业务评估工具
7.1 综述
7.2 Linux环境搭建
7.2.1 安装依赖软件包
7.2.2 升级Linux内核
7.2.3 安装集成显卡固件
7.2.4 安装OpenVINO
7.2.5 安装OpenCL驱动
7.2.6 准备测试的视频
7.2.7 运行SVET程序
7.2.8 SVET参考程序参数配置
7.3 Windows环境搭建
7.3.1 安装依赖软件包
7.3.2 编译SVET参考程序和依赖库
7.3.3 下载推理所需模型和测试视频
7.3.4 运行多路视频推理
7.4 核心视频业务
7.4.1 NVR业务
7.4.2 AI视频分析业务
7.4.3 MCU转码拼接业务
7.5 本章小结
第8章 编解码实现
8.1 低功耗快速编码
8.2 低延迟编解码
8.3 码率控制
8.3.1 恒定量化系数算法
8.3.2 恒定码率算法和可变码率算法
8.3.3 前向预测算法
8.3.4 智能恒定质量算法
8.3.5 质量可定义的可变码率算法
8.4 动态码率控制
8.5 精确控制每一帧图像编码的量化系数
8.6 多个IDR帧视频流的解码过程
8.7 强制生成关键帧
8.8 参考帧的动态选择
8.9 参考帧添加重复信息
8.10 长期参考帧
8.11 可分层视频编码例程实现
8.12 本章小结
第9章 拼接显示实现
9.1 拼接显示业务运行
9.1.1 程序运行
9.1.2 参数文件
9.2 例程实现解析
9.2.1 类关系概述
9.2.2 会话创建和组件使用
9.2.3 异步流水线构建
9.3 典型功能点实现
9.3.1 动态增删输入视频流
9.3.2 缩放裁剪配置
9.3.3 无效区域重置
9.3.4 图像叠加
9.4 拼接性能优化
9.4.1 缩放算法和引擎选择
9.4.2 拼接任务的批量提交
9.5 显示性能优化
9.5.1 拼接输出和显示帧缓存零拷贝
9.5.2 X Window和DRM混合渲染
9.5.3 NV12直接显示
9.6 本章小结
第10章 性能监测
10.1 GPU监测
10.1.1 影响GPU性能的主要因素
10.1.2 查看显卡基本信息
10.1.3 查看显卡使用率
10.2 CPU监测
10.2.1 i7z
10.2.2 turbostat
10.2.3 mpstat
10.2.4 top
10.3 内存监测
10.3.1 基本信息
10.3.2 内存使用量分析
10.4 Windows性能监测
10.4.1 Windows资源管理器
10.4.2 Windows性能分析器
10.5 Intel VTune
10.5.1 系统总览
10.5.2 内存层次结构
10.5.3 基于时间线的详细分析
10.6 码流分析
10.7 本章小结
第11章 性能验证和优化
11.1 测试环境概述
11.2 基于Media SDK自带例程
11.2.1 纯解码验证
11.2.2 解码显示验证
11.2.3 纯编码验证
11.2.4 转码验证
11.2.5 独显验证
11.3 基于OneVPL自带例程
11.4 基于SVET
11.4.1 多路解码
11.4.2 多路解码+缩放和CSC
11.4.3 多路解码+缩放和CSC+拼接
11.4.4 多路解码+缩放和CSC+拼接+显示
11.4.5 多路解码+缩放和CSC+拼接+显示+编码
11.4.6 多路推理
11.5 性能优化
11.5.1 分析性能瓶颈
11.5.2 优化吞吐
11.5.3 优化延迟
11.5.4 优化拼接显示
11.5.5 优化SVET推理
11.6 本章小结
附录A 英特尔统一平台开发套件OneAPI
附录B 可扩展视频处理技术
附录C 中国国标AVS3的SVT实现
附录D Media SDK支持的媒体格式
后折页
封底
版权信息
前折页
序
前言
第1章 视频处理之理论基础
1.1 人眼视觉系统概述
1.2 RGB和YUV色彩空间模型
1.2.1 RGB色彩空间模型
1.2.2 YUV色彩空间模型
1.2.3 YUV色彩模型与RGB色彩模型的转换
1.3 数字图像概述
1.3.1 数字化过程——采样
1.3.2 帧和场
1.3.3 视频图像属性
1.4 传统视频压缩技术理论和算法概述
1.4.1 信息论概述
1.4.2 视频数据的冗余特性
1.4.3 变换技术
1.4.4 量化技术
1.4.5 预测技术
1.4.6 Z字形扫描
1.4.7 熵编码
1.4.8 可分层编码
1.4.9 多视点视频编码
1.5 常见视频图像处理算法
1.5.1 去隔行扫描
1.5.2 帧率转换
1.5.3 电视电影刷新率转换
1.5.4 缩放
1.6 视频行业主要标准
1.6.1 电视制式
1.6.2 视频图像标准
1.6.3 视频编解码行业标准
1.7 视频图像质量评价
1.7.1 主观质量评价
1.7.2 客观质量评价
1.8 本章小结
第2章 英特尔GPU概述
2.1 英特尔GPU处理器架构概述
2.2 视频引擎
2.3 英特尔GPU路线图和命名
2.4 本章小结
第3章 Media SDK总览
3.1 处理对象
3.2 功能模块
3.3 API设计
3.4 软件架构
3.4.1 会话
3.4.2 分配器
3.4.3 数据缓存
3.4.4 异步流水线
3.5 例程和教程概述
3.5.1 基本开发流程
3.5.2 解码过程
3.5.3 编码过程
3.5.4 转码过程
3.5.5 视频图像处理
3.5.6 例程的使用
3.6 新一代开发套件OneVPL
3.7 本章小结
第4章 Media SDK环境搭建
4.1 Linux环境搭建
4.1.1 选择内核版本
4.1.2 选择Media SDK版本
4.1.3 安装依赖库和例程
4.1.4 通过vainfo验证安装结果
4.2 Windows环境搭建
4.2.1 开发环境部署
4.2.2 例程编译过程
4.2.3 基于GitHub的例程编译过程
4.2.4 查看当前平台的视频处理能力
4.2.5 自带Tracer工具
4.3 本章小结
第5章 Linux视频加速软件框架
5.1 直接渲染管理器
5.1.1 内存管理
5.1.2 命令提交
5.1.3 模式设置
5.1.4 权限管理
5.2 libdrm
5.3 VA-API
5.3.1 核心概念
5.3.2 编程流程
5.3.3 示例程序
5.3.4 调试
5.4 GmmLib
5.5 本章小结
第6章 开源框架的使用和环境搭建
6.1 FFmpeg
6.1.1 Linux编译指南
6.1.2 Windows编译指南
6.2 GStreamer
6.2.1 基于GStreamer官网的编译指南
6.2.2 通过Intel OpenVINO安装GStreamer
6.2.3 GStreamer与AI的协同工作
6.3 OpenCV
6.3.1 Linux编译指南
6.3.2 Windows编译指南
6.4 本章小结
第7章 高并发视频分析业务评估工具
7.1 综述
7.2 Linux环境搭建
7.2.1 安装依赖软件包
7.2.2 升级Linux内核
7.2.3 安装集成显卡固件
7.2.4 安装OpenVINO
7.2.5 安装OpenCL驱动
7.2.6 准备测试的视频
7.2.7 运行SVET程序
7.2.8 SVET参考程序参数配置
7.3 Windows环境搭建
7.3.1 安装依赖软件包
7.3.2 编译SVET参考程序和依赖库
7.3.3 下载推理所需模型和测试视频
7.3.4 运行多路视频推理
7.4 核心视频业务
7.4.1 NVR业务
7.4.2 AI视频分析业务
7.4.3 MCU转码拼接业务
7.5 本章小结
第8章 编解码实现
8.1 低功耗快速编码
8.2 低延迟编解码
8.3 码率控制
8.3.1 恒定量化系数算法
8.3.2 恒定码率算法和可变码率算法
8.3.3 前向预测算法
8.3.4 智能恒定质量算法
8.3.5 质量可定义的可变码率算法
8.4 动态码率控制
8.5 精确控制每一帧图像编码的量化系数
8.6 多个IDR帧视频流的解码过程
8.7 强制生成关键帧
8.8 参考帧的动态选择
8.9 参考帧添加重复信息
8.10 长期参考帧
8.11 可分层视频编码例程实现
8.12 本章小结
第9章 拼接显示实现
9.1 拼接显示业务运行
9.1.1 程序运行
9.1.2 参数文件
9.2 例程实现解析
9.2.1 类关系概述
9.2.2 会话创建和组件使用
9.2.3 异步流水线构建
9.3 典型功能点实现
9.3.1 动态增删输入视频流
9.3.2 缩放裁剪配置
9.3.3 无效区域重置
9.3.4 图像叠加
9.4 拼接性能优化
9.4.1 缩放算法和引擎选择
9.4.2 拼接任务的批量提交
9.5 显示性能优化
9.5.1 拼接输出和显示帧缓存零拷贝
9.5.2 X Window和DRM混合渲染
9.5.3 NV12直接显示
9.6 本章小结
第10章 性能监测
10.1 GPU监测
10.1.1 影响GPU性能的主要因素
10.1.2 查看显卡基本信息
10.1.3 查看显卡使用率
10.2 CPU监测
10.2.1 i7z
10.2.2 turbostat
10.2.3 mpstat
10.2.4 top
10.3 内存监测
10.3.1 基本信息
10.3.2 内存使用量分析
10.4 Windows性能监测
10.4.1 Windows资源管理器
10.4.2 Windows性能分析器
10.5 Intel VTune
10.5.1 系统总览
10.5.2 内存层次结构
10.5.3 基于时间线的详细分析
10.6 码流分析
10.7 本章小结
第11章 性能验证和优化
11.1 测试环境概述
11.2 基于Media SDK自带例程
11.2.1 纯解码验证
11.2.2 解码显示验证
11.2.3 纯编码验证
11.2.4 转码验证
11.2.5 独显验证
11.3 基于OneVPL自带例程
11.4 基于SVET
11.4.1 多路解码
11.4.2 多路解码+缩放和CSC
11.4.3 多路解码+缩放和CSC+拼接
11.4.4 多路解码+缩放和CSC+拼接+显示
11.4.5 多路解码+缩放和CSC+拼接+显示+编码
11.4.6 多路推理
11.5 性能优化
11.5.1 分析性能瓶颈
11.5.2 优化吞吐
11.5.3 优化延迟
11.5.4 优化拼接显示
11.5.5 优化SVET推理
11.6 本章小结
附录A 英特尔统一平台开发套件OneAPI
附录B 可扩展视频处理技术
附录C 中国国标AVS3的SVT实现
附录D Media SDK支持的媒体格式
后折页
封底
[ 视频处理加速及应用实践:基于英特尔GPU下载地址 ]【免费下载】
最后修改:2024 年 07 月 06 日
© 允许规范转载