第1章 音频/视频技术基础 1
1.1数字音频、视频的基本概念 2
1.1.1数字音频技术的发展 2
1.1.2常见数字音频、视频文件格式 3
1.2数字音/视频的编/解码技术介绍 8
1.2.1音频数据的编码、解码 8
1.2.2视频数据的编码、解码 10
1.2.3音频/视频编码方案 11
1.2.4未来的音频/视频编码技术标准 11
1.3视频信息网络传输基础 13
1.4常见的音频/视频处理平台 15
1.5常用的音频/视频开发工具 15
1.5.1 DirectSound 16
1.5.2 DirectShow 16
1.5.3 CCS算法 16
第2章Visual C++ 2005开发环境介绍 18
2.1 Visual Studio.NET基础 19
2.1.1 Visual Studio.NET工具介绍 19
2.1.2安装Visual Studio 2005 19
2.2初识Visual Studio 2005环境 21
2.2.1 Visual Studio 2005设置 21
2.2.2新建项目 22
2.2.3解决方案和类视图 24
2.2.4文本编辑器 26
2.2.5生成与查错 28
2.3使用向导完成开发 29
2.3.1创建应用程序 29
2.3.2生成应用库LIB/DLL 39
2.4安装Visual Studio 2005的常见问题 40
第3章M FC介绍 42
3.1 MFC概述 43
3.1.1 MFC编程的特点 43
3.1.2 MFC类的分层结构 44
3.1.3 MFC中的WinMain()函数 44
3.2 Windows消息机制 44
3.2.1消息概述 45
3.2.2 Windows句柄 46
3.2.3消息的传送 46
3.2.4消息与事件 47
3.3对话框编程 48
3.3.1构建对话框应用程序 48
3.3.2设置对话框属性 51
3.3.3常见对话框的种类 54
3.4控件基础 59
3.4.1 Windows公共控件 60
3.4.2 ActiveX控件 61
3.5 MSDN中的巨大资源 64
第4章DirectX实现音频开发 67
4.1 DirectX基础 68
4.1.1 DirectX的历史 68
4.1.2版本与功能 68
4.1.3结构 72
4.1.4组成 72
4.2搭建DirectX开发环境 75
4.2.1获取DirectX 76
4.2.2安装DirectX SDK 78
4.2.3配置DirectX SDK 80
4.3 DirectSound开发基础 82
4.3.1 DirectSound能做什么 83
4.3.2 DirectSound和DirectMusic的区别 83
4.3.3 DirectSound SDK结构 84
4.3.4 DirectSound播放功能介绍 85
4.4 DirectSound使用方法详解 85
4.4.1 DirectSound开发的基本步骤 85
4.4.2 DirectSound对象介绍 86
4.4.3使用DirectSound设备对象 87
4.4.4使用DirectSound缓冲区对象 92
4.4.5使用WAV数据 100
4.4.6使用DirectX媒体对象控制音效 103
4.5 DirectSound环境配置 108
4.5.1 DirectSound开发环境配置 108
4.5.2开发环境配置 110
4.6调试程序 112
4.6.1 Visual C++调试器 112
4.6.2一些基本的调试技术 115
第5章 制作一个音频播放器 116
5.1先了解基础知识——缓冲区 117
5.1.1缓冲区的几种类型 117
5.1.2缓冲区通知 117
5.2系统总体设计和分析 118
5.2.1 MCI 119
5.2.2 PlaySound()函数 119
5.2.3低级别WAV音频设备 120
5.3播放文件 122
5.3.1创建DirectSound对象 122
5.3.2创建播放缓冲区 122
5.3.3创建DirectSoundBuffer对象 125
5.4总结DirectSound音频编程的步骤及方法 127
5.5项目具体实现 128
5.5.1创建项目程序框架 128
5.5.2添加控件和变量 129
5.5.3封装CDirect5ound类实现DirectSound 129
5.5.4对话框界面操作 139
5.5.5编译和调试 142
第6章3D音效编程 143
6.1先了解基础知识 144
6.1.1 DirectSound 3D介绍 144
6.1.2最大距离和最小距离 145
6.1.3处理模式介绍 145
6.1.4 Buffer的位置和速度 146
6.1.5声音的锥效应 146
6.2 DirectSound 3D缓冲区对象 147
6.3 DirectSound 3D虚拟听众 148
6.3.1听众空间参数 148
6.3.2获取3D听者 150
6.3.3距离因子和多普勒效应(Doppler) 151
6.4增加声音特技Using Effects 151
6.5项目具体实现 152
6.5.1创建项目程序框架 152
6.5.2添加控件和变量 153
6.5.3实现流程分析 155
6.5.4编译和调试 172
第7章 录制音频 174
7.1先了解基础知识 175
7.1.1录音的基本原理 175
7.1.2实现流程分析 176
7.2项目具体实现 184
7.2.1封装类 184
7.2.2管理函数 188
7.2.3编译和调试 199
第8章 引入DirectShow 201
8.1 DirectShow基础 202
8.1.1 DirectShow介绍 202
8.1.2 DirectShow构成 202
8.2搭建DirectShow SDK开发环境 205
8.2.1获取DirectShow SDK 205
8.2.2安装DirectShow SDK 206
8.3配置DirectShow SDK开发环境 208
8.3.1生成DirectShow SDK库 208
8.3.2配置Visual C++ 2005 213
8.3.3最后看笔者机器的调试过程 215
8.4 DirectShow使用案例 219
8.4.1滤镜和图像滤镜介绍 219
8.4.2编写一个DirectShow程序 220
8.4.3使用graphedt.exe播放AVI文件 220
8.4.4编程实现播放AVI文件 221
第9章DirectShow开发详解 225
9.1 Filter Graph及其组成 226
9.1.1 DirectShow的Filter 226
9.1.2 Filter Graph Manager对象 227
9.1.3媒体类型 228
9.1.4媒体样本Samples和分配器Allocators 231
9.2构建Filter Graph 231
9.2.1链表构建组件 231
9.2.2智能连接初步介绍 232
9.2.3 Grap构建概述 232
9.2.4智能连接详解 233
9.3数据流在Filter Graph里的流动 235
9.3.1传输 236
9.3.2样本Samples和分配器Allocators 236
9.3.3 Filter状态 238
9.3.4拉模式 239
9.4事件通知机制 239
9.4.1概述 239
9.4.2从队列中取事件 240
9.4.3当事件发生时 240
9.5 DirectShow中的时间和时钟 242
9.5.1参考时钟 243
9.5.2时钟时间 243
9.5.3时间戳 244
9.5.4实时源 245
9.6动态重建 246
9.6.1动态重连 246
9.6.2 Filter链 248
9.7插件发布者 249
9.8 DirectShow的重要接口 251
9.8.1常用的DirectShow接口 251
9.8.2用DirectShow来使用摄像头 252
9.9再次总结DirectShow程序开发过程 253
9.10 DirectShow SDK典型开发案例 254
9.10.1开发一个媒体播放器 254
9.10.2基于DirectShow的流媒体解码和回放 255
9.10.3尝试用DirectShow实现视频马赛克处理 256
9.10.4使用DirectShow驱动摄像头 262
9.10.5 DirectShow视频采集 264
9.10.6录制视频 274
9.10.7音频采集 279
9.10.8 DirectShow在网络方面的应用 281
第10章DV视频采集编程 303
10.1系统分析与设计 304
10.1.1采集设备的枚举 304
10.1.2使用CaptureGraphBuilder 307
10.1.3采集参数的设置 307
10.2使用VMR实现视频图像捕获 309
10.2.1 VMR技术基础 309
10.2.2 GraphEdit模拟实现视频捕获预览 310
10.2.3实现视频图像捕获类CVMR_Capture 311
10.2.4界面设计 319
10.2.5运行演示 323
第11章VFW视频处理 325
11.1系统分析与设计 326
11.1.1 VFW概述 326
11.1.2 VFW开发流程 326
11.1.3 VFW视频捕获流程 328
11.1.4视频编辑和播放 329
11.2一个简单的基于VFW的视频预览 330
11.3 VFW实现视频捕获和预览 333
11.3.1建立单文档应用程序 333
11.3.2创建视频窗口 335
11.3.3创建回调函数 336
11.3.4设置视频图像 339
11.3.5捕获预览视频 341
11.3.6设置视频格式和图像参数 342
11.3.7其他相关操作 343
11.4视频压缩管理器 347
11.4.1视频压缩管理器初步(1) 347
11.4.2视频压缩管理器初步(2) 348
11.4.3压缩、解压缩及Renderers的注册表项目 353
11.4.4能完成的任务 354
11.4.5 VFW中vCM的基本操作过程及相关函数 356
11.4.6应用vCM案例 358
11.5 XviD CODEC算法实现编码、解码 363
11.5.1 XviD基础 364
11.5.2编译XviD 372
11.5.3 XviD编码、解码实例 374
第12章 编码和解码基础 382
12.1数字音频和数字视频介绍 383
12.1.1数字音频 383
12.1.2数字视频 384
12.1.3视频压缩 386
12.2音频编码处理 388
12.2.1音频编码方法 388
12.2.2 MPEG-1音频 392
12.2.3 MPEG-2音频 400
12.2.4 MPEG-4音频 404
12.3视频编码处理 411
12.3.1 H.261和H.263标准 412
12.3.2 MPEG标准 414
12.3.3 MPEG-1和MPEG-2视频标准 418
12.3.4 MPEG-4编码标准 424
12.3.5 MPEG-7编码标准 425
第13章MMX/SSE编程 427
13.1 MMX/SSE基础 428
13.1.1 MMX多媒体扩展 428
13.1.2 SSE指令 428
13.1.3 3D Now指令 429
13.1.4其他几种技术 430
13.2 MMX指令介绍 431
13.2.1 MMX指令基础 431
13.2.2 CPU寄存器 436
13.2.3 MMX内联汇编原则 437
13.2.4 MMX在Visual C+++中的使用 438
13.2.5 MMX编程实例 439
13.3 SSE/SSE 2指令 450
13.3.1 SSE/SSE 2基础 450
13.3.2 SSE/SSE 2编程设计 451
13.3.3 SSE编程实例 453
第14章DM642视频编码/解码编程 459
14.1 TMS320DM642概述 460
14.2 CCS开发环境 460
14.2.1 CCS概述 461
14.2.2 CCS系统配置 462
14.2.3代码生成工具 463
14.2.4 CCS集成开发环境简介 464
14.2.5 DSP/BIOS插件 465
14.2.6硬件仿真和实时数据交换 467
14.2.7第三方插件 469
14.2.8 CCS文件和变量 469
14.3 CCS开发一个简单的应用程序 470
14.3.1创建工程文件 471
14.3.2向工程添加文件 471
14.3.3查看源代码 472
14.3.4编译和运行程序 473
14.3.5修改程序选项和纠正语法错误 474
14.3.6使用断点和观察窗口 475
14.3.7测算源代码执行时间 476
14.4常见应用介绍 477
14.4.1 DM642在视频应用的模块 478
14.4.2 DM642启动过程分析 479
14.4.3在DSP DM642上移植yaffs2 481
14.4.4 DM642 RF框架小结 483
14.4.5基于TMS320C64x/DM64x的视频编码优化 486
14.4.6 DM642视频采集与回放 489
14.4.7视频会议系统的主流解决方案与技术趋势 493
14.5 DSP视频算法优化 498
14.5.1基于DSP的视频算法系统优化若干策略 498
14.5.2 MPEG音频解码算法的DSP设计和优化 501
14.5.3基于DSP的信道译码算法优化 504
14.6基于DSP的JPEG图像解码算法的实现 508
14.6.1 JPEG图像算法基础 508
14.6.2 JPEG编码算法的DSP优化实例 511
14.7最后的迷津——哈夫曼编码 519
第15章 实现MPEG-4编码/解码 528
15.1 MPEG-4编/解码概述 529
15.1.1基于对象的MPEG-4视频编码 529
15.1.2 XviD格式文件播放 529
15.2 XviD CODEC编/解码分析 529
15.2.1 MPEG-4编/解码设计分析 530
15.2.2 MMX/SSE2实现XviD CODEC 556
15.3 SSE2汇编指令优化核心模块 559
15.4 DM642下的XviD CODEC优化 561
15.5运行XviD CODEC系统 566
15.5.1 YUV原始视频数据及其显示 566
15.5.2在Visual C++平台下编译/运行XviD CODEC 567
15.5.3 CODEC在DSP下软仿真和硬仿真 569
15.6系统运行效果 569
第16章H.264/AVC编码技术详解 571
16.1 H.264/AVC的特点与结构 572
16.1.1技术特点 572
16.1.2编码结构与格式 573
16.2 H.264/AVC的预测编码 577
16.2.1帧内预测 577
16.2.2帧间预测与运动补偿 580
16.3 H.264/AVC的块编码 582
16.3.1 4×4整数DCT 583
16.3.2量化 586
16.3.3 CAVLC 588
16.3.4 CABAC 592
16.4 X.264视频编码设计和分析 596
16.4.1 X.264应用工程 596
16.4.2 libx264编码库 602
16.4.3视频帧的存放和获取 604
16.4.4视频帧压缩编码VCL 607
16.4.5码流NAL打包输出 614
16.5 X.264核心模块的MMX/DSP汇编优化 615
16.5.1 MMX/DSP汇编优化 615
16.5.2 DM642线性汇编优化 616
第17章 制作一个媒体播放器 619
17.1系统分析和设计 620
17.1.1功能需求和效果展示 620
17.1.2设计FilterGraph结构 621
17.1.3实现GraphEdit模拟 621
17.1.4设计界面 623
17.2实现媒体控制类 627
17.2.1 CDXGraph类初始化 627
17.2.2创建Graph滤波器链表 629
17.2.3设计图像窗口 631
17.2.4媒体播放控制 632
17.2.5视频全屏显示 635
17.2.6抓图保存 636
17.3实现播放器主题 637
17.3.1打开一个媒体文件 637
17.3.2渲染媒体文件 637
17.3.3播放媒体文件 638
17.3.4实现控制功能 639
17.3.5实现拖放功能 643
17.3.6实现音量调节功能 644
17.3.7添加背景图片 645
第18章 网络视频监控系统 647
18.1中国视频监控市场现状与发展趋势 648
18.2系统分析 648
18.3系统设计 649
18.4系统预览 649
18.5编码规则介绍 650
18.6设计数据库 651
18.7开发前的最后准备——选购监控卡 652
18.7.1选购监控卡 652
18.7.2软件准备 653
18.7.3安装监控卡 653
18.8具体编程实现 653
18.8.1设计公共模块 653
18.8.2设计主窗体 659
18.9设计管理员登录模块 675
18.10设计监控管理模块 677
18.10.1监控管理技术分析 678
18.10.2编程监控管理 678
18.10.3单元测试处理 682
18.11设计广角自动监控模块 682
18.11.1可行性分析 683
18.11.2编程实现 684
18.11.3单元测试 687
18.12设计视频回放模块 688
18.12.1技术分析 689
18.12.2编程实现 689
18.13分析绚丽界面的实现方法 690
18.13.1绚丽的界面是客户的需求 690
18.13.2编程实现 690