DMO
播放器經驗總結
作業系統:
Window XP
IDE
:
VS2005
1
安裝
DirectX 9.0 SDK
1.1
下載
DirectX
9.0 SDK
播放器主要用到
DirectX
中的
DirectShow API
,而微軟最新的
DirectX SDK
已經將
DirectShow
剝離出來,以
Extras
的形式發布,後來整合了一部分
SDK
到
Windows SDK
中,也就是說後來的環境(比如
vs2005
、
vs2008
環境下)比較難配置,極有可能不穩定,產生這樣那樣的錯誤。所以最好使用如下
SDK
安裝包(網上找到的,感謝那位分享資源的網友,我在官網上沒有找到合適的
SDK
):
DirectX 9.0 SDK
:
http://cid-a76c4a4a3032ded0.skydrive.live.com/browse.aspx/.Public/DirectX%209.0%20SDK
1.2
安裝
將下載的
SDK
官解壓出來(如放在
dx9sdk_setup
目錄中),雙擊
Microsoft DirectX 9.0 SDK.msi
,安裝目錄
C:/DXSDK
,然後一路預設安裝。
1.3
編譯
BaseClasses
開啟
C:/DXSDK/Samples/C++/DirectShow/BaseClasses/baseclasses.sln
,在
VS2005
中開啟此檔案,提示你進行必要的工程轉換,儘管轉換就好了。
編譯之前需要做一些配置,工具
->
選項
->
項目和解決方案
->VC++
目錄,設定環境變數:
¨
包含檔案:
C:/DXSDK/Include
C:/DXSDK/Samples/C++/DirectShow/BaseClasses
C:/DXSDK/Samples/C++/DirectShow/Common
C:/DXSDK/Samples/C++/Common/Include
編譯時間會報一些錯誤:
¨
C:/Program
Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(222) : error
C2146: syntax error : missing ';' before identifier 'PVOID64'
解決辦法
:自己在
winnt.h
上加入定義
#define POINTER_64 __ptr64
,但感覺辦法不是很妥當,但苦於暫時沒有找到更合適的辦法。
¨
error C4430: missing type
specifier - int assumed. Note: C++ does not support default-int
error C4430:
缺少類型說明符
-
假定為
int
。注意
: C++
不支援預設
int
。
分析
:錯誤發生在:
operator=(LONG);
這條語句中,這是因為在
VC6
中,如果沒有顯示的指定傳回值類型,編譯器將其視為預設整形;但是
VS2005
不支援預設整形。
解決辦法
:
辦法一
:解決這個問題不能修改每個沒有顯示指示傳回值類型的函數地方,可以用
wd4430
來解決;具體的在工程選項中的
c++/Command Line
中添加
/wd4430
即可,如。
方法二
:直接在將
operator=(LONG);
語句改成
LONG operator=(LONG);
¨
error C2065: 'Count' :
未聲明的標識符
分析
:此錯誤發生在
for
迴圈中,
VC6
中
for
迴圈中定義的變數相當於在
for
外面定義,可以在
for
之外地方使用;但是
VS2005
的
for
迴圈中定義變數相當於域
{}
變數,只能在
for
迴圈中使用。
解決辦法
:要解決這個問題,可以通過修改
vs2005
的工程選項:
”Project Option”->“ C++ ”-> “Language” -> “Force
Comformance in For Loop Scrope”
設定為
No
即可,如。
完成上面的設定,
BaseClasses
工程基本可以編譯通過了,接著分別編譯
Debug
和
Release
兩個版本。
下面配置“庫檔案”環境變數(
工具
->
選項
->
項目和解決方案
->VC++
目錄
):
C:/DXSDK/Lib
C:/DXSDK/Samples/C++/DirectShow/BaseClasses/Debug
C:/DXSDK/Samples/C++/DirectShow/BaseClasses/Release
至此,
DirectShow
程式就可以編譯通過了。
2
安裝終極解碼
Windows XP
作業系統中只支援少數的音視頻格式,安裝終極解碼後可以支援大多數的音視頻格式。
3
DMO
播放器
以
DXSDK
中的
DMO
程式(
C:/DXSDK/Samples/C++/DirectShow/Players/PlayDMO
)開始學習如何編寫一個
DMO
播放器。