摘要:本文實(shí)現(xiàn)了一個(gè)基于DM6467的標(biāo)清和高清的視頻監(jiān)控系統(tǒng),包括標(biāo)清/高清模擬視頻輸入輸出、H.264標(biāo)清/高清視頻編碼、AAC音頻編解碼、H.264標(biāo)清/高清視頻實(shí)時(shí)解碼和基于TCP協(xié)議的網(wǎng)絡(luò)傳輸?shù)裙δ埽洳粌H滿足不同情況下的視頻監(jiān)控需求,還具有良好的可重構(gòu)性和可擴(kuò)展性。本文主要討論了系統(tǒng)硬件和軟件的設(shè)計(jì)。
關(guān)鍵詞:達(dá)芬奇技術(shù);DM6467;視頻監(jiān)控
DOI: 10.3969/j.issn.1005-5517.2013.1.015
然后依次創(chuàng)建Rendezvous同步機(jī)制和其他三個(gè)線程。主要工作流程為:
第一步,初始化一個(gè)互斥鎖,用于保護(hù)全局變量;
第二步,調(diào)用CERuntime_init和TraceUtil_start完成對(duì)Codec Engine的初始化,必須在調(diào)用Codec Engine的API函數(shù)之前執(zhí)行;
第三步,調(diào)用Rendezvous_open打開線程同步機(jī)制;
第四步,采用FIFO機(jī)制創(chuàng)建視頻編碼線程和數(shù)據(jù)采集線程、寫文件線程各自的管道通信并創(chuàng)建這三個(gè)線程;
最后,主線程的任務(wù)結(jié)束轉(zhuǎn)化成控制線程,可實(shí)現(xiàn)暫停播放、調(diào)整OSD透明度等功能。
(2)數(shù)據(jù)采集線程
數(shù)據(jù)采集線程主要任務(wù)是通過VPIF得到一幀視頻數(shù)據(jù)并利用VDCE模塊做4:2:2—>4:2:0的格式轉(zhuǎn)換,存儲(chǔ)轉(zhuǎn)換后數(shù)據(jù)的內(nèi)存由視頻線程提供。
(3)視頻編碼線程
視頻編碼線程主要工作流程為:
第一步,調(diào)用Engine_open打開一個(gè)解碼Engine實(shí)例,同時(shí)返回一個(gè)hEngine指針,供以后Engine函數(shù)使用;
第二步,調(diào)用VIDENC1_create,參數(shù)使用hEngine指針,創(chuàng)建一個(gè)符合H.264算法的解碼實(shí)例,返回值是一個(gè)hEncode指針,這個(gè)指針供以后所有Codec Engine的API調(diào)用;
第三步,調(diào)用Memory_alloc函數(shù)為編碼前4:2:0的數(shù)據(jù)分配連續(xù)內(nèi)存(供數(shù)據(jù)采集線程使用);
最后,先得到一幀4:2:0的圖像,