第一篇 基础篇 3
第1章 音频/视频技术的现状 3
1.1 了解一些音频、视频文件格式 3
1.1.1 音频格式 3
1.1.2 视频格式 5
1.2 常用编解码技术介绍 6
1.2.1 音频的编码和解码 6
1.2.2 视频的编码和解码 9
1.2.3 音频视频编码方案 10
1.3 编/解码技术的发展 10
1.4 不得不说的音视频处理平台 12
1.5 必备的常用音视频开发工具 12
1.5.1 Visual C++集成开发工具 12
1.5.2 多媒体API DirectX 17
1.5.3 CCS开发系统 33
第2章 与MFC深情相拥 38
2.1 MFC印象 38
2.1.1 了解MFC编程的特点 38
2.1.2 关于MFC类的分层结构 39
2.1.3 MFC中的WinMain()函数 39
2.2 消息交流的意义 40
2.2.1 消息概述 40
2.2.2 Windows句柄 42
2.2.3 传送消息 42
2.2.4 消息与事件 43
2.3 使用对话框 43
2.3.1 构建对话框应用程序 44
2.3.2 设置对话框属性 47
2.3.3 常见对话框的种类 52
2.4 控件 58
2.4.1 Windows公共控件 58
2.4.2 ActiveX控件 59
2.5 MSDN中的巨大资源 62
第二篇 DirectX篇 67
第3章 DirectSound,天籁之音靠你实现 67
3.1 什么是缓冲区 67
3.1.1 缓冲区的种类 67
3.1.2 缓冲区通知 67
3.2 DirectSound开发基础 69
3.2.1 DirectSound和Direct Music 69
3.2.2 DirectSound SDK的结构 70
3.2.3 DirectSound的播放功能 71
3.2.4 开发步骤 72
3.3 DirectSound音频开发对象 73
3.3.1 DirectSound对象介绍 73
3.3.2 使用DirectSound设备对象 74
3.3.3 使用DirectSound缓冲区对象 78
3.4 神奇的WAV数据 87
3.4.1 WAVE文件结构 87
3.4.2 使用WAV数据 88
3.4.3 读取WAV数据 89
3.4.4 计算WAV声音的持续时间 89
3.4.5 三种播放WAV文件的方法 90
3.5 DirectSound环境也需要搭建 95
3.5.1 DirectSound开发环境配置 95
3.5.2 配置开发环境 97
3.6 梳理播放音频文件的过程 100
3.6.1 第一步:创建DirectSound对象 100
3.6.2 第二步:设置设备协作级别 100
3.6.3 第三步:创建播放缓冲区 101
3.6.4 第四步:创建DirectSound Buffer对象 104
3.7 小试牛刀——打造一个多彩的音频播放器 106
3.7.1 创建项目程序框架 106
3.7.2 添加控件和变量 107
3.7.3 封装CDirectSound类实现DirectSound 108
3.7.4 对话框界面操作 118
3.7.5 编译和调试 121
3.8 总结DirectSound音频编程的步骤 122
第4章 混音和3D音效编程 124
4.1 混音开发技术 124
4.1.1 混音技术原理 124
4.1.2 小试牛刀——实现三路音频混音 125
4.2 DirectSound 3D技术 130
4.2.1 DirectSound 3D介绍 130
4.2.2 听众空间参数 131
4.2.3 获取3D听者 133
4.2.4 三种处理模式 134
4.2.5 声音的锥效应 135
4.2.6 DirectSound 3D缓冲区对象 135
4.2.7 试试声音特技 136
4.3 小试牛刀——实现3D音效 138
4.3.1 创建项目程序框架 138
4.3.2 添加控件和变量 139
4.3.3 实现流程分析 141
4.3.4 编译和调试 155
第5章录 制音频 158
5.1 如何实现声音的录制 158
5.1.1 录音的基本原理 158
5.1.2 剖析实现流程 159
5.2 小试牛刀——用DirectSound录制音频 167
5.2.1 封装类 167
5.2.2 管理声音的函数 170
5.2.3 编译和调试 180
5.3 Windows CE下的录音程序 181
5.3.1 Windows CE环境 181
5.3.2 使用缓冲实现音频回环录制 182
5.3.3 小试牛刀——一个功能强大的录音程序 187
第6章 DirectMusic音频开发 195
6.1 什么是DirectMusic 195
6.1.1 组成 195
6.1.2 功能 195
6.2 DirectMusic的体系结构 196
6.2.1 核心层和接口 196
6.2.2 DirectMusic的对象和接口 196
6.2.3 DirectMusic的数据流 199
6.2.4 DirectMusic的消息 200
6.2.5 可下载银色技术(DLS) 203
6.2.6 Microsoft软件合成器 203
6.2.7 小试牛刀——打造一个音乐演奏器 203
6.3 小试牛刀——打造回音和测量工具 206
6.3.1 实例分析 206
6.3.2 具体实现 207
第7章 DirectShow来了 220
7.1 DirectShow基础 220
7.1.1 DirectShow介绍 220
7.1.2 剖析DirectShow的构成 221
7.1.3 常用的DirectShow接口 224
7.2 搭建DirectShow SDK开发环境 225
7.2.1 获取DirectShow SDK 225
7.2.2 安装DirectShow SDK 225
7.3 配置DirectShow SDK开发环境 228
7.3.1 生成DirectShow SDK库 228
7.3.2 配置Visual C++ 2010 233
7.3.3 几个调试问题的解决方法 235
7.4 小试牛刀——使用DirectShow技术 239
7.4.1 滤镜和图像滤镜介绍 239
7.4.2 编写一个DirectShow程序 240
7.4.3 使用graphedit.exe播放AVI文件 241
7.4.4 编程实现播放AVI文件 242
第8章 DirectShow核心技术分析 246
8.1 Filter Graph及其组成 246
8.1.1 DirectShow中的Filter 246
8.1.2 Media Type(媒体类型) 247
8.1.3 媒体样本Samples和分配器Allocators 250
8.2 构建Filter Graph 250
8.2.1 链表构建组件 251
8.2.2 Graph构建概述 251
8.2.3 智能连接详解 252
8.3 数据流在Filter Graph中的流动 253
8.3.1 传输(Transports) 255
8.3.2 样本Samples和分配器Allocators 255
8.3.3 Filter状态 257
8.3.4 拉模式 258
8.4 事件通知机制(Event Notification) 259
8.4.1 从队列中取事件 259
8.4.2 当事件发生时 260
8.5 时间的意义 262
8.5.1 参考时钟 262
8.5.2 时钟时间 263
8.5.3 时间戳 263
8.5.4 实时源(Live Source) 264
8.6 动态重建可靠吗 266
8.6.1 动态重连 266
8.6.2 Filter链 268
8.7 剖析SDK基类源码 269
8.7.1 COM实现部分和部分辅助源码 270
8.7.2 与Pin密切相关的类 274
8.7.3 CBaseFilter类 277
8.7.4 CSource类 280
8.7.5 CTransformFilter类 281
8.7.6 CBaseRenderer类 282
8.7.7 CBaseAllocator类 284
8.8 小试牛刀——开发一个视频播放器 286
8.8.1 系统分析和设计 287
8.8.2 实现媒体控制类 294
8.8.3 创建播放器主题 304
8.8.4 添加背景图片 313
第9章 DiectShow基本应用 314
9.1 DirectShow的基本应用 314
9.1.1 视频提交(Video Rendering) 314
9.1.2 枚举系统的设备和过滤器 317
9.1.3 连接两个Filter 321
9.1.4 获得Filter或者Pin的接口指针 322
9.1.5 查找与某个Filter的上下相连的Filter 324
9.2 DirectShow SDK典型开发案例 327
9.2.1 用DirectShow实现视频马赛克处理 327
9.2.2 DirectShow驱动摄像头 334
9.2.3 DirectShow视频采集 338
9.2.4 录制视频 349
9.2.5 音频采集 354
9.2.6 DirectShow在网络方面的应用 357
9.3 编写自己的Filter 358
9.3.1 配置开发环境 358
9.3.2 创建工程 359
9.3.3 为Filter创建入口函数 360
9.3.4 实现Filter的类厂对象 361
9.3.5 实现自己的Filter 363
9.3.6 最后的总结 365
第10章 以VFW实现视频处理 367
10.1 揭开VFW的神秘面纱 367
10.1.1 VFW概述 367
10.1.2 VFW开发流程 367
10.1.3 VFW视频捕获流程 368
10.1.4 视频编辑和播放 369
10.2 VFW的视频预览 370
10.2.1 基本步骤 370
10.2.2 编码演示 372
10.3 小试牛刀——用VFW实现视频捕获和预览 373
10.3.1 建立单文档应用程序 373
10.3.2 创建视频窗口 374
10.3.3 创建回调函数 375
10.3.4 设置视频图像 377
10.3.5 捕获预览视频 378
10.3.6 设置视频格式和图像参数 380
10.3.7 编码、解码捕获的视频 381
10.3.8 打开文件操作 382
10.3.9 窗口诊断处理 383
10.3.10 实现CvfwappDoc类的接口 383
10.4 视频压缩管理器 385
10.4.1 视频压缩管理器初步 385
10.4.2 视频压缩管理器初步 386
10.4.3 三个重要的函数 390
10.4.4 小试牛刀——使用VCM编码、解码 392
10.5 使用XviD CODEC算法 397
10.5.1 XviD基础 397
10.5.2 编译XviD 400
10.5.3 小试牛刀——演示XviD编码、解码 401
第三篇 编码、解码篇 413
第11章 MMX带来新的体验 413
11.1 MMX指令基础 413
11.1.1 MMX多媒体扩展 413
11.1.2 MMX指令剖析 414
11.1.3 CPU寄存器 419
11.2 MMX内联汇编的一般原则 420
11.3 MMX在C++中的使用 421
11.4 MMX代码开发规则 423
11.4.1 开发规则 423
11.4.2 开发建议 423
11.4.3 MMX代码开发策略 424
11.5 小试牛刀——MMX编程实例 425
第12章 SSE编程 440
12.1 SSE基础 440
12.1.1 SSE指令 440
12.1.2 其他的几种技术 441
12.2 SSE/SSE2剖析 442
12.2.1 SSE/SSE2原理 443
12.2.2 SSE/SSE编程设计 444
12.2.3 SSE指令简述 446
12.3 小试牛刀——SSE编程实例 458
12.3.1 SSETest项目 458
12.3.2 SSESample项目 461
第13章 最流行的DM642 465
13.1 认识TMS320DM642 465
13.2 CCS集成开发环境简介 466
13.2.1 CCS集成开发环境简介 466
13.2.2 DSP/BIOS插件 467
13.2.3 硬件仿真和实时数据交换 470
13.2.4 CCS文件和变量 470
13.3 常见应用介绍 473
13.3.1 DSP DM642上移植Yaffs2 473
13.3.2 基于TMS320C64x/DM64x的视频编码优化 475
13.3.3 DM642视频采集与回放 478
13.3.4 视频会议系统的主流解决方案与技术趋势 482
13.4 DSP视频算法优化 487
13.4.1 基于DSP视频算法系统优化策略 488
13.4.2 基于DSP的信道译码算法优化 491
13.5 基于DSP的JPEG图像解码算法的实现 495
13.5.1 JPEG图像算法基础 496
13.5.2 小试牛刀——JPEG编码算法实现DSP优化 498
第14章 MPEG-4编/解码分析 508
14.1 MPEG-4编/解码基础 508
14.1.1 基于对象的MPEG-4视频编码 508
14.1.2 XviD介绍 508
14.2 MPEG-4编/解码剖析 509
14.2.1 MPEG-4视频编码 509
14.2.2 MPEG-4视频解码 523
14.2.3 销毁解码器 535
14.3 DM642下实现XviD CODEC优化 537
14.3.1 水平方向插值补偿 537
14.3.2 垂直方向插值补偿 538
14.3.3 斜角插值补偿 540
14.4 运行XviD CODEC系统 542
14.4.1 YUV原始视频数据及其显示 542
14.4.2 VC平台编译\运行XviD CODEC 543
14.4.3 系统运行效果 545
第15章 H.264/AVC带来不一样的感觉 547
15.1 H.264/AVC基础 547
15.1.1 技术特点 547
15.1.2 编码结构与格式 549
15.2 X264视频编码从此开始 553
15.2.1 X264应用工程 554
15.2.2 libx264编码库 561
15.2.3 视频帧的存放和获取 562
15.2.4 视频帧压缩编码VCL 565
15.2.5 码流NAL打包输出 572
15.3 X264核心模块的MMX/DSP汇编优化 573
15.3.1 MMX/DSP汇编优化 574
15.3.2 DM642线性汇编优化 574
第四篇 综合实战篇 581
第16章 一切皆有可能——打造一个视频监控系统 581
16.1 系统分析 581
16.1.1 功能分析 581
16.1.2 系统目标 582
16.1.3 功能结构 582
16.1.4 系统预览 582
16.2 设计数据库 584
16.3 开发前的准备 584
16.3.1 选购监控卡 584
16.3.2 准备软件 585
16.3.3 安装监控卡 585
16.4 实现核心模块 586
16.4.1 设计公共模块 586
16.4.2 设计主窗体 592
16.5 其他辅助功能模块 605
16.5.1 设计管理员登录模块 605
16.5.2 监控管理 608
16.5.3 广角自动监控模块 611
16.5.4 视频回放模块 613
参考文献 615