內容介紹
《
Visual C++音頻\視頻技術開發與實戰(附光碟)》由張玲玲編著,本書由淺入深地講解了使用Visual c++2010開發音頻和視頻項目的基本知識,並通過示例來講解具體的實現流程。
全書內容分為16章,詳細講解了使用各種軟體和平台進行音頻/視頻多媒體編程的技術,以案例為對象展示實現過程,分析技術難點。主要內容包括
DirectSound音頻開發、DirectShow/VFw視頻開發、MMX/SSE多媒體彙編編程、
DM642 DSP音頻和視頻算法最佳化、
MPEG.4/H.264編碼、CCS開發、XviDCODEC編碼和解碼。
《Visual C++音頻\視頻技術開發與實戰(附光碟)》系統地介紹了使用Visual c++2010進行流媒體編程的基本思路和方法,採用案例為主的敘述方式,將大量的理論和技術融入具體的案例剖析中。書中採用的案例均來源於作者的實際開發工作,具有很好的實用價值,方便廣大開發者在開發中進行參考或直接套用。隨書所附光碟包含書中示例的源檔案,並包括示例講解視頻,便於讀者加深對項目示例的理解。
圖書目錄
第一篇 基礎篇
第1章 音頻/視頻技術的現狀
1.1 了解一些音頻、視頻檔案格式
1.1.1 音頻格式
1.1.2 視頻格式
1.2 常用編解碼技術介紹
1.2.1 音頻的編碼和解碼
1.2.2 視頻的編碼和解碼
1.2.3 音頻視頻編碼方案
1.3 編/解碼技術的發展
1.4 不得不說的音視頻處理平台
1.5 必備的常用音視頻開發工具
1.5.1 Visual C++集成開發工具
1.5.2 多媒體API——DirectX
1.5.3 CCS開發系統
第2章 與MFC深情相擁
2.1 MFC印象
2.1.1 了解MFC編程的特點
2.1.2 關於MFC類的分層結構
2.1.3 MFC中的WinMain()函式
2.2 訊息交流的意義
2.2.1 訊息概述
2.2.2 Windows句柄
2.2.3 傳送訊息
2.2.4 訊息與事件
2.3 使用對話框
2.3.1 構建對話框應用程式
2.3.2 設定對話框屬性
2.3.3 常見對話框的種類
2.4 控制項
2.4.1 Windows公共控制項
2.4.2 ActiveX控制項
2.5 MSDN中的巨大資源
第二篇 DirectX篇
第3章 DirectSound,天籟之音靠你實現
3.1 什麼是緩衝區
3.1.1 緩衝區的種類
3.1.2 緩衝區通知
3.2 DirectSound開發基礎
3.2.1 DirectSound和DirectMusic
3.2.2 DirectSound SDK的結構
3.2.3 DirectSound的播放功能
3.2.4 開發步驟
3.3 DirectSound音頻開發對象
3.3.1 DirectSound對象介紹
3.3.2 使用DirectSound設備對象
3.3.3 使用DirectSound緩衝區對象
3.4 神奇的WAV數據
3.4.1 WAVE檔案結構
3.4.2 使用WAV數據
3.4.3 讀取WAV數據
3.4.4 計算WAV聲音的持續時間
3.4.5 三種播放WAV檔案的方法
3.5 DirectSound環境也需要搭建
3.5.1 DirectSound開發環境配置
3.5.2 配置開發環境
3.6 梳理播放音頻檔案的過程
3.6.1 第一步:創建DirectSound對象
3.6.2 第二步:設定設備協作級別
3.6.3 第三步:創建播放緩衝區
3.6.4 第四步:創建DirectSoundBuffer對象
3.7 小試牛刀——打造一個多彩的音頻播放器
3.7.1 創建項目程式框架
3.7.2 添加控制項和變數
3.7.3 封裝CDirectSound類實現DirectSound
3.7.4 對話框界面操作
3.7.5 編譯和調試
3.8 總結DirectSound音頻編程的步驟
第4章 混音和3D音效編程
4.1 混音開發技術
4.1.1 混音技術原理
4.1.2 小試牛刀——實現三路音頻混音
4.2 DirectSound 3D技術
4.2.1 DirectSound 3D介紹
4.2.2 聽眾空間參數
4.2.3 獲取3D聽者
4.2.4 三種處理模式
4.2.5 聲音的錐效應
4.2.6 DirectSound 3D緩衝區對象
4.2.7 試試聲音特技
4.3 小試牛刀——實現3D音效
4.3.1 創建項目程式框架
4.3.2 添加控制項和變數
4.3.3 實現流程分析
4.3.4 編譯和調試
第5章 錄製音頻
5.1 如何實現聲音的錄製
5.1.1 錄音的基本原理
5.1.2 剖析實現流程
5.2 小試牛刀——用DirectSound錄製音頻
5.2.1 封裝類
5.2.2 管理聲音的函式
5.2.3 編譯和調試
5.3 Windows CE下的錄音程式
5.3.1 Windows CE環境
5.3.2 使用緩衝實現音頻迴環錄製
5.3.3 小試牛刀——一個功能強大的錄音程式
第6章 DirectMusic音頻開發
6.1 什麼是DirectMusic
6.1.1 組成
6.1.2 功能
6.2 DirectMusic的體系結構
6.2.1 核心層和接口
6.2.2 DirectMusic的對象和接口
6.2.3 DirectMusic的數據流
6.2.4 DirectMusic的訊息
6.2.5 可下載銀色技術(DLS)
6.2.6 Microsoft軟體合成器
6.2.7 小試牛刀——打造一個音樂演奏器
6.3 小試牛刀——打造回音和測量工具
6.3.1 實例分析
6.3.2 具體實現
第7章 DirectShow來了
7.1 DirectShow基礎
7.1.1 DirectShow介紹
7.1.2 剖析DirectShow的構成
7.1.3 常用的DirectShow接口
7.2 搭建DirectShow SDK開發環境
7.2.1 獲取DirectShow SDK
7.2.2 安裝DirectShow SDK
7.3 配置DirectShow SDK開發環境
7.3.1 生成DirectShow SDK庫
7.3.2 配置Visual C++ 2010
7.3.3 幾個調試問題的解決方法
7.4 小試牛刀——使用DirectShow技術
7.4.1 濾鏡和圖像濾鏡介紹
7.4.2 編寫一個DirectShow程式
7.4.3 使用graphedit.exe播放AVI檔案
7.4.4 編程實現播放AVI檔案
第8章 DirectShow核心技術分析
8.1 Filter Graph及其組成
8.1.1 DirectShow中的Filter
8.1.2 Media Type(媒體類型)
8.1.3 媒體樣本Samples和分配器Allocators
8.2 構建Filter Graph
8.2.1 鍊表構建組件
8.2.2 Graph構建概述
8.2.3 智慧型連線詳解
8.3 數據流在Filter Graph中的流動
8.3.1 傳輸(Transports)
8.3.2 樣本Samples和分配器Allocators
8.3.3 Filter狀態
8.3.4 拉模式
8.4 事件通知機制(Event Notification)
8.4.1 從佇列中取事件
8.4.2 當事件發生時
8.5 時間的意義
8.5.1 參考時鐘
8.5.2 時鐘時間
8.5.3 時間戳
8.5.4 實時源(Live Source)
8.6 動態重建可靠嗎
8.6.1 動態重連
8.6.2 Filter鏈
8.7 剖析SDK基類源碼
8.7.1 COM實現部分和部分輔助源碼
8.7.2 與Pin密切相關的類
8.7.3 CBaseFilter類
8.7.4 CSource類
8.7.5 CTransformFilter類
8.7.6 CBaseRenderer類
8.7.7 CBaseAllocator類
8.8 小試牛刀——開發一個視頻播放器
8.8.1 系統分析和設計
8.8.2 實現媒體控制類
8.8.3 創建播放器主題
8.8.4 添加背景圖片
第9章 DirectShow基本套用
9.1 DirectShow的基本套用
9.1.1 視頻提交(Video Rendering)
9.1.2 枚舉系統的設備和過濾器
9.1.3 連線兩個Filter
9.1.4 獲得Filter或者Pin的接口指針
9.1.5 查找與某個Filter的上下相連的Filter
9.2 DirectShow SDK典型開發案例
9.2.1 用DirectShow實現視頻馬賽克處理
9.2.2 DirectShow驅動攝像頭
9.2.3 DirectShow視頻採集
9.2.4 錄製視頻
9.2.5 音頻採集
9.2.6 DirectShow在網路方面的套用
9.3 編寫自己的Filter
9.3.1 配置開發環境
9.3.2 創建工程
9.3.3 為Filter創建入口函式
9.3.4 實現Filter的類廠對象
9.3.5 實現自己的Filter
9.3.6 最後的總結
第10章 以VFW實現視頻處理
10.1 揭開VFW的神秘面紗
10.1.1 VFW概述
10.1.2 VFW開發流程
10.1.3 VFW視頻捕獲流程
10.1.4 視頻編輯和播放
10.2 VFW的視頻預覽
10.2.1 基本步驟
10.2.2 編碼演示
10.3 小試牛刀——用VFW實現視頻捕獲和預覽
10.3.1 建立單文檔應用程式
10.3.2 創建視頻視窗
10.3.3 創建回調函式
10.3.4 設定視頻圖像
10.3.5 捕獲預覽視頻
10.3.6 設定視頻格式和圖像參數
10.3.7 編碼、解碼捕獲的視頻
10.3.8 打開檔案操作
10.3.9 視窗診斷處理
10.3.10 實現CvfwappDoc類的接口
10.4 視頻壓縮管理器
10.4.1 視頻壓縮管理器初步
10.4.2 視頻壓縮管理器初步
10.4.3 三個重要的函式
10.4.4 小試牛刀——使用VCM編碼、解碼
10.5 使用XviD CODEC算法
10.5.1 XviD基礎
10.5.2 編譯XviD
10.5.3 小試牛刀——演示XviD編碼、解碼
第三篇 編碼、解碼篇
第11章 MMX帶來新的體驗
11.1 MMX指令基礎
11.1.1 MMX多媒體擴展
11.1.2 MMX指令剖析
11.1.3 CPU暫存器
11.2 MMX內聯彙編的一般原則
11.3 MMX在C++中的使用
11.4 MMX代碼開發規則
11.4.1 開發規則
11.4.2 開發建議
11.4.3 MMX代碼開發策略
11.5 小試牛刀——MMX編程實例
第12章 SSE編程
12.1 SSE基礎
12.1.1 SSE指令
12.1.2 其他的幾種技術
12.2 SSE/SSE2剖析
12.2.1 SSE/SSE2原理
12.2.2 SSE/SSE編程設計
12.2.3 SSE指令簡述
12.3 小試牛刀——SSE編程實例
12.3.1 SSETest項目
12.3.2 SSESample項目
第13章 最流行的DM642
13.1 認識TMS320DM642
13.2 CCS集成開發環境簡介
13.2.1 CCS集成開發環境簡介
13.2.2 DSP/BIOS外掛程式
13.2.3 硬體仿真和實時數據交換
13.2.4 CCS檔案和變數
13.3 常見套用介紹
13.3.1 DSP DM642上移植Yaffs2
13.3.2 基於TMS320C64x/DM64x 的視頻編碼最佳化
13.3.3 DM642視頻採集與回放
13.3.4 視頻會議系統的主流解決方案與技術趨勢
13.4 DSP視頻算法最佳化
13.4.1 基於DSP視頻算法系統最佳化策略
13.4.2 基於DSP的信道解碼算法最佳化
13.5 基於DSP的JPEG圖像解碼算法的實現
13.5.1 JPEG圖像算法基礎
13.5.2 小試牛刀——JPEG編碼算法實現DSP最佳化
第14章 MPEG-4編/解碼分析
14.1 MPEG-4編/解碼基礎
14.1.1 基於對象的MPEG-4視頻編碼
14.1.2 XviD介紹
14.2 MPEG-4編/解碼剖析
14.2.1 MPEG-4視頻編碼
14.2.2 MPEG-4視頻解碼
14.2.3 銷毀解碼器
14.3 DM642下實現XviD CODEC最佳化
14.3.1 水平方向插值補償
14.3.2 垂直方向插值補償
14.3.3 斜角插值補償
14.4 運行XviD CODEC系統
14.4.1 YUV原始視頻數據及其顯示
14.4.2 VC平台編譯\運行XviD CODEC
14.4.3 系統運行效果
第15章 H.264/AVC帶來不一樣的感覺
15.1 H.264/AVC基礎
15.1.1 技術特點
15.1.2 編碼結構與格式
15.2 X264視頻編碼從此開始
15.2.1 X264套用工程
15.2.2 libx264編碼庫
15.2.3 視頻幀的存放和獲取
15.2.4 視頻幀壓縮編碼VCL
15.2.5 碼流NAL打包輸出
15.3 X264核心模組的MMX/DSP彙編最佳化
15.3.1 MMX/DSP彙編最佳化
15.3.2 DM642線性彙編最佳化
第四篇 綜合實戰篇
第16章 一切皆有可能——打造一個視頻監控系統
16.1 系統分析
16.1.1 功能分析
16.1.2 系統目標
16.1.3 功能結構
16.1.4 系統預覽
16.2 設計資料庫
16.3 開發前的準備
16.3.1 選購監控卡
16.3.2 準備軟體
16.3.3 安裝監控卡
16.4 實現核心模組
16.4.1 設計公共模組
16.4.2 設計主窗體
16.5 其他輔助功能模組
16.5.1 設計管理員登錄模組
16.5.2 監控管理
16.5.3 廣角自動監控模組
16.5.4 視頻回放模組
參考文獻