幀同步源碼
1. 可否在PC機上對視頻流做實時壓縮
視頻壓縮技術
視頻編碼的基本原理
視頻圖像數據有極強的相關性,也就是說有大量的冗餘信息。其中冗餘信息可分為空域冗餘信息和時域冗餘信息。壓縮技術就是將數據中的冗餘信息去掉(去除數據之間的相關性),壓縮技術包含幀內圖像數據壓縮技術、幀間圖像數據壓縮技術和熵編碼壓縮技術。
去時域冗餘信息
使用幀間編碼技術可去除時域冗餘信息,它包括以下三部分:
- 運動補償
運動補償是通過先前的局部圖像來預測、補償當前的局部圖像,它是減少幀序列冗餘信息的有效方法。
- 運動表示
不同區域的圖像需要使用不同的運動矢量來描述運動信息。運動矢量通過熵編碼進行壓縮。
- 運動估計
運動估計是從視頻序列中抽取運動信息的一整套技術。
註:通用的壓縮標准都使用基於塊的運動估計和運動補償。
去空域冗餘信息
主要使用幀間編碼技術和熵編碼技術:
- 變換編碼
幀內圖像和預測差分信號都有很高的空域冗餘信息。變換編碼將空域信號變換到另一正交矢量空間,使其相關性下降,數據冗餘度減小。
- 量化編碼
經過變換編碼後,產生一批變換系數,對這些系數進行量化,使編碼器的輸出達到一定的位率。這一過程導致精度的降低。
- 熵編碼
熵編碼是無損編碼。它對變換、量化後得到的系數和運動信息,進行進一步的壓縮。
視頻編碼的基本框架(圖)
國際音視頻壓縮標准發展歷程
H.261
H.261標準是為ISDN設計,主要針對實時編碼和解碼設計,壓縮和解壓縮的信號延時不超過150ms,碼率px64kbps(p=1~30)。
H.261標准主要採用運動補償的幀間預測、DCT變換、自適應量化、熵編碼等壓縮技術。 只有I幀和P幀,沒有B幀,運動估計精度只精確到像素級。支持兩種圖像掃描格式:QCIF和CIF。
H.263
H.263標準是甚低碼率的圖像編碼國際標准,它一方面以H.261為基礎,以混合編碼為核心,其基本原理框圖和H.261十分相似,原始數據和碼流組織也相似;另一方面,H.263也吸收了MPEG等其它一些國際標准中有效、合理的部分,如:半像素精度的運動估計、PB幀預測等,使它性能優於H.261。
H.263使用的位率可小於64Kb/s,且傳輸比特率可不固定(變碼率)。H.263支持多種解析度: SQCIF(128x96)、 QCIF、CIF、4CIF、16CIF。
與H.261和H.263相關的國際標准
與H.261有關的國際標准
H.320:窄帶可視電話系統和終端設備;
H.221:視聽電信業務中64~1 920Kb/s信道的幀結構;
H.230:視聽系統的幀同步控制和指示信號;
H.242:使用直到2Mb/s數字信道的視聽終端的系統。
與H.263有關的國際標准
H.324:甚低碼率多媒體通信終端設備;
H.223:甚低碼率多媒體通信復合協議;
H.245:多媒體通信控制協議;
G.723.1.1:傳輸速率為5.3Kb/s和6.3Kb/s的語音編碼器。
JPEG
國際標准化組織於1986年成立了JPEG(Joint Photographic Expert Group)聯合圖片專家小組,主要致力於制定連續色調、多級灰度、靜態圖像的數字圖像壓縮編碼標准。常用的基於離散餘弦變換(DCT)的編碼方法,是JPEG演算法的核心內容。
MPEG-1/2
MPEG-1標准用於數字存儲體上活動圖像及其伴音的編碼,其數碼率為1.5Mb/s。 MPEG-1的視頻原理框圖和H.261的相似。
MPEG-1視頻壓縮技術的特點:1. 隨機存取;2. 快速正向/逆向搜索;3 .逆向重播;4. 視聽同步;5. 容錯性;6. 編/解碼延遲。MPEG-1視頻壓縮策略:為了提高壓縮比,幀內/幀間圖像數據壓縮技術必須同時使用。幀內壓縮演算法與JPEG壓縮演算法大致相同,採用基於DCT的變換編碼技術,用以減少空域冗餘信息。幀間壓縮演算法,採用預測法和插補法。預測誤差可在通過DCT變換編碼處理,進一步壓縮。幀間編碼技術可減少時間軸方向的冗餘信息。
MPEG-2被稱為「21世紀的電視標准」,它在MPEG-1的基礎上作了許多重要的擴展和改進,但基本演算法和MPEG-1相同。
MPEG-4
MPEG-4標准並非是MPEG-2的替代品,它著眼於不同的應用領域。MPEG-4的制定初衷主要針對視頻會議、可視電話超低比特率壓縮(小於64Kb/s)的需求。在制定過程中,MPEG組織深深感受到人們對媒體信息,特別是對視頻信息的需求由播放型轉向基於內容的訪問、檢索和操作。
MPEG-4與前面提到的JPEG、MPEG-1/2有很大的不同,它為多媒體數據壓縮編碼提供了更為廣闊的平台,它定義的是一種格式、一種框架,而不是具體演算法,它希望建立一種更自由的通信與開發環境。於是MPEG-4新的目標就是定義為:支持多種多媒體的應用,特別是多媒體信息基於內容的檢索和訪問,可根據不同的應用需求,現場配置解碼器。編碼系統也是開放的,可隨時加入新的有效的演算法模塊。應用范圍包括實時視聽通信、多媒體通信、遠地監測/監視、VOD、家庭購物/娛樂等。
JVT:新一代的視頻壓縮標准
JVT是由ISO/IEC MPEG和ITU-T VCEG成立的聯合視頻工作組(Joint Video Team),致力於新一代數字視頻壓縮標準的制定。
JVT標准在ISO/IEC中的正式名稱為:MPEG-4 AVC(part10)標准;在ITU-T中的名稱:H.264(早期被稱為H.26L)
H264/AVC
H264集中了以往標準的優點,並吸收了以往標准制定中積累的經驗, 採用簡潔設計,使它比MPEG4更容易推廣。H.264創造性了多參考幀、多塊類型、整數變換、幀內預測等新的壓縮技術,使用了更精細的分象素運動矢量(1/4、1/8)和新一代的環路濾波器,使得壓縮性能大大提高,系統更加完善。
H.264主要有以下幾大優點:
- 高效壓縮:與H.263+和MPEG4 SP相比,減小50%比特率
- 延時約束方面有很好的柔韌性
- 容錯能力
- 編/解碼的復雜性可伸縮性
- 解碼全部細節:沒有不匹配
- 高質量應用
- 網路友善
監控中的視頻編碼技術
目前監控中主要採用MJPEG、MPEG1/2、MPEG4(SP/ASP)、H.264/AVC等幾種視頻編碼技術。對於最終用戶來言他最為關心的主要有:清晰度、存儲量(帶寬)、穩定性還有價格。採用不同的壓縮技術,將很大程度影響以上幾大要素。
MJPEG
MJPEG(Motion JPEG)壓縮技術,主要是基於靜態視頻壓縮發展起來的技術,它的主要特點是基本不考慮視頻流中不同幀之間的變化,只單獨對某一幀進行壓縮。
MJPEG壓縮技術可以獲取清晰度很高的視頻圖像,可以動態調整幀率、解析度。但由於沒有考慮到幀間變化,造成大量冗餘信息被重復存儲,因此單幀視頻的佔用空間較大,目前流行的MJPEG技術最好的也只能做到3K位元組/幀,通常要8~20K!
MPEG-1/2
MPEG-1標准主要針對SIF標准解析度(NTSC制為352X240;PAL制為352X288)的圖像進行壓縮. 壓縮位率主要目標為1.5Mb/s.較MJPEG技術,MPEG1在實時壓縮、每幀數據量、處理速度上有顯著的提高。但MPEG1也有較多不利地方:存儲容量還是過大、清晰度不夠高和網路傳輸困難。
MPEG-2 在MPEG-1基礎上進行了擴充和提升,和MPEG-1向下兼容,主要針對存儲媒體、數字電視、高清晰等應用領域,解析度為:低(352x288),中(720x480),次高(1440x1080),高(1920x1080)。MPEG-2視頻相對MPEG-1提升了解析度,滿足了用戶高清晰的要求,但由於壓縮性能沒有多少提高,使得存儲容量還是太大,也不適和網路傳輸。
MPEG-4
MPEG-4視頻壓縮演算法相對於MPEG-1/2在低比特率壓縮上有著顯著提高,在CIF(352*288)或者更高清晰度(768*576)情況下的視頻壓縮,無論從清晰度還是從存儲量上都比MPEG1具有更大的優勢,也更適合網路傳輸。另外MPEG-4可以方便地動態調整幀率、比特率,以降低存儲量。
MPEG-4由於系統設計過於復雜,使得MPEG-4難以完全實現並且兼容,很難在視頻會議、可視電話等領域實現,這一點有點偏離原來地初衷。另外對於中國企業來說還要面臨高昂的專利費問題,目前規定:
- 每台解碼設備需要交給MPEG-LA 0.25美元
- 編碼/解碼設備還需要按時間交費(4美分/天=1.2美元/月 =14.4美元/年)
H.264/AVC
H.264集中了以往標準的優點,在許多領域都得到突破性進展,使得它獲得比以往標准好得多整體性能:
- 和H.263+和MPEG-4 SP相比最多可節省50%的碼率,使存儲容量大大降低;
- H.264在不同解析度、不同碼率下都能提供較高的視頻質量;
- 採用「網路友善」的結構和語法,使其更有利於網路傳輸。
H.264採用簡潔設計,使它比MPEG4更容易推廣,更容易在視頻會議、視頻電話中實現,更容易實現互連互通,可以簡便地和G.729等低比特率語音壓縮組成一個完整的系統。
MPEG LA吸收MPEG-4的高昂專利費而使它難以推廣的教訓,MPEG LA制定了以下低廉的H.264收費標准:H.264廣播時基本不收費;產品中嵌入H.264編/解碼器時,年產量10萬台以下不收取費,超過10萬台每台收取0.2美元,超過500萬台每台收取0.1美元。低廉的專利費使得中國H.264監控產品更容易走向世界。
監控中視頻編碼解析度的選擇
目前監控行業中主要使用以下解析度:SQCIF、QCIF、CIF、4CIF。
SQCIF和QCIF的優點是存儲量低,可以在窄帶中使用,使用這種解析度的產品價格低廉;缺點是圖像質量往往很差、不被用戶所接受。
CIF是目前監控行業的主流解析度,它的優點是存儲量較低,能在普通寬頻網路中傳輸,價格也相對低廉,它的圖像質量較好,被大部分用戶所接受。缺點是圖像質量不能滿足高清晰的要求。
4CIF是標清解析度,它的優點是圖像清晰。缺點是存儲量高,網路傳輸帶寬要求很高,價格也較高。
解析度新的選擇-528x384
2CIF(704x288)已被部分產品採用,用來解決CIF清晰度不夠高和4CIF存儲量高、價格高昂的缺點。但由於704x288隻是水平解析度的提升,圖像質量提高不是特別明顯。
經過測試,我們發現另外一種2CIF解析度528x384,比704x288能更好解決CIF、4CIF的問題。特別是在512Kbps-1Mbps碼率之間,能獲得穩定的高質量圖像,滿足用戶較高圖像質量的要求。目前這一解析度已被許多網路多媒體廣播所採用,被廣大用戶所接受。比如杭州網通網上影院是採用512x384解析度,在768k下能穩定地獲得近似DVD的圖像質量。
監控中實現視頻編碼的最佳方式
目前視頻編碼正處於一個技術日新月異的時期,視頻編碼的壓縮性能在不斷得到提升。
在監控中主要使用ASCI和DSP兩種方案。由於ASIC晶元的設計、生產周期過長,使它已跟不上視頻編碼的發展速度。而DSP晶元,由於它的通用設計,使它能實現各種視頻編碼演算法,並且可以及時更新視頻編碼器,緊跟視頻編碼的發展速度。另外使用DSP晶元可以比ASIC更靈活的配置編碼器,使編碼器達到最佳性能。
海康威視產品目前達到的技術水準
海康威視產品採用最先進的H.264視頻壓縮演算法和高性能的DSP處理器。
強大的H.264視頻壓縮引擎使產品獲得極高的壓縮比、高質量的圖像質量和良好的網路傳輸性能。高性能的DSP處理器能靈活的配置視頻編/解碼器:動態設置解析度、幀率、碼率、圖像質量等;可以雙碼流輸出,達到本地存儲和網路傳輸分別處理的功能。
使用TM130X DSP的產品,單個晶元能實時壓縮一路以下解析度的視頻:SQCIF、QCIF、CIF、2CIF(PAL:704x288或528x384)。
使用DM642 DSP的產品,單個晶元能實時壓縮4路以下解析度的視頻:SQCIF、QCIF、CIF、2CIF(PAL:704x288或528x384)。單個晶元能實時壓縮2路4CIF視頻。
電視節目製作數字網路化已成為大家關心的熱點,其中重要的技術之一是數字視頻壓縮。運動圖像專家組(MPEG)是ISO/IEC的一個工作組,負責開發運動圖像、聲頻及其混合信息的壓縮、解壓縮、處理和編碼表示方面的國際標准。MPEG已經制定了MPEG-1、MPEG-2和MPEG-4標准。MPEG-1和MPEG-2已廣泛應用在多媒體工業,例如數字電視、CD、視頻點播、歸檔、網際網路上的音樂等等。MPEG-4主要用於64 kb/s以下的低速率音視頻編碼,以使用於窄帶多媒體通信等領域。MPEG目前正在制定MPEG-7和MPEG-21。但M-JPEG、MPEG-2和DV三大壓縮技術已佔據著當今視頻壓縮技術的主要地位,呈現互不替代,激烈競爭,共同發展的狀態。
M-JPEG和DV均採用幀內壓縮方式,壓縮效率要比MPEG-2低。在低碼率的時候,MPEG-2可以提供比M-JPEG高的壓縮比而保持較好的圖像質量;在要求高圖像質量的時候(比如節目編輯和後期製作),MPEG-2與M-JPEG、DV的輸出碼率差別要小得多。電視台業務的多樣性要求壓縮標准能提供多種碼率。可變碼率(VBR)特性對電視台有效利用資源非常重要。MPEG-2可以通過改變GOP結構和DCT及霍夫曼編碼的參數來調整輸出碼率;M-JPEG可以通過改變DCT及霍夫曼編碼參數調節壓縮比;DV格式因其應用特點,沒有提供VBR。M-JPEG發展較早,在非線性視頻編輯方面應用多年,軟、硬體技術成熟,成本低廉,以目前硬體平台而言,平均比MPEG-2平台便宜5000美元左右。目前,M-JPEG、DV和MPEG-2三個標准各有長處,設備都獲得了廣泛使用。日本和北美大多用DV格式進行後期製作;EBU在1999年的D84、D85技術聲明中推薦電視台在演播室使用50 Mb/s的純I幀4:2:2P MPEG-2;而中國在廣泛使用M-JPEG的同時熱烈討論MPEG-2 IBP格式的編輯。
下面針對現今在電視台數字化網路中主要應用的兩種視頻壓縮技術,即M-JPEG和MPEG-2做一下對比。最後對MPEG-7作簡單概述。
M-JPEG是針對活動圖像而優化的JPEG壓縮而稱。而JPEG是針對一幀圖像DCT變換來對圖像數據進行壓縮,通過對電視數字信號(4:2:2數據)的每一幀進行JPEG壓縮。由於電視編輯、特技製作均需要以幀為基本單位,所以對以幀為單元進行壓縮(幀內壓縮)的M-JPEG格式被成功地用於數字視頻系統,特別是數字非線性節目編輯系統。目前我國非線性編輯系統大都採用4:1 M-JPEG壓縮,被認為是可以接受的廣播級水平。當PAL制4:2:2數字信號採用4:1壓縮時,其數據率是5 MB/s(40M b/s), 每小時視頻節目佔用18 GB存儲空間。由於M-JPEG是幀內壓縮方式,可以提供精確到幀的隨機存取訪問,不附帶任何的訪問延遲,能夠實現精確到幀的節目編輯。 所謂MPEG-2壓縮是根據運動圖像相鄰幀之間有一定的相似性原則,通過運動預測,參考前一幀圖像與這一幀圖像的相似情況,去掉與前一幀相似的冗餘數據,而只記錄這一幀與上一幀不同的數據,從而大大提高了視頻數據的壓縮效率,這種壓縮方法也稱為幀相關壓縮。因為採用運動預測幀相關的壓縮方式,針對視頻壓縮有很好的效果,在獲得廣播級數字視頻質量的前提下,可以實現20:1的壓縮效率,數據率可降至1 MB/s(8M b/s),一小時視頻節目佔用3.6 GB空間。數據存儲空間利用率高,網路傳輸效率是M-JPEG系統的5倍以上。這給基於MPEG-2壓縮視頻的存儲、傳輸、編輯、播出帶來極大的好處,在存儲方面可以大大節約存儲體成本,並能引入各種類型的存儲介質,如硬碟、光碟、數據磁帶以及存儲器晶元等。
但由於MPEG-2格式只有一個完整的幀,即I幀,所以在電視需要幀精確地進行剪接時會帶來一定的困難,需要硬體板卡或軟體系統的支持。MPEG-2在壓縮方面有幀內壓縮和幀間壓縮兩種方式,使用三種類型的圖像,即I幀、P幀和B幀。I幀使用幀內壓縮,不使用運動補償,提供中等壓縮比。由於I幀不依賴其它幀,所以是隨機存取的入點,同時是解碼的基準幀。P幀根據前面的I幀或P幀進行預測,使用運動補償演算法進行壓縮,壓縮比要比I幀高。P幀是對B幀和後繼P幀進行解碼的基準幀。它本身有誤差,會造成誤差傳播。B幀是基於內插重建的幀,它基於前後兩個IP幀或PP幀,不傳播誤差。它使用雙向預測進行壓縮,提供更高的壓縮比。目前各硬體板卡廠商正在抓緊開發,以解決基於MPEG-2的IBP幀編輯,目前國內很多公司如奧維迅、索貝、大洋已經用軟體解決了IBP幀精確編輯的問題,使MPEG-2格式應用到電視節目的製作、傳輸、存儲、播出,構架全電視台的數字化網路系統成為可能。
1996年10月,運動圖像專家組開始著手一項新的研究課題來解決多媒體內容描述的問題,即多媒體內容描述介面(簡稱MPEG-7)。MPEG-7將擴大現今在識別內容方面存在的能力限制,將包括更多的數據類型。MPEG-7的目標是支持多種音頻和視覺的描述,包括自由文本、N維時空結構、統計信息、客觀屬性、主觀屬性、生產屬性和組合信息。對於視覺信息,描述將包括顏色、視覺對象、紋理、草圖、形狀、體積、空間關系、運動及變形等。
MPEG-7的目標是根據信息的抽象層次,提供一種描述多媒體材料的方法以便表示不同層次上的用戶對信息的需求。以視覺內容為例,較低抽象層將包括形狀、尺寸、紋理、顏色、運動(軌道)和位置的描述。對於音頻的較低抽象層包括音調、調式、音速、音速變化、音響空間位置。MPEG-7的目標是支持數據管理的靈活性、數據資源的全球化和互操作性。
對於未來的多媒體服務,必須將內容的表示和描述共同來考慮,也就是說,許多涉及內容表示的服務必須要首先處理內容描述。利用MPEG-7 描述可用的音視信息,大家就能快速找到我們想要的信息,可以更加自由的與多媒體內容交互及重新使用音視信息的內容,或以新的方式將這些內容的某些成分結合起來使用。
編解碼技術在過去十年中不斷改進。最新的編解碼技術(H.264/AVC與VC-1)代表著第三代視頻壓縮技術。為具體應用選擇正確的編解碼器並優化其實時實施仍然是一項巨大的挑戰,最佳的設計必須權衡壓縮效率及可用的計算能力。 ……
視頻壓縮是所有令人振奮的、新型視頻產品的重要動力。為具體應用選擇正確的編解碼器並優化其實時處理仍然是一項巨大的挑戰。最佳的設計必須權衡壓縮效率及可用的計算能力。此外,如何在計算能力有限的情況下獲得最佳壓縮效率也是一門大學問。
數字視頻的主要挑戰在於原始或未壓縮的視頻需要存儲或傳輸大量數據。例如,標准清晰度的 NTSC 視頻的數字化一般是每秒 30 幀速率,採用 4:2:2 YCrCb 及 720×480,其要求超過 165Mbps 的數據速率。保存 90 分鍾的視頻需要 110GB 空間,或者說超過標准 DVD-R 存儲容量的 25 倍。即使是視頻流應用中常用的低解析度視頻(如CIF:352×288 4:2:0、30 幀/秒)也需要超過 36.5Mbps 的數據速率,這是 ADSL 或 3G 無線等寬頻網路速度的許多倍。目前的寬頻網可提供 1~10Mbps 的持續傳輸能力,顯然數字視頻的存儲或傳輸需要採用壓縮技術。
視頻壓縮的目的是對數字視頻進行編碼——在保持視頻質量的同時佔用盡可能少的空間。編解碼技術理論依據為信息理論的數學原理。不過,開發實用的編解碼技術需要藝術性的精心考慮。
壓縮權衡
在選擇數字視頻系統的編解碼技術時需要考慮諸多因素。主要因素包括應用的視頻質量要求、傳輸通道或存儲介質所處的環境(速度、時延、錯誤特徵)以及源內容的格式。同樣重要的還有預期解析度、目標比特率、色彩深度、每秒幀數以及內容和顯示是逐行掃描還是隔行掃描。壓縮通常需要在應用的視頻質量要求與其他需求之間做出取捨。首先,用途是存儲還是單播、多播、雙向通信或廣播?對於存儲應用,到底有多少可用的存儲容量以及存儲時間需要多久?對於存儲之外的應用,最高比特率是多少?對於雙向視頻通信,時延容差或容許的端到端系統延遲是多少?如果不是雙向通信,內容需要在離線狀態提前完成編碼還是需要實時編碼?網路或存儲介質的容錯能力如何?根據基本目標應用,不同壓縮標准以不同方式處理這些問題的權衡。
另一方面是需要權衡編解碼實時處理的成本。如 H.264/AVC 或 WMV9/VC-1等能夠實現較高壓縮比的新演算法需要更高的處理能力,這會影響編解碼器件的成本、系統功耗以及系統內存。
……
標准對編解碼技術的普及至關重要。出於規模經濟原因,用戶根據可承受的標准尋找相應產品。由於能夠保障廠商之間的互操作性,業界樂意在標准方面進行投資。而由於自己的內容可以獲得較長的生命周期及廣泛的需求,內容提供商也對標准青睞有加。盡管幾乎所有視頻標准都是針對少數特定應用的,但是在能夠適用的情況下,它們在其他應用中也能發揮優勢。
為了實現更好的壓縮及獲得新的市場機遇,ITU與 MPEG 一直在不斷發展壓縮技術和開發新標准。中國最近開發了一種稱為 AVS 的國家視頻編碼標准,我們在後面也會做一介紹。目前正在開發的標准包括 ITU/MPEG 聯合可擴展視頻編碼 (Joint Scalable Video Coding)(對 H264/ AVC 的修訂)和MPEG 多視角視頻編碼 (Multi-view Video Coding)。另外,為了滿足新的應用需求,現有標准也在不斷發展。例如,H.264 最近定義了一種稱為高精度拓展 (Fidelity Range Extensions) 的新模式,以滿足新的市場需求,如專業數字編輯、HD-DVD 與無損編碼等。
…………視頻壓縮正在市場中催生數量日益增長的數字視頻產品。採用數字視頻壓縮技術的終端設備范圍廣泛,從電池驅動的便攜設備到高性能基礎設備。
數字視頻的最佳處理器解決方案取決於具體的目標應用。TI 擁有可支持多種標准並滿足主要設計及系統約束需求的各種 DSP。TI的解決方案范圍廣泛,其中包括低功耗 C5000 DSP與移動OMAP 應用處理器、高性能C6000 DSP 與視頻優化的高性能 DM64x 和 DM644x 數字媒體處理器。
德州儀器 (TI) 的DM 列處理器專門針對高端視頻系統的需求而設計。該系列的最新處理器是功能強大的 DM6446[15],其採用了TI的達芬奇 (DaVinci)技術[16]。DM6446的雙內核架構兼具DSP和RISC技術優勢,集成了時鍾頻率達594MHz 的c64x+ DSP內核與ARM926EJ-S內核。新一代c64x+ DSP 是 TMS320C6000(tm) DSP 平台中性能最高的定 DSP,並建立在TI開發的第二代高性能高級VLIW架構的增強版之上。c64x+與前代C6000 DSP平台代碼兼容。DM644x等可編程數字媒體處理器可以支持所有的現有業界標准以及採用單個可編程數字媒體處理器的專有視頻格式。DM6446 還具有片上內存,包括一個2級高速緩存和眾多具有視頻專用功能的外設。DM6446 還包含一種視頻/影像協處理器 (VICP),用於減輕相關演算法(如:JPEG、H.264、MPEG4 與 VC-1)的 DSP 內核繁重的視頻與影像處理負擔,從而使更多的 DSP MIPS能夠用於視頻後處理或者其他並行運行等功能。
壓縮標准規定需要的語法與可用的工具,不過許多演算法結果取決於具體實施情況。主要變數包括:比特率控制演算法、單通道與多通道編碼、I/B/P 幀比率、運動搜索范圍、運動搜索演算法、以及選用的個別工具與模式。這種靈活性允許我們在計算負載和改進質量之間做出不同取捨。顯然所有編碼器都可以採用或高或低的頻率實現不同的視頻質量水平。
越來越多的視頻壓縮標准可以針對具體最終應用提供越來越高的壓縮效率和越來越豐富的工具。另外,向網路化連接發展的趨勢意味著許多產品越來越需要支持多種標准。多種標准和專有演算法的流行也使我們難以選擇單個標准,尤其是在硬體決策經常超前於產品部署的情況下。不僅如此,每個視頻編碼演算法都提供豐富的工具與功能選擇,以平衡壓縮效率的復雜性。工具和功能的選擇是與特定應用和用例息息相關的重復過程。由於必須支持的編解碼器數量的增多以及針對具體解決方案和應用而對編解碼器進行優化的選擇范圍更為廣泛,因此在數字視頻系統中採用靈活的媒體處理器是大勢所趨。DM6446等數字媒體處理器可充分滿足性能處理需求同時架構靈活,從而能夠快速把新標准實施推向市場,其中包括:H.264、AVS 與 WMV9。我們可以在標準定義階段實施演算法並且保持軟體演算法與工具的更新,從而緊隨標准大大小小的修改並且滿足應用不斷變化的質量需求。
編輯詞條
http://tech.sina.com.cn/other/2004-10-15/1438441503.shtml
2. 用迅雷或者kmplayer軟體做源碼輸出會發生音畫不同步,畫面延遲。怎麼解
一、我來回答這個問題,不過我沒用KMplayer,用的是potplayer。設置原理應該一樣的。出現的問題如下:
電腦連接功放,功放連接電視,音頻直通給功放解碼,播放TrueHD音頻源碼直通,畫面比聲音滯後。
解決辦法:potplayer播放器-選項-聲音-音頻解碼器設置--直通勾選後-將TrueHD下:passthrough合成器從默認改為備用。
二、附上播放4K等耗費CPU音畫不同步或者卡頓的方法:
1、選項-播放-優先運行權: 默認是"高配置", 可以選擇"實時性"嘗試一下 這個我暫未嘗試
2、選項-濾鏡-視頻解碼器-內置解碼器/DXVA設置:
勾選: 圖像滯後時允許漏幀保證同步
勾選: 使用硬體加速
3. 詳細說下OSI及TCP/IP是什麼及其原理…
TCP/IP(Transmission Control Protocol/Internet Protocol)的簡寫,中文譯名為傳輸控制協議/互聯網路協議)協議是Internet最基本的協議,簡單地說,就是由網路層的IP協議和傳輸層的TCP協議組成的。 沒有什麼原理就是一種通信協議
OSI是Open System Interconnection 的縮寫,意為開放式系統互聯參考模型。在OSI出現之前,計算機網路中存在眾多的體系結構,其中以IBM公司的SNA(系統網路體系結構)和DEC公司的DNA(Digital Network Architecture)數字網路體系結構最為著名。為了解決不同體系結構的網路的互聯問題,國際標准化組織ISO(注意不要與OSI搞混)於1981年制定了開放系統互連參考模型(Open System Interconnection Reference Model,OSI/RM)。這個模型把網路通信的工作分為7層,它們由低到高分別是物理層(Physical Layer),數據鏈路層(Data Link Layer),網路層(Network Layer),傳輸層(Transport Layer),會話層(Session Layer),表示層(Presentation Layer)和應用層(Application Layer)。第一層到第三層屬於OSI參考模型的低三層,負責創建網路通信連接的鏈路;第四層到第七層為OSI參考模型的高四層,具體負責端到端的數據通信。每層完成一定的功能,每層都直接為其上層提供服務,並且所有層次都互相支持,而網路通信則可以自上而下(在發送端)或者自下而上(在接收端)雙向進行。當然並不是每一通信都需要經過OSI的全部七層,有的甚至只需要雙方對應的某一層即可。物理介面之間的轉接,以及中繼器與中繼器之間的連接就只需在物理層中進行即可;而路由器與路由器之間的連接則只需經過網路層以下的三層即可。總的來說,雙方的通信是在對等層次上進行的,不能在不對稱層次上進行通信。
OSI 標准制定過程中採用的方法是將整個龐大而復雜的問題劃分為若干個容易處理的小問題,這就是分層的體系結構辦法。在OSI中,採用了三級抽象,既體系結構,服務定義,協議規格說明。
OSI劃分層次的原則
網路中各結點都有相同的層次
不同結點相同層次具有相同的功能
同一結點相鄰層間通過介面通信
每一層可以使用下層提供的服務,並向上層提供服務
不同結點的同等層間通過協議來實現對等層間的通信
OSI/RM分層結構
1.對等層實體間通信時信息的流動過程
對等層通信的實質:
對等層實體之間虛擬通信;下層向上層提供服務;實際通信在最底層完成在發送方數據由最高層逐漸向下層傳遞,到接收方數據由最低層逐漸向高層傳遞.
協議數據單元PDU
SI參考模型中,對等層協議之間交換的信息單元統稱為協議數據單元(PDU,Protocol Data Unit)。
而傳輸層及以下各層的PDU另外還有各自特定的名稱:
傳輸層——數據段(Segment)
網路層——分組(數據報)(Packet)
數據鏈路層——數據幀(Frame)
物理層——比特(Bit)
OSI的七層結構
第一層:物理層(PhysicalLayer),規定通信設備的機械的、電氣的、功能的和規程的特性,用以建立、維護和拆除物理鏈路連接。具體地講,機械特性規定了網路連接時所需接插件的規格尺寸、引腳數量和排列情況等;電氣特性規定了在物理連接上傳輸bit流時線路上信號電平的大小、阻抗匹配、傳輸速率距離限制等;功能特性是指對各個信號先分配確切的信號含義,即定義了DTE和DCE之間各個線路的功能;規程特性定義了利用信號線進行bit流傳輸的一組操作規程,是指在物理連接的建立、維護、交換信息時,DTE和DCE雙方在各電路上的動作系列。
在這一層,數據的單位稱為比特(bit)。
屬於物理層定義的典型規范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。
物理層的主要功能:
為數據端設備提供傳送數據的通路,數據通路可以是一個物理媒體,也可以是多個物理媒體連接而成.一次完整的數據傳輸,包括激活物理連接,傳送數據,終止物理連接.所謂激活,就是不管有多少物理媒體參與,都要在通信的兩個數據終端設備間連接起來,形成一條通路.
傳輸數據.物理層要形成適合數據傳輸需要的實體,為數據傳送服務.一是要保證數據能在其上正確通過,二是要提供足夠的帶寬(帶寬是指每秒鍾內能通過的比特(BIT)數),以減少信道上的擁塞.傳輸數據的方式能滿足點到點,一點到多點,串列或並行,半雙工或全雙工,同步或非同步傳輸的需要.
完成物理層的一些管理工作.
第二層:數據鏈路層(DataLinkLayer):在物理層提供比特流服務的基礎上,建立相鄰結點之間的數據鏈路,通過差錯控制提供數據幀(Frame)在信道上無差錯的傳輸,並進行各電路上的動作系列。
數據鏈路層在不可靠的物理介質上提供可靠的傳輸。該層的作用包括:物理地址定址、數據的成幀、流量控制、數據的檢錯、重發等。
在這一層,數據的單位稱為幀(frame)。
數據鏈路層協議的代表包括:SDLC、HDLC、PPP、STP、幀中繼等。
鏈路層的主要功能:
鏈路層是為網路層提供數據傳送服務的,這種服務要依靠本層具備的功能來實現。鏈路層應具備如下功能:
鏈路連接的建立,拆除,分離。
幀定界和幀同步。鏈路層的數據傳輸單元是幀,協議不同,幀的長短和界面也有差別,但無論如何必須對幀進行定界。
順序控制,指對幀的收發順序的控制。
差錯檢測和恢復。還有鏈路標識,流量控制等等.差錯檢測多用方陣碼校驗和循環碼校驗來檢測信道上數據的誤碼,而幀丟失等用序號檢測.各種錯誤的恢復則常靠反饋重發技術來完成。
第三層是網路層(Network layer)
在計算機網路中進行通信的兩個計算機之間可能會經過很多個數據鏈路,也可能還要經過很多通信子網。網路層的任務就是選擇合適的網間路由和交換結點, 確保數據及時傳送。網路層將數據鏈路層提供的幀組成數據包,包中封裝有網路層包頭,其中含有邏輯地址信息- -源站點和目的站點地址的網路地址。
如果你在談論一個IP地址,那麼你是在處理第3層的問題,這是「數據包」問題,而不是第2層的「幀」。IP是第3層問題的一部分,此外還有一些路由協議和地址解析協議(ARP)。有關路由的一切事情都在第3層處理。地址解析和路由是3層的重要目的。網路層還可以實現擁塞控制、網際互連等功能。
在這一層,數據的單位稱為數據包(packet)。
網路層協議的代表包括:IP、IPX、RIP、OSPF等。
網路層主要功能:
網路層為建立網路連接和為上層提供服務,應具備以下主要功能:
路由選擇和中繼
激活,終止網路連接
在一條數據鏈路上復用多條網路連接,多採取分時復用技術
差錯檢測與恢復
排序,流量控制
服務選擇
網路管理
網路層標准簡介
第四層是處理信息的傳輸層(Transport layer)。第4層的數據單元也稱作數據包(packets)。但是,當你談論TCP等具體的協議時又有特殊的叫法,TCP的數據單元稱為段(segments)而UDP協議的數據單元稱為「數據報(datagrams)」。這個層負責獲取全部信息,因此,它必須跟蹤數據單元碎片、亂序到達的數據包和其它在傳輸過程中可能發生的危險。第4層為上層提供端到端(最終用戶到最終用戶)的透明的、可靠的數據傳輸服務。所謂透明的傳輸是指在通信過程中傳輸層對上層屏蔽了通信傳輸系統的具體細節。
傳輸層協議的代表包括:TCP、UDP、SPX等。
傳輸層是兩台計算機經過網路進行數據通信時,第一個端到端的層次,具有緩沖作用。當網路層服務質量不能滿足要求時,它將服務加以提高,以滿足高層的要求;當網路層服務質量較好時,它只用很少的工作。傳輸層還可進行復用,即在一個網路連接上創建多個邏輯連接。 傳輸層也稱為運輸層.傳輸層只存在於端開放系統中,是介於低3層通信子網系統和高3層之間的一層,但是很重要的一層.因為它是源端到目的端對數據傳送進行控制從低到高的最後一層.
有一個既存事實,即世界上各種通信子網在性能上存在著很大差異.例如電話交換網,分組交換網,公用數據交換網,區域網等通信子網都可互連,但它們提供的吞吐量,傳輸速率,數據延遲通信費用各不相同.對於會話層來說,卻要求有一性能恆定的界面.傳輸層就承擔了這一功能.它採用分流/合流,復用/介復用技術來調節上述通信子網的差異,使會話層感受不到.
此外傳輸層還要具備差錯恢復,流量控制等功能,以此對會話層屏蔽通信子網在這些方面的細節與差異.傳輸層面對的數據對象已不是網路地址和主機地址,而是和會話層的界面埠.上述功能的最終目的是為會話提供可靠的,無誤的數據傳輸.傳輸層的服務一般要經歷傳輸連接建立階段,數據傳送階段,傳輸連接釋放階段3個階段才算完成一個完整的服務過程.而在數據傳送階段又分為一般數據傳送和加速數據傳送兩種。傳輸層服務分成5種類型.基本可以滿足對傳送質量,傳送速度,傳送費用的各種不同需要.傳輸層的協議標准有以下幾種:
第五層是會話層(Session layer)
這一層也可以稱為會晤層或對話層,在會話層及以上的高層次中,數據傳送的單位不再另外命名,統稱為報文。會話層不參與具體的傳輸,它提供包括訪問驗證和會話管理在內的建立和維護應用之間通信的機制。如伺服器驗證用戶登錄便是由會話層完成的。
會話層提供的服務可使應用建立和維持會話,並能使會話獲得同步。會話層使用校驗點可使通信會話在通信失效時從校驗點繼續恢復通信。這種能力對於傳送大的文件極為重要。會話層,表示層,應用層構成開放系統的高3層,面對應用進程提供分布處理,對話管理,信息表示,恢復最後的差錯等. 會話層同樣要擔負應用進程服務要求,而運輸層不能完成的那部分工作,給運輸層功能差距以彌補.主要的功能是對話管理,數據流同步和重新同步。要完成這些功能,需要由大量的服務單元功能組合,已經制定的功能單元已有幾十種.現將會話層主要功能介紹如下.
為會話實體間建立連接。為給兩個對等會話服務用戶建立一個會話連接,應該做如下幾項工作:
將會話地址映射為運輸地址
選擇需要的運輸服務質量參數(QOS)
對會話參數進行協商
識別各個會話連接
傳送有限的透明用戶數據
數據傳輸階段
這個階段是在兩個會話用戶之間實現有組織的,同步的數據傳輸.用戶數據單元為SSDU,而協議數據單元為SPDU.會話用戶之間的數據傳送過程是將SSDU轉變成SPDU進行的.
連接釋放
連接釋放是通過"有序釋放","廢棄","有限量透明用戶數據傳送"等功能單元來釋放會話連接的.會話層標准為了使會話連接建立階段能進行功能協商,也為了便於其它國際標准參考和引用,定義了12種功能單元.各個系統可根據自身情況和需要,以核心功能服務單元為基礎,選配其他功能單元組成合理的會話服務子集.會話層的主要標准有"DIS8236:會話服務定義"和"DIS8237:會話協議規范".
第六層是表示層(Presentation layer)
這一層主要解決用戶信息的語法表示問題。它將欲交換的數據從適合於某一用戶的抽象語法,轉換為適合於OSI系統內部使用的傳送語法。即提供格式化的表示和轉換數據服務。數據的壓縮和解壓縮, 加密和解密等工作都由表示層負責。例如圖像格式的顯示,就是由位於表示層的協議來支持。
第七層應用層(Application layer),應用層為操作系統或網路應用程序提供訪問網路服務的介面。
應用層協議的代表包括:Telnet、FTP、HTTP、SNMP等。
通過 OSI 層,信息可以從一台計算機的軟體應用程序傳輸到另一台的應用程序上。例如,計算機 A 上的應用程序要將信息發送到計算機 B 的應用程序,則計算機 A 中的應用程序需要將信息先發送到其應用層(第七層),然後此層將信息發送到表示層(第六層),表示層將數據轉送到會話層(第五層),如此繼續,直至物理層(第一層)。在物理層,數據被放置在物理網路媒介中並被發送至計算機 B 。計算機 B 的物理層接收來自物理媒介的數據,然後將信息向上發送至數據鏈路層(第二層),數據鏈路層再轉送給網路層,依次繼續直到信息到達計算機 B 的應用層。最後,計算機 B 的應用層再將信息傳送給應用程序接收端,從而完成通信過程。下面圖示說明了這一過程。
OSI 的七層運用各種各樣的控制信息來和其他計算機系統的對應層進行通信。這些控制信息包含特殊的請求和說明,它們在對應的 OSI 層間進行交換。每一層數據的頭和尾是兩個攜帶控制信息的基本形式。
對於從上一層傳送下來的數據,附加在前面的控制信息稱為頭,附加在後面的控制信息稱為尾。然而,在對來自上一層數據增加協議頭和協議尾,對一個 OSI 層來說並不是必需的。
當數據在各層間傳送時,每一層都可以在數據上增加頭和尾,而這些數據已經包含了上一層增加的頭和尾。協議頭包含了有關層與層間的通信信息。頭、尾以及數據是相關聯的概念,它們取決於分析信息單元的協議層。例如,傳輸層頭包含了只有傳輸層可以看到的信息,傳輸層下面的其他層只將此頭作為數據的一部分傳遞。對於網路層,一個信息單元由第三層的頭和數據組成。對於數據鏈路層,經網路層向下傳遞的所有信息即第三層頭和數據都被看作是數據。換句話說,在給定的某一 OSI 層,信息單元的數據部分包含來自於所有上層的頭和尾以及數據,這稱之為封裝。
例如,如果計算機 A 要將應用程序中的某數據發送至計算機 B ,數據首先傳送至應用層。 計算機 A 的應用層通過在數據上添加協議頭來和計算機 B 的應用層通信。所形成的信息單元包含協議頭、數據、可能還有協議尾,被發送至表示層,表示層再添加為計算機 B 的表示層所理解的控制信息的協議頭。信息單元的大小隨著每一層協議頭和協議尾的添加而增加,這些協議頭和協議尾包含了計算機 B 的對應層要使用的控制信息。在物理層,整個信息單元通過網路介質傳輸。
計算機 B 中的物理層收到信息單元並將其傳送至數據鏈路層;然後 B 中的數據鏈路層讀取計算機 A 的數據鏈路層添加的協議頭中的控制信息;然後去除協議頭和協議尾,剩餘部分被傳送至網路層。每一層執行相同的動作:從對應層讀取協議頭和協議尾,並去除,再將剩餘信息發送至上一層。應用層執行完這些動作後,數據就被傳送至計算機 B 中的應用程序,這些數據和計算機 A 的應用程序所發送的完全相同 。
一個 OSI 層與另一層之間的通信是利用第二層提供的服務完成的。相鄰層提供的服務幫助一 OSI 層與另一計算機系統的對應層進行通信。一個 OSI 模型的特定層通常是與另外三個 OSI 層聯系:與之直接相鄰的上一層和下一層,還有目標聯網計算機系統的對應層。例如,計算機 A 的數據鏈路層應與其網路層,物理層以及計算機 B 的數據鏈路層進行通信。
OSI模型與TCP/IP模型的比較
TCP/IP模型實際上是OSI模型的一個濃縮版本,它只有四個層次:
1.應用層
2.運輸層
3.網際層
4.網路介面層
與OSI功能相比:
應用層對應著OSI的 應用層 表示層 會話層
運輸層對應著OSI的傳輸層
網際層對應著OSI的網路層
網路介面層對應著OSI的數據鏈路層和物理層[編輯本段]2 .
Open Source Initiative(簡稱OSI,有譯作開放源代碼促進會、開放原始碼組織)是一個旨在推動開源軟體發展的非盈利組織。
4. 在Flash中,點擊Flash按鈕轉到第幾幀時,代碼怎麼寫
幾種Action命令
1.影片的播放與停止:
Play( );//播放命令 stop( );//停止命令
2.改變Frame流向命令
gotoAndPlay(frame) //跳到指定的畫面並連續播放。
gotoAndStop(frame) //跳到指定的畫面並停止播放。
gotAndplay(「場景名稱」,frame)//跳到指定場景幀並連續播放。
gotoAndStop(「場景名稱:,frlme)//跳到指定場景幀並停止播放。
nextFrame( );//跳到下一幀播放;
PrevPrame( );//跳到上一幀播放。
3.控制影片剪輯的播放與停止:tellTarget命令
如:tellTarget(「C1」)
{gotoAndStop(2);}//跳影片剪輯實例C1的第2幀並停止。
二、幾種功能元件的製作方法
1.計時器的製作
單擊菜單Insert/new symbol,在彈出的對話框中輸入插入的符號名稱(如:計時器),確
定後選擇文字工具,屬性為動態(Dynamic text),在第一幀中畫兩個文本框。分別設置變
量名為munite和timer,在兩個文本框之間畫一個形如冒號的圓點(這兩個圓點可以做成一個
符號,類型為電影片段,每秒閃動一次.然後拖入到兩文本框之間。在第二幀插入幀。在
第一幀輸入動作腳本(Action)如下:
//設置時間的初值
if(!started) {
start_time=getTimer();
started=true;
timer=0;
i=o;
munite=0;
}
x=getTimer()-start_time;//計算時間的變化
x=int(x/1000); //時間的單位為1000分之一秒
y=x-60*i
if (y>59)
{i=i+1;munite=munite+1
timer=timer+1:
}
else
{timer=y}
該符號製作完畢後。將其拖入主場景中即可。
2.智能判斷速擇題,並作正誤提示
單擊菜單Insert/new symbo1,在彈出的對話框中輸入插入的符名稱。如:「對錯提示」。
符號類型為「電影片段」。在第一幀輸入文本「在括弧內輸入答案,按enrer鍵確定「 在
該幀上輸入動作腳本:
_root.flah=false;_root.ans=" ";gotoAndStop(1);在第16幀插入空關鍵幀。在該幀上
畫一個形如「x」的圖或輸入文本「x」,在第30幀插入關鍵幀,幀AAction為_root.ans="
":gotoAndStop(31);在第31幀插人空白關鍵幀,在該幀上輸人靜態文本「請重作,按e
nter鍵確定。「在該幀輸入腳本:「stop();」至此,該符號製作主或:例如:
第1題:1十1十( )
A.2 B.3 C.4 D.0
在上例括弧位置插入動態文本框,不輸入任何內容。該文本框變數名為:ans。在該幀適當
位置插入電影「對錯提示」,該電影片斷名屬性為「ql」,在該電影片斷上輸人腳本:
//鍵盤事件控製程序
onClipEvent(keyDown)
}
//取得按鍵的鍵值
keycode=Key.getCode();
//判斷是否為Enter鍵
if(keycode==Key.ENTER) {
//判斷輸入的答案是否正確
//answer=Number(A)
if(_root,ans=="A" or _root.ans=="a"{
//顯示「答對了」信息
tellTsrget(_root.q1) {
gotoAndPlay(2);
}
} else {
//顯示「答錯了」信息
tellTarget(_root.q1) {
gotoAndplay(16)
}
}
}
}
3.聲音的載入和控制
插入一段音樂:在Pile/Import to Library中,找到要插入的音樂(如戰馬奔騰),打開符
號庫,找到「戰馬奔騰」符號,單擊右鍵,在彈出的菜單中單擊Linkage…命令,再在彈出
的菜單中選中Export for ActionSc選項,在Indentify框內輸入標識符:如music。
在需要播放的幀插入如下腳本:
soun=new Sound();//創建聲音實例
sound.attachSound("music");//將音樂music鏈接到sound實例
sound.start(0,2);//播放音樂2遍
sound.setVolume(70):該音樂的音量為70%。
以上載入音樂通過幀載入,也可以通過按鈕載入。
停止音樂的方法:製作一個按鈕,在按鈕上輸人腳本:
on(release)
{
sound.stop();
}
4.如何用鍵盤控制幀的跳轉
有的教師喜歡用鍵盤進行操作,如何使這類操作方使自如呢?用Flash MX製作的方法如下:
製作一個符號(如「知識回顧」),符號類型為「電影片段」。在這個符號中將需要回顧的
知識點逐幀展示,每幀動作腳本為:stop()回到主場景,在需要的幀插入該符號,該幀腳
本為:stop();插入後.單擊該符號.輸人腳本:
onClipEvent(Key Down) {//鍵盤響應,按下任一鍵時響應該命令
nextFrame();
}
這樣即實現了按任一鍵便可跳轉到指定幀的效果。此例僅僅是一種基本方法,讀者朋友在
應用時可以有更多的擴展。
5.滑鼠指向顯示填空題答案
顯示一些問題的答案,可以將這一答案製成—個按鈕,在這一按鈕的Up幀可以為空白關鍵
幀,其它幀為答案內容。在問題的答案處插入該按鈕,在該幀輸入腳本:
on(release) {
gotoAndStop;//第i幀將答案固定顯示在屏幕上
flash場景之間相互跳轉的實現方法
在製作flash動畫的時候,可能會有有很的mc
有時會把它放到幾個場景中,那麼在場景中的跳轉如何實現呢?
1.方法一:(使用telltarget命令)
按鈕上的as為:
on (release) {
tellTarget ("/") {
gotoAndPlay ("場景 1", 1);
}
}
2.方法二(用gotoandplay命令)
主場景2中的mc放到場景2的時間軸上
按鈕的as:
on release {
gotoAndPlay(」場景1」,1)
}
並且在最後一幀加stop()
問題就可以解決了:
3.方法三(利用路徑_root.gotoandplay())
第二個場景2裡面只有一個mc,在這個mc的最後一幀是stop和一個replay按
鈕
按鈕的as:_root.gotoAndPlay(1)
【即告知按鈕回到場景1的第一幀】
4.方法四(給場景起不同的名字)
如果你的as這樣寫:
第二個sence裡面只有一個mc,在這個mc的最後一幀是stop和一個repl
ay按鈕
按鈕的as:
on release {
gotoAndPlay(」sence1」,1)
}
結果按下後卻是從這個mc的第一幀開始播放,而不是從sence1的第一幀
這是因為主場景的名字默認為senceN
MC里也可以有多個場景,而mc也是默認為senceN
所以當你在MC用上gotoAndPlay ("scene1", 1);時,指的是所在場景中MC里的第一幀,而
不是主場景
解決的方法,就是給場景定義不同的名字
scene1我們改名為:主場景
scene2我們改名為:次場景1
正確的as應該為:
on (release) {
tellTarget (_root) {
gotoAndPlay (1);
}
}
如果想實現按鈕點擊後從次場景播放就可以在按鈕上寫上:
on (release) {
tellTarget (_root.次場景) {
gotoAndPlay (1);
}
}
5.方法五(利用標簽label)
我們在控制動畫的時候一般也不是從開始播放,可能是希望從某個場景的某一個關鍵幀開
始播放,那麼標簽是
最好的實現方法;
例如我們希望點擊上面的按鈕的時候讓動畫從主場景中的label1開始 播放,那麼按鈕上的
as應該為:
on (release) {
tellTarget (_root) {
gotoAndPlay ("label1");
}
例如有3個場景,我們希望點擊上面的按鈕的時候讓動畫從次場景1中的label4開始播放,
那麼按鈕上的as應該為:
on (release) {
tellTarget (_root) {
gotoAndPlay ("次場景 1", "label4");
}
}
}
}
如果想實現按鈕點擊後從次場景播放
就可以在按鈕上寫上:
on (release) {
tellTarget (_root.次場景) {
gotoAndPlay (1);
}
}
3,什麼叫矢量圖?
矢量圖可以任意縮放而不影響Flash的畫質,點陣圖圖像一般只作為靜態元素或背景圖,Fla
sh並不擅長處理點陣圖圖像的動作,應避免點陣圖圖像元素的動畫。
4,如何迅速地對齊不同Frame中的物件?
用 Inspector 「Ctrl+Alt+I」 直接輸入坐標。
或是工具欄〉〉窗口〉〉面板〉〉排列「Ctrl+K」 調出排列面板來。圖例
5,怎樣調節一個Symbol/MC地透明度?
選中Symbol/MC,菜單欄找到Modify(修改) 〉〉 Instance (實例)〉〉Color effect (效果
)〉〉 Alpha(透明度) 調整就可以了
6,做好地Flash放在html上面以後,它老是循環,怎麼能夠讓它不進行循環?
最後一個禎地Action設置成Stop(停止)
7,怎樣給我的FLASH做一個預載入地LOADING?
用Action語法地if frame is loaded來實現,新建一層,這層專門放Action,
第一幀,
ifFrameLoaded ("場景", frame) //假如場景中地禎數已經載入
goto and play() //跳至並播放某某禎(自己設定)
{}
第二幀,
goto and play("場景1", 1)//跳至並播放第一禎循環
再加上一個load地MC循環播放在這兩幀的中間,就OK了。
什麼?你要非常詳細地LOADING?那就當這個源碼吧,夠詳細了.
源碼下載
8,怎樣點擊一個按鈕打開一個頁面html而不是一個禎.
製作一個按鈕,上面地AS直接寫:
on (release)
getURL ("***.html");
{}
這里地***.html就是你要打開地頁面文件名,當然也可以是某某URL地址,比如說http://www.quanmingle.cn
9,我在按鈕地OVER禎放置了一個很大地MC,為什麼我要沒有點擊到按鈕滑鼠就變成了手地狀態?
按鈕真正激活區是在HIT(按下)禎地位置,如果想控制按鈕的位置為一定值,可以在HIT禎繪
制一個透明地圖形來判斷.
10,如果屏蔽滑鼠右鍵?FS命令都是什麼意思?
fscommand ("fullscreen", "true/false");(全屏設置,TRUE開,FALSE關)
fscommand ("showmenu", "true/false");(右鍵菜單設置,TRUE顯示,FALSE不顯示)
fscommand ("allowscale", "true/false");(縮放設置,TRUE自由縮放,FALSE調整畫面
不影響影片本身的尺寸)
fscommand ("trapallkeys", "true/false");(快捷鍵設置,TRUE快捷鍵開,FALSE快捷鍵
關)
fscommand ("exec");(EXE程序調用)
fscommand ("quit");(退出關閉窗口)
11,在FLASH中的字體總是很模糊,用變清晰地辦法嗎?
寫好文本以後CTRL+T打開文本設置面板,在最後地文本框選項那裡框選使用設計字體就行了
.(注意最好使用宋體,尺寸為12或者8,這樣比較工整)
12,我想做一個MTV,怎麼導入聲音呀?
很簡單,CTRL+R導入你地聲音文件就行了.
13,我製作地MTV聲音和歌詞總是不同步.
CTRL+F打開禎控制面板,右邊找到聲音選項卡,調整聲音地同步效果為STREM(音頻數據流)模
式就行了.
14,怎樣可以做出很漂亮地字體特效?
用第三方軟體Swish和Swfx這些,閃吧地軟體資源有下載.
5. 直播系統源碼:直播平台開發中,源碼有什麼用
建個房子,源碼就相當於地基了。重要性不言而喻,好的源碼可以造就好的直播平台。想要做直播的咱們可以溝通下,專業的呆萌直播開發團隊。
6. 求前輩指教。linux的套接字編程,這個程序運行,我照著源碼敲,出現一堆錯誤。用的是vim和gcc
再啟動時會出現:
Bind(): Address already in use
的錯誤提示,並導致程序直接退出;
用
$netstat -an |grep 8080
或
$ps aux |grep 8080
都還能看到剛才用Ctrl+C「強制結束」了的進程,埠還是使用中,
只能用kill結束進程,才能收回埠,很是麻煩。
在代碼中添加:
int optval;
optval = 1;
ret = setsockopt( sock, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval) );
可以解決這問題。
在網上查到的更好的解釋如下:
http://www.ibm.com/developerworks/cn/linux/l-sockpit/
在 4.2 BSD UNIX® 操作系統中首次引入,Sockets API 現在是任何操作系統的標准特性。
事實上,很難找到一種不支持 Sockets API 的現代語言。
該 API 相當簡單,但新的開發人員仍然會遇到一些常見的隱患。
本文識別那些隱患並向您顯示如何避開它們。
隱患 1.忽略返回狀態
第一個隱患很明顯,但它是開發新手最容易犯的一個錯誤。
如果您忽略函數的返回狀態,當它們失敗或部分成功的時候,您也許會迷失。
反過來,這可能傳播錯誤,使定位問題的源頭變得困難。
捕獲並檢查每一個返回狀態,而不是忽略它們。
考慮清單 1 顯示的例子,一個套接字 send 函數。
清單 1. 忽略 API 函數返回狀態
int status, sock, mode;
/* Create a new stream (TCP) socket */
sock = socket( AF_INET, SOCK_STREAM, 0 );
...
status = send( sock, buffer, buflen, MSG_DONTWAIT );
if (status == -1)
{
/* send failed */
printf( "send failed: %s\n", strerror(errno) );
}
else
{
/* send succeeded -- or did it? */
}
清單 1 探究一個函數片斷,它完成套接字 send 操作(通過套接字發送數據)。
函數的錯誤狀態被捕獲並測試,但這個例子忽略了send 在無阻塞模式(由 MSG_DONTWAIT 標志啟用)下的一個特性。
send API 函數有三類可能的返回值:
如果數據成功地排到傳輸隊列,則返回 0。
如果排隊失敗,則返回 -1(通過使用 errno 變數可以了解失敗的原因)。
如果不是所有的字元都能夠在函數調用時排隊,則最終的返回值是發送的字元數。
由於 send 的 MSG_DONTWAIT 變數的無阻塞性質,
函數調用在發送完所有的數據、一些數據或沒有發送任何數據後返回。
在這里忽略返回狀態將導致不完全的發送和隨後的數據丟失。
隱患 2.對等套接字閉包
UNIX 有趣的一面是您幾乎可以把任何東西看成是一個文件。
文件本身、目錄、管道、設備和套接字都被當作文件。
這是新穎的抽象,意味著一整套的 API 可以用在廣泛的設備類型上。
考慮 read API 函數,它從文件讀取一定數量的位元組。
read 函數返回:
讀取的位元組數(最高為您指定的最大值);
或者 -1,表示錯誤;
或者 0,如果已經到達文件末尾。
如果在一個套接字上完成一個 read 操作並得到一個為 0 的返回值,這表明遠程套接字端的對等層調用了 close API 方法。
該指示與文件讀取相同 —— 沒有多餘的數據可以通過描述符讀取(參見 清單 2)。
清單 2.適當處理 read API 函數的返回值
int sock, status;
sock = socket( AF_INET, SOCK_STREAM, 0 );
...
status = read( sock, buffer, buflen );
if (status > 0)
{
/* Data read from the socket */
}
else if (status == -1)
{
/* Error, check errno, take action... */
}
else if (status == 0)
{
/* Peer closed the socket, finish the close */
close( sock );
/* Further processing... */
}
同樣,可以用 write API 函數來探測對等套接字的閉包。
在這種情況下,接收 SIGPIPE 信號,或如果該信號阻塞,write 函數將返回 -1 並設置 errno 為 EPIPE。
隱患 3.地址使用錯誤(EADDRINUSE)
您可以使用 bind API 函數來綁定一個地址(一個介面和一個埠)到一個套接字端點。
可以在伺服器設置中使用這個函數,以便限制可能有連接到來的介面。
也可以在客戶端設置中使用這個函數,以便限制應當供出去的連接所使用的介面。
bind 最常見的用法是關聯埠號和伺服器,並使用通配符地址(INADDR_ANY),它允許任何介面為到來的連接所使用。
bind 普遍遭遇的問題是試圖綁定一個已經在使用的埠。
該陷阱是也許沒有活動的套接字存在,但仍然禁止綁定埠(bind 返回EADDRINUSE),
它由 TCP 套接字狀態 TIME_WAIT 引起。
該狀態在套接字關閉後約保留 2 到 4 分鍾。
在 TIME_WAIT 狀態退出之後,套接字被刪除,該地址才能被重新綁定而不出問題。
等待 TIME_WAIT 結束可能是令人惱火的一件事,
特別是如果您正在開發一個套接字伺服器,就需要停止伺服器來做一些改動,然後重啟。
幸運的是,有方法可以避開 TIME_WAIT 狀態。可以給套接字應用 SO_REUSEADDR 套接字選項,以便埠可以馬上重用。
考慮清單 3 的例子。
在綁定地址之前,我以 SO_REUSEADDR 選項調用 setsockopt。
為了允許地址重用,我設置整型參數(on)為 1 (不然,可以設為 0 來禁止地址重用)。
清單 3.使用 SO_REUSEADDR 套接字選項避免地址使用錯誤
int sock, ret, on; struct sockaddr_in servaddr; /* Create a new stream (TCP) socket */ sock = socket( AF_INET, SOCK_STREAM, 0 ):
/* Enable address reuse */
on = 1;
ret = setsockopt( sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on) );
/* Allow connections to port 8080 from any available interface */
memset( &servaddr, 0, sizeof(servaddr) );
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl( INADDR_ANY );
servaddr.sin_port = htons( 45000 );
/* Bind to the address (interface/port) */
ret = bind( sock, (struct sockaddr *)&servaddr, sizeof(servaddr) );
在應用了 SO_REUSEADDR 選項之後,bind API 函數將允許地址的立即重用。
隱患 4.發送結構化數據
套接字是發送無結構二進制位元組流或 ASCII 數據流(比如 HTTP 上的 HTTP 頁面,或 SMTP 上的電子郵件)的完美工具。但是如果試圖在一個套接字上發送二進制數據,事情將會變得更加復雜。
比如說,您想要發送一個整數:您可以肯定,接收者將使用同樣的方式來解釋該整數嗎?
運行在同一架構上的應用程序可以依賴它們共同的平台來對該類型的數據做出相同的解釋。
但是,如果一個運行在高位優先的 IBM PowerPC 上的客戶端發送一個 32 位的整數到一個低位優先的 Intel x86,
那將會發生什麼呢?
位元組排列將引起不正確的解釋。
位元組交換還是不呢?
Endianness 是指內存中位元組的排列順序。高位優先(big endian) 按最高有效位元組在前排列,然而 低位優先(little endian) 按照最低有效位元組在前排序。
高位優先架構(比如 PowerPC®)比低位優先架構(比如 Intel® Pentium® 系列,其網路位元組順序是高位優先)有優勢。這意味著,對高位優先的機器來說,在 TCP/IP 內控制數據是自然有序的。低位優先架構要求位元組交換 —— 對網路應用程序來說,這是一個輕微的性能弱點。
通過套接字發送一個 C 結構會怎麼樣呢?這里,也會遇到麻煩,因為不是所有的編譯器都以相同的方式排列一個結構的元素。結構也可能被壓縮以便使浪費的空間最少,這進一步使結構中的元素錯位。
幸好,有解決這個問題的方案,能夠保證兩端數據的一致解釋。過去,遠程過程調用(Remote Procere Call,RPC)套裝工具提供所謂的外部數據表示(External Data Representation,XDR)。XDR 為數據定義一個標準的表示來支持異構網路應用程序通信的開發。
現在,有兩個新的協議提供相似的功能。可擴展標記語言/遠程過程調用(XML/RPC)以 XML 格式安排 HTTP 上的過程調用。數據和元數據用 XML 進行編碼並作為字元串傳輸,並通過主機架構把值和它們的物理表示分開。SOAP 跟隨 XML-RPC,以更好的特性和功能擴展了它的思想。參見 參考資料 小節,獲取更多關於每個協議的信息。
回頁首
隱患 5.TCP 中的幀同步假定
TCP 不提供幀同步,這使得它對於面向位元組流的協議是完美的。
這是 TCP 與 UDP(User Datagram Protocol,用戶數據報協議)的一個重要區別。
UDP 是面向消息的協議,它保留發送者和接收者之間的消息邊界。
TCP 是一個面向流的協議,它假定正在通信的數據是無結構的,
如圖 1 所示。
圖 1.UDP 的幀同步能力和缺乏幀同步的 TCP
圖 1 的上部說明一個 UDP 客戶端和伺服器。
左邊的對等層完成兩個套接字的寫操作,每個 100 位元組。
協議棧的 UDP 層追蹤寫的數量,並確保當右邊的接收者通過套接字獲取數據時,它以同樣數量的位元組到達。
換句話說,為讀者保留了寫者提供的消息邊界。
現在,看圖 1 的底部.它為 TCP 層演示了相同粒度的寫操作。
兩個獨立的寫操作(每個 100 位元組)寫入流套接字。
但在本例中,流套接字的讀者得到的是 200 位元組。
協議棧的 TCP 層聚合了兩次寫操作。
這種聚合可以發生在 TCP/IP 協議棧的發送者或接收者中任何一方。
重要的是,要注意到聚合也許不會發生 —— TCP 只保證數據的有序發送。
對大多數開發人員來說,該陷阱會引起困惑。
您想要獲得 TCP 的可靠性和 UDP 的幀同步。
除非改用其他的傳輸協議,比如流傳輸控制協議(STCP),
否則就要求應用層開發人員來實現緩沖和分段功能。
調試套接字應用程序的工具
GNU/Linux 提供幾個工具,它們可以幫助您發現套接字應用程序中的一些問題。
此外,使用這些工具還有教育意義,而且能夠幫助解釋應用程序和 TCP/IP 協議棧的行為。
在這里,您將看到對幾個工具的概述。查閱下面的 參考資料 了解更多的信息。
查看網路子系統的細節
netstat 工具提供查看 GNU/Linux 網路子系統的能力。
使用 netstat,可以查看當前活動的連接(按單個協議進行查看),
查看特定狀態的連接(比如處於監聽狀態的伺服器套接字)和許多其他的信息。
清單 4 顯示了 netstat 提供的一些選項和它們啟用的特性。
清單 4.netstat 實用程序的用法模式
View all TCP sockets currently active $ netstat --tcp View all UDP sockets $ netstat --udp View all TCP sockets in the listening state $ netstat --listening View the multicast group membership information $ netstat --groups Display the list of masqueraded connections $ netstat --masquerade View statistics for each protocol $ netstat --statistics
盡管存在許多其他的實用程序,但 netstat 的功能很全面,
它覆蓋了 route、ifconfig 和其他標准 GNU/Linux 工具的功能。
監視流量
可以使用 GNU/Linux 的幾個工具來檢查網路上的低層流量。
tcpmp 工具是一個比較老的工具,它從網上「嗅探」網路數據包,列印到stdout 或記錄在一個文件中。
該功能允許查看應用程序產生的流量和 TCP 生成的低層流控制機制。
一個叫做 tcpflow 的新工具與tcpmp 相輔相成,
它提供協議流分析和適當地重構數據流的方法,而不管數據包的順序或重發。
清單 5 顯示 tcpmp 的兩個用法模式。
清單 5.tcpmp 工具的用法模式
Display all traffic on the eth0 interface for the local host
$ tcpmp -l -i eth0 // Show all traffic on the network coming from or going to host plato
$ tcpmp host plato // Show all HTTP traffic for host camus
$ tcpmp host camus and (port http) //View traffic coming from or going to TCP port 45000 on the local host
$ tcpmp tcp port 45000
tcpmp 和 tcpflow 工具有大量的選項,包括創建復雜過濾表達式的能力。
查閱下面的 參考資料 獲取更多關於這些工具的信息。
tcpmp 和 tcpflow 都是基於文本的命令行工具。
如果您更喜歡圖形用戶界面(GUI),有一個開放源碼工具 Ethereal 也許適合您的需要。
Ethereal 是一個專業的協議分析軟體,它可以幫助調試應用層協議。
它的插入式架構(plug-in architecture)可以分解協議,
比如 HTTP 和您能想到的任何協議(寫本文的時候共有 637 個協議)。
回頁首
總結
套接字編程是容易而有趣的,但是您要避免引入錯誤或至少使它們容易被發現,
這就需要考慮本文中描述的這 5 個常見的陷阱,並且採用標準的防錯性程序設計實踐。
GNU/Linux 工具和實用程序還可以幫助發現一些程序中的小問題。
記住:在查看實用程序的幫助手冊時候,跟蹤相關的或「請參見」工具。
您也許會發現一個必要的新工具。
7. 設計一個用8250實現串口通信
數據接收存儲技術革新是信號採集處理領域內的一個重要課題。利用這種技術,可以把信號的實時採集和精確處理在時間上分為兩個階段,有利於獲得令人更滿意的處理結果。在無線數傳接收設備中應用數據接收存儲方法時,除了要滿足數據傳輸速率和差錯控制方面的要求外,還需要考慮如何使設備易於攜帶、介面簡單、使用方便。
傳統外設介面技術不但數據傳輸速率較低,獨佔中斷、I/O地址、DMA通道等計算機系統關鍵資源,容易造成資源沖突問題,而且使用時繁雜的安裝配置手續也給終端用戶帶來了諸多不便。近年來,USB介面技術迅速發展,新型計算機紛紛對其提供支持。USB2.0是USB技術發展的最新成果,利用USB2.0介面技術開發計算機外設,不但可以借用其差錯控制機制[1][6]減輕開發人員的負擔、獲得高速數據傳輸能力(480Mb/s),而且可以實現便捷的機箱外即插即用特性,方便終端用戶的使用。
1 無線數傳接設備總體構成
無線數傳接收設備是某靶場測量系統的一個重要組成部分。如圖1所示,該設備由遙測接收機利用天線接收經過調制的無線電波信號,解調後形成傳輸速率為4Mb/s的RS-422電平差分串列數據流。以幀同步字打頭的有效數據幀周期性地出現在這些串列數據中。數據轉存系統從中提取出有效的數據幀,並在幀同步字後插入利用GPS接收機生成的本地時間信息,用於記錄該幀數據被接收到的時間,然後送給主機硬體保存。
在無線數傳接收設備中,數據轉存系統是實現數據接收存儲的關鍵子系統。下面將詳細介紹該系統的硬體實現及工作過程。
2 數據轉存系統基本構成及硬體實現
數據轉存系統主要由FPGA模塊、DSP模塊、USB2.0介面晶元構成,各個模塊之間的相互關系如圖2所示示。圖中,4Mb/s的串列數據輸入信號SDI已由RS-422差分電平轉換為CMOS電平。為突出重點,不太重要的信號連線未在圖中繪出。下面分別介紹這幾個模塊的主要功能。
2.1 FPGA模塊實現及春功能
FPGA模塊在Altera公司ACEX系列的EP1K30TI144-2晶元中實現。其中主要的功能子模塊有:位同步邏輯、幀同步邏輯、授時時鍾和解碼邏輯。位同步邏輯主要由數字鎖相環構成,用於從串列數據輸入信號SDI中恢復出位時鍾信號。幀同步邏輯從位同步邏輯的輸出信號提取幀同步脈沖。兩者為DSP利用其同步串列口接收串列數據作好准備。這樣,利用一對差分信號線就可以接收同步串列數據,簡化了印製電路板的外部介面。授時時鍾在DSP和GSP接收機的協助下生成精度為0.1ms的授時信息。解碼邏輯用於實現系統互聯。
2.2 DSP模塊實現及其功能
DSP模塊是數據轉存系統的主控模塊,在T1公司16位定點DSP晶元TMS320F206[4]中實現。在DSP的外部數據空間還配置了32KX16的高速SRAM,可以緩存80餘幀數據,用於提高系統的差錯控制能力。DSP利用同步串列口接收FPGA送來的同步串列數據,利用非同步串口接收GPS接收機送來時間信息(用於初始化FPGA授時時鍾),利用外部匯流排介面訪問FPGA授時時鍾、外部SRAM、ISP1581的片內寄存器。可以看出DSP模塊主要用於完成數據幀的接收、重組以及轉存調度等任務。
ISP1581晶元是PHILIPS公司推出的高速USB2.0設備控制器,實現了USB2.0/1.1物理層、協議層,完全符合USB2.0規范,即支持高速(480Mb/s)操作,又支持全速(12Mb/s)操作。ISP1581沒有內嵌微處理器,但對微處理器操作了靈活的介面。在上電時,通過配置BUS——CONF、DAO、MODE1、MODE0、DA1引腳電平可以適應絕大多數的微處理器介面類型。例如,通過BUS_CONF/DA0引腳,匯流排配置可以選擇普通處理器模塊(Generic Phocessor mode)中分割匯流排模式(Split Bus Mode);在普通處理器模式下,通過MODE0/DA1引腳可以選擇讀寫選通為8051風格或者Motorola風格。
在數據轉存系統中,ISP1581用於處理主機的高速數據傳輸。它工作在普通處理器介面模式下,採用8051風格的讀寫選通信號,由DSP晶元TMS320F206控制。兩者在選定工作方式下的信號連線如圖3所示,圖中未畫出的信號引腳可以懸空,供電引腳的連接方式在參考資料[2]第46頁有簡明描述。在FPGA解碼邏輯的作用下,ISP1581的片內寄存器被映射在DSP的片外數據空間中。DSP通過8位地址線選擇要訪問的寄存器,在讀寫選通信號的控制下,利用16位數據線與選定的寄存器交換數據。在訪問ISP1581單位元組寄存器時,數據匯流排高位元組內容無關緊要。ISP1581通過中斷引腳INT向DSP報告發生的匯流排事件,利用D+、D-引腳完成與主機的數據交換。
3 數據轉存系統的工作過程
系統加電後,當FPGA配置過程結束時,如果有串列數據輸入,位同步邏輯和幀同步邏輯便啟動同步過程。同時,DSP片內FLASH中復位中斷服務程序c_int0()[4]被立即執行,在建立好C語言的工作環境下,它會調用主函數main()。在main()中,需要安排好一系列有先後順序的初始化工作。其中,ISP1581的初始化過程比較復雜,需要考慮設備採用的供電方式(這里為自供電[6]方式)、插接主機和系統上電的先後次序,並需要與USB匯流排枚舉[1][6]過程相結合。
在FPGA中的位同步邏輯和幀同步邏輯均進入同步狀態,且DSP主控模塊配合主機完成初始化任務後,即可啟動數據的傳輸過程。下面介紹一下ISP1581的初始化過程及DSP控制的數據幀的接收機轉存流程。
3.1 ISP1581的初始化
在初始化過程中,首先需要設置影響ISP1581自身工作方式的一些寄存器,然後與主機端USB系統配合進行,應答來自主機端的設備請求。當數據轉存系統板作為USB 2.0設備通過連接器連到主機USB根集線器上的一個埠時,主機便可檢測到這一連接,接著給該埠加電,檢測設備並激活該埠,向USB設備發送復位信號。設備收到這一復位信號後,即進入預設狀態,此後就能夠通過預設通信通道響應主機端送來的設備請求。主機通過描述符請求(GET_DESCRIPTOR)獲得設備端的詳細信息,通過設置地址請求(SET_ADDRESS)設置設備地址,通過設置配置請求(SET_CONFIGURATION)選定合適的設備配置。在設備成功響應了這些設備請求之後,就可以與主機通信了。
在響應主機請求的過程中,DSP需要配置ISP1581的端點以實現不同類型的傳輸通道。根據數據傳輸速率的要求,除了預設的控制通道外,系統中實現了一個批傳輸(bulk)[1]類型的輸入通道。這樣,ISP1581就可以像FIFO一樣方便地從數據轉存系統向主機傳輸數據,而且具有差錯控制能力,簡化了設備端軟體設計的復雜性。
3.2 數據幀的接收轉存過程
系統正常工作時,需要與主機端程序相互配合。主要端需要開發者實現的程序包括設備驅動程序和應用程序。在Windows 2000操作系統下,USB設備驅動程序為WDM模型的驅動程序,開發環境DriverStudio為WDM型驅動程序提供了框架結構,使得驅動開發變得非常容易(參見參考文獻[5]第八、九、十章)。驅動程序接收應用程序的請求,利用USB匯流排驅動程序(US-BD)和主機控制器驅動程序(HCD)通過主機控制器安排USB匯流排事務,設備端則根據這些事務調度相應的數據幀的傳輸。關於主機埠如何安排匯流排事務可以查閱參考文獻[1]。以下著重介紹設備端數據的調度過程。
數據幀的接收轉存過程主要由DSP負責,DSP在外部SRAM中建立了一個數據幀的隊列,如圖4所示。系統主要工作在中斷驅動模式下,與同步串列口相關的中斷服務程序負責建立隊列的尾部,對應於ISP1581中斷引腳INT的中斷服務程序負責建立隊列的頭部。
當以幀同步字打頭的一幀數據以串列位流的形式到來時,FPGA產生的幀同步脈沖可以直接啟動DSP同步串列口接收數據,該同步脈沖同時以中斷方式通知DSP為一幀數據的接收做好准備。DSP接到通知後,首先檢查外部SRAM中是否有足夠的空間容納一幀數據。如果沒有空間,則丟棄當前數據幀(根據設計,這種情況是很少見的);如果有空間,則為當前數據幀保留足夠的空間。接著在幀起始位置填寫幀步字,讀取授時時鍾的當前值並填寫在幀同步字後。這樣,一個新的數據幀(圖4中數據幀F_N)就建立了,但是並沒有加入到隊列中,而是要等待來自同步串列口的後繼數據嵌入該幀中後再加入到隊列中。
同步串列口的接收緩沖區在接收到若干字(由初始化時的設置決定)後,會向DSP提出中斷請求。在中斷服務程序中,DSP讀取接收緩沖區中的內容,並將其填入上述新開辟的幀F_N中。在一幀數據接收完畢後,就將該幀添加到隊列的尾部,表示該幀數據已經准備好(圖4中數據幀F_R),可以通過ISP1581送給主機硬體保存。
DSP在查詢到隊列中有已經准備好的數據幀存在時,就設置ISP1581的端點索引寄存器(Endpoint Index Register)使其指向初始化時配置的批傳輸輸入端點,然後將隊列首幀數據通過ISP1581的數據埠寄存器(Data Port Register)填寫在端點緩沖區中。在端點緩沖區被填滿後,它就自動生效。在不能填滿端點緩沖區的情況下,可以通過設置控制功能寄存器(Control Function Register)的VENDP位[2]強制該端點緩沖區生效。端點緩沖區生效後,在USB匯流排上下一IN令牌到來時,該端點緩沖區中的數據就通過USB匯流排傳輸到主機中。主機成功接收到數據後,會給ISP1581以ACK應答。能夠通過INT引腳報告給DSP,DSP就可以繼續往端點中填寫該幀其餘數據。
在隊列首幀數據被成功轉移到主機後,DSP就丟棄首幀數據。如果隊列在還有數據幀,則將次首幀作為首幀,繼續前述傳輸過程;如果沒有要傳輸的數據幀,則為隊列首幀指針Head_Ptr賦空值(NULL),等待新的數據幀的到來。
USB2.0是計算機外設介面技術發展的最新成功,具有廣闊的應用前景。本文介紹了PHILIPS公司USB2.0介面晶元ISP1581在無線數據接收設備中的應用。高性能、便攜化的無線數據傳接收設備。其在靶場實彈試驗中受到了用戶的好評。
PC機的RS-232C串列口是使用最多的介面之一。因此,4串口、8串口等以增加串口數量為目的的ISA匯流排卡產品大量問世。一般串口應用只是使用了RXD和TXD兩條傳輸線和地線所構成的串口的最基本的應用條件,而本文介紹一個利用PC機的RS-232串口加上若干電路來實現多串口需求的介面電路。
1.PC機串口的RTS和DTR及擴展電路
RTS和DTR是PC機中8250晶元的MODEM控制寄存器的兩個輸出引角D1和D0位,口地址為COM1的是3FCH,口地址為COM2的是2FCH。我們可以利用對MODEM控制寄存器3FCH或2FCH的寫操作對其進行控制。從而利用該操作和擴展電路實現對TXD和RXD進行多線擴展,圖1是其擴展電路。
在圖1所示的PC機串口擴展電路中,74LS161是二進制計數器,1腳是清0端,2腳是計數端,計數脈沖為負脈沖信號,4051是八選一雙向數字/模擬電子開關電路,其中一片用於正向輸出,一片用於反向輸出。該擴展電路工作原理是通過控制PC機串口的DTR輸出的高低電平來形成74LS161的P2腳計數端的負脈沖信號,使161的輸出端P14(QA)、P13(QB)、P12(QC)、P11(QD)腳依次在0000到1111十六個狀態中變化,本電路僅使用了QA、QB、QC三個輸出來形成對4051的ABC控制,最終使得4051(1)的輸入端TXD依次通過與TX1~TX8導通而得到輸出信號,4051(2)的輸出端RXD與RX1~RX8依次導通形成輸入信號。由於RXD和TXD的導通是一一對應的,因此串口通信就可以依次通過與多達8個帶有三線基本串口的外部設備進行通信傳輸以實現數據傳送。PC機端的電平轉換電路是將RS232電平轉換為TTL電平,外設端的電平轉換電路是將TTL電平轉換為RS232電平。由於這種轉換有許多電路可以實現,因而,這里不再介紹。
2.電路使用程序
對PC機串口COM1的編程如下:
……
… ;對COM1口的波特率等設置;
MOV DX,3FCH
MOV AL,XXXXXX01B
OUT DX,AL;D1生成RTS負脈沖,對74LS161輸出端清0
MOV AL,XXXXXX11B;
OUT DX,AL ;4051的RX1和TX1導通
CALL COM ;調用通信子程序,與第一個外部設備通信;
MOV CX,7 ;設置循環計數器;
NEXT:MOV DX ,3FCH
MOV AL,XXXXXX10B
OUT DX ,AL ;D0位生成DTR的負脈沖,形成161的P2腳計數脈沖
MOV AL,XXXXXX11B
OUT DX,AL ;RX2和TX2導通
CALL COM ;調用通信子程序,與第二個外部設備通信
LOOP NEXT ;循環與另外6個外部設備通信
…
… ;通信子程序略
3.使用說明
由於該擴展的多路介面在通信時共用一個子程序,因此在與某一路導通時,系統只能與這一路的外部設備進行通信聯絡。
如果工作現場需要立即和某一路通信,則需要對3FCH的D1位執行兩個寫操作並在RTS腳形成負脈沖,以對7416I清0後,再連接執行若干次對DTR的兩次寫操作。例如想對第4路外設通信,則需要執行完成對74LS161清0後,再連續三次對3FCH的D0位進行兩個寫操作以形成DTR腳的負脈沖,然後即可調用通信子程序。
如需使用PC機的COM2串口,只需將程序中的3F8H~3FDH全部換成2F8H~2FDH即可。
如果使用十六選一雙向數字/模擬電子開關電路,可將74LS161的QA、QB、QC、QD四個輸出端接至電子開關的四個控制端A、B、C、D,這樣就可以達到一個PC機的RS232口與16個帶有串口的外設的數據通信。
8. vrp的應用范圍
VRP可廣泛的應用於城市規劃、室內設計、工業模擬、古跡復原、橋梁道路設計、房地產銷售、旅遊教學、水利電力、地質災害等眾多領域,為其提供切實可行的解決方案。 很久以來,在中國的虛擬現實技術領域,一直是引進國外的虛擬現實軟體,中國在很長的一段時間內沒有自己獨立開發的虛擬現實模擬平台軟體。泱泱大國,中國顯然不能總是拾人牙慧,開發出中國自主知識產權的虛擬現實軟體,才是王道。中視典數字科技一直致力於中國虛擬現實技術自有軟體的開發和探索,終於研發除了具有完全自主知識產權的虛擬現實軟體—Virtual Reallity Platform(通俗稱為VRP)。
VRP系列產品自問世以來,一舉打破該領域被國外領域所壟斷的局面,以極高的性價比獲得國內廣大客戶的喜愛,已經成為目前中國國內市場佔有率最高的一款國產虛擬現實模擬平台軟體。 VRP虛擬現實模擬平台,經歷了多年的研發與探索,已經在VRP引擎為核心的基礎上,衍生出了九個相關三維產品的軟體平台。
其中VRP-BUILDER虛擬現實編輯器和VRPIE3D互聯網平台(又稱VRPIE)軟體已經成為目前國內應用最為廣泛的VR和WEB3D製作工具,連續三年占據國內同行業的領導地位,用戶數量始穩居於第一。
(1)VRP-BUILDER 虛擬現實編輯器
VRP-BUILDER虛擬現實編輯器的軟體用途、功能特點和客戶群
軟體用途:三維場景的模型導入、後期編輯、交互製作、特效製作、界面設計、打包發布的工具
客戶群:主要面向三維內容製作公司
功能特點: VRP-Builder所有操作都是以美工熟悉的方式進行,並且提供了大量的支持工具和輔助庫以快速提高成品質量。如果使用者有一定的3DSMAX建模和渲染基礎,只要對VR-Builder平台稍加學習,很快就可以製作出自己的虛擬現實場景。
(2)VRPIE-3D互聯網平台
VRPIE3D互聯網平台(又稱VRPIE) 是中視典數字科技有限公司自主研發的一款用於在互聯網上進行三維互動瀏覽操作的軟體,可將三維的虛擬現實技術成果用於互聯網應用。
在安裝了VRP-IE瀏覽器插件的基礎上,用戶可在任意一台連上互聯網的電腦上,訪問VRP-IE互聯網平台網頁,實現全三維場景的瀏覽和交互。
VRPIE軟體用途、功能特點和客戶群
軟體用途:將VRP-BUILDER的編輯成果發布到互聯網,並可讓客戶通過互聯網進行對三維場景的瀏覽與互動
功能特點:VRP-IE 三維網路平台具備高度真實感畫質,支持大場景動態調度,良好的低端硬體兼容性,高壓縮比,多線程下載,支持高並發訪問,支持視點優化的流式下載,支持高性能物理引擎,支持軟體抗鋸齒,支持腳本編程,支持無縫升級等等特性,為廣大用戶開發面向公眾或集團用戶的大型WEB3D 網站提供了強有力的技術支持和保障。
客戶群:直接面向所有互聯網用戶
(3)VRP-PHYSICS 物理模擬系統
VRP-PHYSICS物理模擬系統是中視典數字科技有限公司研發的一款物理引擎系統。系統賦予虛擬現實場景中的物體以物理屬性,符合現實世界中的物理定律,是在虛擬現實場景中表現虛擬碰撞、慣性、加速度、破碎、倒塌、爆炸等物體互動式運動和物體力學特性的核心。
VRP-PHYSICS物理模擬系統軟體用途和客戶群
軟體用途:可逼真的模擬各種物理學運動,實現如碰撞、重力、摩擦、阻尼、陀螺、粒子等自然現象,在演算法過程中嚴格符合牛頓定律、動量守恆、動能守恆等物理原理
客戶群:主要面向院校和科研單位
(4)VRP-DIGICITY 數字城市平台
VRP-DIGICITY數字城市平台的軟體用途和客戶群
軟體用途:具備建築設計和城市規劃方面的專業功能,如資料庫查詢、實時測量、通視分析、高度調整、分層顯示、動態導航、日照分析等
客戶群:主要面向建築設計、城市規劃的相關研究和管理部門
(5)VRP-INDUSIM 工業模擬平台
VRP-INDUSIM工業模擬平台的軟體用途和客戶群
軟體用途:模型化,角色化,事件化的虛擬模擬,使演練更接近真實情況,降低演練和培訓成本,降低演練風險。
客戶群:主要面向石油、電力、機械、重工、船舶、鋼鐵、礦山、應急等行業
(6)VRP-TRAVEL 虛擬旅遊平台
VRP-TRAVEL虛擬旅遊平台的軟體用途和客戶群
軟體用途:激發學生學習興趣,培養導游職業意識,培養學生創新思維,積累講解專項知識,架起學生與社會聯系的橋梁,全方位提升學生講解能力,讓單純的考試變成互動教學與考核雙模式。
客戶群:主要面向導游、旅遊規劃
(7)VRP-MUSEUM 虛擬展館
VRP-MUSEUM虛擬展館的軟體用途和客戶群
軟體用途:是針對各類科博館、體驗中心、大型展會等行業,將其展館、陳列品以及臨時展品移植到互聯網上進行展示、宣傳與教育的三維互動體驗解決方案。它將傳統展館與互聯網和三維虛擬技術相結合,打破了時間與空間的限制、最大化地提升了現實展館及展品的宣傳效果與社會價值,使得公眾通過互聯網即能真實感受展館及展品,並能在線參與各種互動體驗,網路三維虛擬展館將成為未來最具價值的展示手段。
客戶群:科博館、藝術館、革命展館、工業展館、圖書館、旅遊景區、企業體驗中心以及各種園區
(8)VRP-SDK 系統開發包
VRP-SDK系統開發包的軟體用途和客戶群
軟體用途:提供C++源碼級的開發函數庫,用戶可在此基礎之上開發出自己所需要的高效模擬軟體
客戶群:主要面向水利電力、能源交通等工業模擬研究與設計單位
(9)VRP-STORY故事編輯器
VRP-MYSTORY故事編輯器的特點
操作靈活、界面友好、使用方便,就像在玩電腦游戲一樣簡單
易學易會、無需編程,也無需美術設計能力,就可以進行3D製作
成本低、速度快,能夠幫助用戶高效率、低成本地做出想得到的3D作品
支持與VRP平台所有軟體模塊的無縫介面,可以與以往所有軟體模塊結合使用,實現更炫、更豐富的交互功能。
(10)VRP-3DNCS 三維網路交互平台
VRP-3DNCS三維網路交互平台(英文全稱Virtual Reality Platform 3D Net Communication System,簡稱VRP-3DNCS)提供了一個允許不同地區、不同行業、不同角色實時在同一場景下交互的平台。用戶可將VRP-MYSTORY下製作的應用,根據自身需求,使用SDK開發包,開發符合行業特性的專項策略,提供語音、文字等多種交流方式,實現各地用戶身臨同一場景的效果。 VRP高級模塊主要包括VRP-多通道環幕模塊、VRP-立體投影模塊、VRP-多PC級聯網路計算模塊、VRP-游戲外設模塊、VRP-多媒體插件模塊等五個模塊。
(1)VRP-多通道環幕模塊
多通道環幕模塊由三部分組成:邊緣融合模塊、幾何矯正模塊、幀同步模塊。
它是基於軟體實現對圖像的分屏、融合與矯正,是的一般用融合機來實現多通道環幕投影的過程基於一台PC機器即可全部實現。
(2)VRP-立體投影模塊
立體投影模塊是採用被動式立體原理,通過軟體技術分離出圖像的左、右眼信息。相比於主動式立體投影方式的顯示刷新提高一倍以上,且運算能力比主動式立體投影方式更高。
(3)VRP-多PC級聯網路計算模塊
採用多主機聯網方式,避免了多頭顯卡進行多通道計算的弊端,而且三維運算能力相比多頭顯卡方式提高了5倍以上,而PC機事件的延遲由不超過0.1毫秒。
(4)VRP-游戲外設模塊
Logitech方向盤、Xbox手柄、甚至數據頭盔數據手套等都是虛擬現實的外圍設備,通過VRP-游戲外設板塊就可以輕松實現通過這些設備對場景進行瀏覽操作,並且該模塊還能自定義擴展,可自由映射。
(5)VRP-多媒體插件模塊
VRP-多媒體插件模塊可將製作好的VRP文件嵌入到Neobook、Director等多媒體軟體中,能夠極大地擴展虛擬現實的表現途徑和傳播方式。 VRP虛擬現實模擬平台自發布第一個版本至今已經歷數年,經過中視典人不斷的創新與改進。VRP12.0於2012年5月24日在北京國家會議中心正式對外發布。
VRP12.0作為中視典數字科技2012年推出的VRP模擬平台軟體系列的最新版本,不盡完善和提高了VRP軟體原有的一些功能,還新增了包括增強現實技術、VRP-MYSTORY故事編輯器等新功能。
VRP12.0新增功能
(1)集成了增強現實技術
1.穩定高效的增強現實演算法庫:攝像機的自動標定、實時多mark跟蹤、實時自然圖片的跟蹤、實時簡單3D物體的跟蹤、實時人臉面部跟蹤。
2.方便易用的AR-Builder編輯器:有好的界面編輯工具、快速定製個性化AR案例、支持3dMax和Maya導出動畫。
3.支持多種AR交互硬體:增強現實眼鏡、頭部跟蹤器、骨骼跟蹤器、紅外感測系統、慣性感測系統、動作捕捉系統
(2)無縫結合VRP-MYSTORY故事編輯器
1.提供大量的精美模型庫、角色庫、特效庫
2.對象化的模型操作,精美的實時渲染效果
3.支持直接發布各種格式的圖片
(3)支持工業格式數據
1.支持模型直接從工業軟體導入到VRP中進行編輯
2.支持Maya、Pro/E、Catia、Solidworks等
3.支持VRP模型導回到MAX及其他工業軟體中再次修改
(4)全新編輯模式
1.拖拽節點式的編輯模式,可編輯產生無限多種GPU-Shader材質效果
2.材質編輯人員無需掌握GPU顯示編程原理即可製作出所需的GPU-Shader效果
3.支持材質庫功能,包含大量的金屬材質、建築類材質、織物類材質、自然類材質,滿足各種需求
4.針對美術人員的設計流程優化,提高製作效率
5.支持時間動態材質效果,極大提高VRP編輯器的渲染效果
6.完全支持導出DirectX和OpenGL的GPU-Shader效果
(5)支持在線烘焙
1.支持場景烘焙功能和貼圖烘焙功能,一鍵更新烘焙全場景的光照貼圖
2. 支持基於GPU硬體的快速烘焙技術和基於CPU的光線跟蹤烘焙技術
3.離線渲染技術與實時渲染技術友好結合,支持VRP中的所有燈光類型
4.豐富的采樣技術:均勻采樣、隨機采樣、抖動采樣、多重采樣及Hammersly采樣
(6)支持多人協作
1.基於事件驅動的場景製作方式,支持時間優先、主機優先的搶占式通訊模式
2.相機數據自動同步,場景狀態同步,支持畫中畫相機
3.場景數據自動統一,無需任何額外操作,各用戶登陸場景後的畫面均可一致
4.支持自定義標准,可以在場景中任意添加一個標注信息,並在網路上進行實時同步
(7)支持硬體交互
1. 支持基於微軟Kinect for Windows的動態手勢識別及靜態姿勢識別
2. 支持數據手套datalove,可控制三維虛擬手在場景中抓取物體,並進行交互操作
3.支持反饋數據手套CyberGlove、CyberTouch和CyberGrasp,具有真實觸感和力反饋效果
4.支持Patriot和Liberty跟蹤器,精確捕捉人體的位置和動作,並在場景中控制虛擬手的運動
5.支持頭戴式顯示器,讓人有高沉浸感的立體視覺感受 中視典數字科技有限公司,2002年於深圳高新技術園區正式注冊成立,是專注於虛擬現實、增強現實與3D互聯網領域的軟硬體研發與推廣的專業機構,是國際領先的虛擬現實技術、增強現實技術解決方案供應商和相關服務提供商,是中國虛擬現實、增強現實領域的領軍企業。
中視典數字科技有限公司,立志做中國自己的圖形圖像專家,自成立之初,一直致力於中國自主知識產權虛擬現實模擬平台的開發和探索。研發出了中國第一個完全獨立自主知識產權的虛擬現實三維互動模擬平台VR-Platform(簡稱VRP),一舉打破了中國虛擬現實領域被國外軟體壟斷的局面。
中視典數字科技有限公司,是最專業的虛擬現實硬體設備(如VR-Platform CAVE「洞穴式」虛擬現實顯示系統 )提供商以及相關解決方案的集成商。
中視典數字科技有限公司,提供的虛擬現實解決方案涉及虛擬旅遊教學、機械模擬、數字展館、軍事模擬、工業模擬等眾多領域,在自主產權虛擬現實軟體VRP的基礎上為客戶量身打造最專業的個性化解決方案。
9. quartus II幀同步電路
嗨~同學,這里是唐老師給的答案哈~!
非同步模擬信號:只從發送端發送一個模擬信號
同步模擬信號:發送端一直發送同頻同相的模擬信號
位同步:接收端接收的每一位信息均與發送端同步的信號
幀同步:數字信道的接收端與發送端相應信道對齊的信號~~加油吼!
10. OSI參考模型
OSI的七層結構
第一層:物理層(PhysicalLayer),規定通信設備的機械的、電氣的、功能的和規程的特性,用以建立、維護和拆除物理鏈路連接。具體地講,機械特性規定了網路連接時所需接插件的規格尺寸、引腳數量和排列情況等;電氣特性規定了在物理連接上傳輸bit流時線路上信號電平的大小、阻抗匹配、傳輸速率距離限制等;功能特性是指對各個信號先分配確切的信號含義,即定義了DTE和DCE之間各個線路的功能;規程特性定義了利用信號線進行bit流傳輸的一組操作規程,是指在物理連接的建立、維護、交換信息時,DTE和DCE雙方在各電路上的動作系列。
在這一層,數據的單位稱為比特(bit)。
屬於物理層定義的典型規范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。
物理層的主要功能:
為數據端設備提供傳送數據的通路,數據通路可以是一個物理媒體,也可以是多個物理媒體連接而成.一次完整的數據傳輸,包括激活物理連接,傳送數據,終止物理連接.所謂激活,就是不管有多少物理媒體參與,都要在通信的兩個數據終端設備間連接起來,形成一條通路.
傳輸數據.物理層要形成適合數據傳輸需要的實體,為數據傳送服務.一是要保證數據能在其上正確通過,二是要提供足夠的帶寬(帶寬是指每秒鍾內能通過的比特(BIT)數),以減少信道上的擁塞.傳輸數據的方式能滿足點到點,一點到多點,串列或並行,半雙工或全雙工,同步或非同步傳輸的需要.
完成物理層的一些管理工作.
物理層的主要設備:中繼器、集線器。
第二層:數據鏈路層(DataLinkLayer):在物理層提供比特流服務的基礎上,建立相鄰結點之間的數據鏈路,通過差錯控制提供數據幀(Frame)在信道上無差錯的傳輸,並進行各電路上的動作系列。
數據鏈路層在不可靠的物理介質上提供可靠的傳輸。該層的作用包括:物理地址定址、數據的成幀、流量控制、數據的檢錯、重發等。
在這一層,數據的單位稱為幀(frame)。
數據鏈路層協議的代表包括:SDLC、HDLC、PPP、STP、幀中繼等。
鏈路層的主要功能:
鏈路層是為網路層提供數據傳送服務的,這種服務要依靠本層具備的功能來實現。鏈路層應具備如下功能:
鏈路連接的建立,拆除,分離。
幀定界和幀同步。鏈路層的數據傳輸單元是幀,協議不同,幀的長短和界面也有差別,但無論如何必須對幀進行定界。
順序控制,指對幀的收發順序的控制。
差錯檢測和恢復。還有鏈路標識,流量控制等等.差錯檢測多用方陣碼校驗和循環碼校驗來檢測信道上數據的誤碼,而幀丟失等用序號檢測.各種錯誤的恢復則常靠反饋重發技術來完成。
數據鏈路層主要設備:二層交換機、網橋
第三層是網路層(Network layer)
在計算機網路中進行通信的兩個計算機之間可能會經過很多個數據鏈路,也可能還要經過很多通信子網。網路層的任務就是選擇合適的網間路由和交換結點, 確保數據及時傳送。網路層將數據鏈路層提供的幀組成數據包,包中封裝有網路層包頭,其中含有邏輯地址信息- -源站點和目的站點地址的網路地址。
如果你在談論一個IP地址,那麼你是在處理第3層的問題,這是「數據包」問題,而不是第2層的「幀」。IP是第3層問題的一部分,此外還有一些路由協議和地址解析協議(ARP)。有關路由的一切事情都在第3層處理。地址解析和路由是3層的重要目的。網路層還可以實現擁塞控制、網際互連等功能。
在這一層,數據的單位稱為數據包(packet)。
網路層協議的代表包括:IP、IPX、RIP、OSPF等。
網路層主要功能:
網路層為建立網路連接和為上層提供服務,應具備以下主要功能:
路由選擇和中繼
激活,終止網路連接
在一條數據鏈路上復用多條網路連接,多採取分時復用技術
差錯檢測與恢復
排序,流量控制
服務選擇
網路管理
網路層標准簡介
網路層主要設備:路由器
第四層是處理信息的傳輸層(Transport layer)。第4層的數據單元也稱作數據包(packets)。但是,當你談論TCP等具體的協議時又有特殊的叫法,TCP的數據單元稱為段(segments)而UDP協議的數據單元稱為「數據報(datagrams)」。這個層負責獲取全部信息,因此,它必須跟蹤數據單元碎片、亂序到達的數據包和其它在傳輸過程中可能發生的危險。第4層為上層提供端到端(最終用戶到最終用戶)的透明的、可靠的數據傳輸服務。所謂透明的傳輸是指在通信過程中傳輸層對上層屏蔽了通信傳輸系統的具體細節。
傳輸層協議的代表包括:TCP、UDP、SPX等。
傳輸層是兩台計算機經過網路進行數據通信時,第一個端到端的層次,具有緩沖作用。當網路層服務質量不能滿足要求時,它將服務加以提高,以滿足高層的要求;當網路層服務質量較好時,它只用很少的工作。傳輸層還可進行復用,即在一個網路連接上創建多個邏輯連接。 傳輸層也稱為運輸層.傳輸層只存在於端開放系統中,是介於低3層通信子網系統和高3層之間的一層,但是很重要的一層.因為它是源端到目的端對數據傳送進行控制從低到高的最後一層.
有一個既存事實,即世界上各種通信子網在性能上存在著很大差異.例如電話交換網,分組交換網,公用數據交換網,區域網等通信子網都可互連,但它們提供的吞吐量,傳輸速率,數據延遲通信費用各不相同.對於會話層來說,卻要求有一性能恆定的界面.傳輸層就承擔了這一功能.它採用分流/合流,復用/介復用技術來調節上述通信子網的差異,使會話層感受不到.
此外傳輸層還要具備差錯恢復,流量控制等功能,以此對會話層屏蔽通信子網在這些方面的細節與差異.傳輸層面對的數據對象已不是網路地址和主機地址,而是和會話層的界面埠.上述功能的最終目的是為會話提供可靠的,無誤的數據傳輸.傳輸層的服務一般要經歷傳輸連接建立階段,數據傳送階段,傳輸連接釋放階段3個階段才算完成一個完整的服務過程.而在數據傳送階段又分為一般數據傳送和加速數據傳送兩種。傳輸層服務分成5種類型.基本可以滿足對傳送質量,傳送速度,傳送費用的各種不同需要.傳輸層的協議標准有以下幾種:
第五層是會話層(Session layer)
這一層也可以稱為會晤層或對話層,在會話層及以上的高層次中,數據傳送的單位不再另外命名,統稱為報文。會話層不參與具體的傳輸,它提供包括訪問驗證和會話管理在內的建立和維護應用之間通信的機制。如伺服器驗證用戶登錄便是由會話層完成的。
會話層提供的服務可使應用建立和維持會話,並能使會話獲得同步。會話層使用校驗點可使通信會話在通信失效時從校驗點繼續恢復通信。這種能力對於傳送大的文件極為重要。會話層,表示層,應用層構成開放系統的高3層,面對應用進程提供分布處理,對話管理,信息表示,恢復最後的差錯等. 會話層同樣要擔負應用進程服務要求,而運輸層不能完成的那部分工作,給運輸層功能差距以彌補.主要的功能是對話管理,數據流同步和重新同步。要完成這些功能,需要由大量的服務單元功能組合,已經制定的功能單元已有幾十種.現將會話層主要功能介紹如下.
為會話實體間建立連接。為給兩個對等會話服務用戶建立一個會話連接,應該做如下幾項工作:
將會話地址映射為運輸地址
選擇需要的運輸服務質量參數(QOS)
對會話參數進行協商
識別各個會話連接
傳送有限的透明用戶數據
數據傳輸階段
這個階段是在兩個會話用戶之間實現有組織的,同步的數據傳輸.用戶數據單元為SSDU,而協議數據單元為SPDU.會話用戶之間的數據傳送過程是將SSDU轉變成SPDU進行的.
連接釋放
連接釋放是通過"有序釋放","廢棄","有限量透明用戶數據傳送"等功能單元來釋放會話連接的.會話層標准為了使會話連接建立階段能進行功能協商,也為了便於其它國際標准參考和引用,定義了12種功能單元.各個系統可根據自身情況和需要,以核心功能服務單元為基礎,選配其他功能單元組成合理的會話服務子集.會話層的主要標准有"DIS8236:會話服務定義"和"DIS8237:會話協議規范".
第六層是表示層(Presentation layer)
這一層主要解決用戶信息的語法表示問題。它將欲交換的數據從適合於某一用戶的抽象語法,轉換為適合於OSI系統內部使用的傳送語法。即提供格式化的表示和轉換數據服務。數據的壓縮和解壓縮, 加密和解密等工作都由表示層負責。例如圖像格式的顯示,就是由位於表示層的協議來支持。
第七層應用層(Application layer),應用層為操作系統或網路應用程序提供訪問網路服務的介面。
應用層協議的代表包括:Telnet、FTP、HTTP、SNMP等。
通過 OSI 層,信息可以從一台計算機的軟體應用程序傳輸到另一台的應用程序上。例如,計算機 A 上的應用程序要將信息發送到計算機 B 的應用程序,則計算機 A 中的應用程序需要將信息先發送到其應用層(第七層),然後此層將信息發送到表示層(第六層),表示層將數據轉送到會話層(第五層),如此繼續,直至物理層(第一層)。在物理層,數據被放置在物理網路媒介中並被發送至計算機 B 。計算機 B 的物理層接收來自物理媒介的數據,然後將信息向上發送至數據鏈路層(第二層),數據鏈路層再轉送給網路層,依次繼續直到信息到達計算機 B 的應用層。最後,計算機 B 的應用層再將信息傳送給應用程序接收端,從而完成通信過程。下面圖示說明了這一過程。
OSI 的七層運用各種各樣的控制信息來和其他計算機系統的對應層進行通信。這些控制信息包含特殊的請求和說明,它們在對應的 OSI 層間進行交換。每一層數據的頭和尾是兩個攜帶控制信息的基本形式。
對於從上一層傳送下來的數據,附加在前面的控制信息稱為頭,附加在後面的控制信息稱為尾。然而,在對來自上一層數據增加協議頭和協議尾,對一個 OSI 層來說並不是必需的。
當數據在各層間傳送時,每一層都可以在數據上增加頭和尾,而這些數據已經包含了上一層增加的頭和尾。協議頭包含了有關層與層間的通信信息。頭、尾以及數據是相關聯的概念,它們取決於分析信息單元的協議層。例如,傳輸層頭包含了只有傳輸層可以看到的信息,傳輸層下面的其他層只將此頭作為數據的一部分傳遞。對於網路層,一個信息單元由第三層的頭和數據組成。對於數據鏈路層,經網路層向下傳遞的所有信息即第三層頭和數據都被看作是數據。換句話說,在給定的某一 OSI 層,信息單元的數據部分包含來自於所有上層的頭和尾以及數據,這稱之為封裝。
例如,如果計算機 A 要將應用程序中的某數據發送至計算機 B ,數據首先傳送至應用層。 計算機 A 的應用層通過在數據上添加協議頭來和計算機 B 的應用層通信。所形成的信息單元包含協議頭、數據、可能還有協議尾,被發送至表示層,表示層再添加為計算機 B 的表示層所理解的控制信息的協議頭。信息單元的大小隨著每一層協議頭和協議尾的添加而增加,這些協議頭和協議尾包含了計算機 B 的對應層要使用的控制信息。在物理層,整個信息單元通過網路介質傳輸。
計算機 B 中的物理層收到信息單元並將其傳送至數據鏈路層;然後 B 中的數據鏈路層讀取計算機 A 的數據鏈路層添加的協議頭中的控制信息;然後去除協議頭和協議尾,剩餘部分被傳送至網路層。每一層執行相同的動作:從對應層讀取協議頭和協議尾,並去除,再將剩餘信息發送至上一層。應用層執行完這些動作後,數據就被傳送至計算機 B 中的應用程序,這些數據和計算機 A 的應用程序所發送的完全相同 。
一個 OSI 層與另一層之間的通信是利用第二層提供的服務完成的。相鄰層提供的服務幫助一 OSI 層與另一計算機系統的對應層進行通信。一個 OSI 模型的特定層通常是與另外三個 OSI 層聯系:與之直接相鄰的上一層和下一層,還有目標聯網計算機系統的對應層。例如,計算機 A 的數據鏈路層應與其網路層,物理層以及計算機 B 的數據鏈路層進行通信。
OSI分層的優點
[1][2](1)人們可以很容易的討論和學習協議的規范細節。
(2)層間的標准介面方便了工程模塊化。
(3)創建了一個更好的互連環境。
(4)降低了復雜度,使程序更容易修改,產品開發的速度更快。
(5)每層利用緊鄰的下層服務,更容易記住個層的功能。
OSI是一個定義良好的協議規范集,並有許多可選部分完成類似的任務。
它定義了開放系統的層次結構、層次之間的相互關系以及各層所包括的可能的任務。是作為一個框架來協調和組織各層所提供的服務。
OSI參考模型並沒有提供一個可以實現的方法,而是描述了一些概念,用來協調進程間通信標準的制定。即OSI參考模型並不是一個標准,而是一個在制定標准時所使用的概念性框架。
OSI模型與TCP/IP模型的比較
TCP/IP模型實際上是OSI模型的一個濃縮版本,它只有四個層次:
1.應用層
2.運輸層
3.網際層
4.網路介面層
與OSI功能相比:
應用層對應著OSI的 應用層 表示層 會話層
運輸層對應著OSI的傳輸層
網際層對應著OSI的網路層
網路介面層對應著OSI的數據鏈路層和物理層
Open Source Initiative(簡稱OSI,有譯作開放源代碼促進會、開放原始碼組織)是一個旨在推動開源軟體發展的非盈利組織。