SDL

SDL

多媒體數據庫
SDL(Simple DirectMedia Layer)是一套開放源代碼的跨平台多媒體開發庫,使用C語言寫成。SDL多用于開發遊戲、模拟器、媒體播放器等多媒體應用領域。SDL内置了調用OpenGL的函數。SDL提供了數種控制圖像、聲音、輸出入的函數,讓開發者隻要用相同或是相似的代碼就可以開發出跨多個平台(Linux、Windows、Mac OS X等)的應用軟件。
    中文名: 外文名:SDL 适用領域:源代碼開發 所屬學科: 全稱:Simple DirectMedia Layer 性質:開放源代碼的跨平台多媒體開發庫 廣泛的用于:許多著名的遊戲

簡介

SDL(Simple DirectMedia Layer)被廣泛的用于許多著名的遊戲。最著名的遊戲是赢得Linux組遊戲開發大獎的文明:權利的召喚(Civilization: Call To Power)。

SDL的作者是Sam Lantinga, Loki Entertainment Software的主力程序員(Lead Programmer)。

功能介紹

·SDL有哪些功能?

·視頻

設置8bpp或更高的任意色彩深度的視頻模式。如果某個模式硬件不支持,可以選擇轉化為另一模式。

直接寫入線性的圖像幀緩沖(framebuffer)。

用顔色鍵值(colorkey)或者alpha混合屬性創建surface。

Surface的blit能自動的轉化為目标格式。blit是優化過的,并能使用硬件加速。x86平台上有針對MMX優化過的blit。

硬件加速的blit和fill(填充)操作,如果硬件支持的話。

·事件

提供以下事件:

應用程序的visibility發生改變

鍵盤輸入

鼠标輸入

用戶要求的退出

每種事件都能通過SDL_EventState()關閉或者打開。

事件經由用戶指定的過濾函數再被加入到内部的事件隊列。

線程安全的事件隊列。

·音頻

設置8位和16位的音頻,單聲道或者立體聲,如果格式硬件不支持,可以選擇轉換。

由獨立的線程執行音頻部分,并提供用戶回調(callback)機制。

設計上考慮到了客戶定制的軟混音器,但實際上在例程中就包含了一個完整的音頻/音樂輸出庫。

·CD音頻

完整的CD音頻控制API

·線程

簡單的線程創建API

用于同步的簡單的二進制信号量(semaphores)

·定時器

讀取已流逝的毫秒數。

等待指定的毫秒數。

設置一個10毫秒精度的周期性定時器。

·字節序無關

偵測當前系統的字節序

快速轉換數據的函數

讀寫指定字節序的數據

支持系統

·SDL支持哪些系統平台?

·Linux

視頻顯示使用X11,利用XFree86 DGA擴展的優勢,全屏顯示使用新的w MTRR加速。

聲音使用OSS API。

使用clone()系統調用和SysV IPC,或者glibc-2.1的pthreads實現線程。

·Win32

有兩個版本,一個是适合所有基于Win32的系統的安全版本,另一個是基于DirectX的高性能版本。

安全版本的視頻顯示采用GDI。高性能版本采用DirectDraw,并支持硬件加速。

安全版本的音頻回放采用waveOut API。高性能版本采用DirectSound

·BeOS

視頻顯示采用BWindow。

音頻回放采用BSoundPlayer API。

·非正式的移植版本,進展中Solaris, IRIX, FreeBSD MacOS

軟件安全開發周期

軟件安全開發周期(Security Development Lifecycle)

即Security Development Lifecycle (SDL),是微軟提出的從安全角度指導軟件開發過程的管理模式。SDL不是一個空想的理論模型。它是微軟為了面對現實世界中安全挑戰,在實踐中的一步步發展起來的模式。

SDL的核心理念就是将軟件安全的考慮集成在軟件開發的每一個階段需求分析、設計、編碼、測試和維護。

規範與描述語言

規範與描述語言(Specification and Description Language)

簡單介紹

SDL(Specification and Description Language)語言是CCITT推薦的規格與描述性語言。由ITU-T發展和标準化,定義在蘭皮書Z.100建議中(1992年,1996年增補)。作為國際标準化的正式語言,它被用來規範描述實時系統。目前,SDL-96是SDL的最新版本。作為SDL相關技術,本文把Z.120建議:消息序列圖(message sequence charts,MSC)和Z.105建議:抽象語法符号-一(abstract syntax notation -one, ASN.1)作為SDL的一部分理解。

ITU将SDL描述為"實時系統的特性描述語言"。絕大多數SDL概念有文本和圖形兩種表述形式。由于缺乏某些範圍内的高層結構和一些象C語言的概念,SDL并非編程語言。SDL并不描述系統發展進程。因此,在實際應用中,開發人員将應用用SDL圖形描述,再由SDL工具将其轉化為C語言源代碼,或者CHILL源代碼,最後嵌入到實際開發環境中。

使用SDL,可以半圖形、半文本地定義特定類型的嵌入式系統的功能描述。這種方法的高度正式性,使得SDL工具有可能生成和測試完整的嵌入式應用。國外大量軟件評論家認為,SDL的這種正式方法,應該推薦擴展應用到嵌入式系統之外。事實上,如SDL的消息順序圖,已經被普通的面向對象技術CASE工具,如Rational Rose,在交互式圖形部分廣泛采用。

适應範圍

SDL的使用範圍甚至可以超出電信領域的範疇。但是,SDL也有一些限制。SDL不能适應所有類型的實時系統,例如系統需要描述精确行為,和(或)需要處理複雜數學問題或類似變換,就不适合。需要大量進程間的緊密協作時也不合适。SDL可以很好地處理多種并行處理應用,但僅當它們可用消息傳送和非優先級排隊模型很好地表述時。另外,SDL難于表示系統的一套複雜靜态規則和數據關系,并缺乏對訪問穩定數據的有效支持。

SDL方法适合于以下系統:

·主要與其他系統通訊(嵌入式系統)

·精确準時行為非關鍵。

·與其他系統主要是數字通訊,而不是模拟信号。

·無須執行複雜計算。

·需要并發運行,異步通訊。(并行系統)

·極少需要複雜數據關系模型。

SDL使用有限狀态機FSM的概念來描述對象。SDL進程本質上是對象,它們具有各種不同的狀态,在每種狀态下發送、接收和處理進程消息,對封裝的數據完成處理,并具有确定的狀态行為。當然,其數據處理能力遠不如描述進程能力強。SDL進程的任務是處理輸入消息隊列。為了提高效率,SDL進程并發運行,相互之間異步通訊。SDL進程之間也可以通過特定的"SDL遠程調用"信号同步通訊。

由于SDL的種種特性,它最适合的場合時描述呼叫處理和協議處理。事實上,大量ITU-T的标準都是用SDL描述的,或者象國标中常常采用消息順序圖(MSC)來描述。MSC比SDL圖更加直觀,但其描述不足以生成為實際應用程序,它一般被用來作為系統設計用。在當前的多數SDL軟件工具中,都提供了從SDL到MSC的生成工具,用以作為後期設計系統的正确性驗證用。在如Telelogic的SDT軟件中,甚至提供了SDL調試中動态MSC跟蹤功能。

對于主機數據庫開發,用SDL就不合适。因為在這裡,需要大量單任務,同步通訊一個進程調用另外一個進程。SDL可以處理這種過程直接調用模型,但其真正的長處在于處理并行多任務之間的異步通訊。當然,在協調并發任務之間的同步機制上,SDL僅提供了高級的支持。對于一部分流行的支持搶先式多任務的操作系統,如pSOS, VxWorks, Win32等,部分SDL工具附帶提供了SDL與操作系統的緊耦合接口庫。

軟件工具現狀

SDL的商用工具主要有以下幾種:

·CATT的SDL工具Melba。

·Kvatro Telecom的SDL到CHILL轉換器,與Telelogic的SDT集成在一起。CHILL工具CHIPSY。

·Telelogic的SDL工具SDT,和其他相關工具。

·Verilog的SDL工具ObjectGEODE,和其他相關工具。

另外,還有一些SDL的共享軟件工具。

由于SDL語言在工程設計中所處的層次較低,及它已經面向應用開發的最末端(可以生成機器代碼),SDL在系統分析方面,尤其是面向對象的分析方面有自身的不足,SDL-92開始引入面向對象的概念。而在SDL工具軟件中,則大量使用流行的OMT/UML對象标準模型(Object Modeling Technique),并提供CORBA/IDL支持。

SDT也不例外。其UML(Unified Modeling Language)編輯工具,采用的就是OMT/UML标準文法及标注方式。在分布式應用面向對象模型CORBA中,兩個重要的部件是ORB(Object Request Broker)和IDL(Interface Description Language)。SDT支持用IDL寫CORBA對象描述,然後通過SDT提供的IDL-SDL轉換工具,自動轉換并實現在SDL中。

相關詞條

相關搜索

其它詞條