基于GM8180的嵌入式視頻服務(wù)器設(shè)計(jì)
H.264編碼引擎內(nèi)建了兩個(gè)DMA通道,通道O用于讀寫原始圖像、參考幀、重建幀等數(shù)據(jù),通道1用于將編碼完的H.264碼流回寫到系統(tǒng)內(nèi)存中。在編碼引擎工作之前,需要為圖像原始數(shù)據(jù)、參考幀、重建幀緩存分配物理上連續(xù)的內(nèi)存空間,并將緩存起始地址和長(zhǎng)度以一定格式組織成DMA命令鏈數(shù)組,設(shè)置給編碼引擎DMA通道O。將存放編碼后碼流數(shù)據(jù)的緩存基址設(shè)置給通道1。而H.264編碼參數(shù),例如條帶類型、量化參數(shù)等則直接通過(guò)寄存器設(shè)置。
編碼1幀圖像時(shí),H.264編碼引擎會(huì)根據(jù)DMA命令鏈數(shù)組中的圖像數(shù)據(jù)和參考幀緩存基址,以宏塊為單元讀入當(dāng)前幀和參考幀,進(jìn)行運(yùn)動(dòng)估計(jì)、運(yùn)動(dòng)補(bǔ)償、整型DCT變換和量化。通過(guò)DMA將重建幀寫到系統(tǒng)內(nèi)存中,更新參考幀緩存。最后進(jìn)行熵編碼,生成H.264碼流并通過(guò)DMA通道1寫回到系統(tǒng)內(nèi)存中。完成編碼之后,編碼引擎通過(guò)中斷通知主CPU。
2.3 RTSP流媒體服務(wù)器
實(shí)時(shí)流協(xié)議(Real Time Streaming Protocol,RTSP)是由Real Networks和Netscape公司共同提出的,該協(xié)議定義了一對(duì)多的應(yīng)用程序如何有效地通過(guò)IP網(wǎng)絡(luò)傳送多媒體數(shù)據(jù)的方法。RTSP協(xié)議構(gòu)建在實(shí)時(shí)傳輸協(xié)議(Real-time Transport Protocol,RTP)和實(shí)時(shí)控制協(xié)議(RealT-ime Control Protocol,RTCP)之上,它使用TCP或者UDP完成數(shù)據(jù)傳輸。
如圖5所示,RTSP服務(wù)器軟件設(shè)計(jì)為分層結(jié)構(gòu),采用socket網(wǎng)絡(luò)編程和pthread多線程技術(shù)實(shí)現(xiàn)。系統(tǒng)設(shè)計(jì)一個(gè)單獨(dú)的線程用于監(jiān)聽(tīng)RTSP端口以及進(jìn)行RTSP會(huì)話的信令交互處理,這樣的設(shè)計(jì)保證服務(wù)器能夠?qū)γ總€(gè)客戶連接作出快速的響應(yīng)。當(dāng)一個(gè)RTSP會(huì)話成功建立之后,服務(wù)器將為該會(huì)話分配一組RTP/RTCP端口以及相應(yīng)的緩沖區(qū),同時(shí)創(chuàng)建一個(gè)新的線程用于負(fù)責(zé)發(fā)送RTP和RTCP報(bào)文以及接收、分析客戶端反饋的RTCP接收者報(bào)告。在RTSP、RTP、RTCP協(xié)議實(shí)現(xiàn)和音視頻編碼器之間設(shè)計(jì)了一層實(shí)時(shí)流媒體管理層,通過(guò)它將音視頻采集和編碼驅(qū)動(dòng)的初始化、采集數(shù)據(jù)、編碼以及在運(yùn)行過(guò)程中更改采集或者編碼參數(shù)(如更改碼率、幀率、請(qǐng)求編碼關(guān)鍵幀)等操作抽象成統(tǒng)一的實(shí)時(shí)媒體文件接口。本文引用地址:http://www.ex-cimer.com/article/151974.htm
結(jié)語(yǔ)
本文設(shè)計(jì)的基于GM8180的嵌入式視頻服務(wù)器,通過(guò)片上的H.264編碼引擎實(shí)現(xiàn)2路D1分辨率的H.264實(shí)時(shí)編碼,通過(guò)軟件實(shí)現(xiàn)2路AMRNB音頻編碼,以及實(shí)時(shí)流媒體傳輸?shù)南嚓P(guān)協(xié)議。充分挖掘了GM8180這款A(yù)SIC芯片的潛在性能。
評(píng)論