[發(fā)明專利]一種軟硬結(jié)合的多通道視頻同步解碼方法有效
| 申請?zhí)枺?/td> | 202110697282.5 | 申請日: | 2021-06-23 |
| 公開(公告)號: | CN113645490B | 公開(公告)日: | 2023-05-09 |
| 發(fā)明(設(shè)計)人: | 高娟 | 申請(專利權(quán))人: | 天津津航計算技術(shù)研究所 |
| 主分類號: | H04N21/43 | 分類號: | H04N21/43;H04N19/42 |
| 代理公司: | 中國航天科技專利中心 11009 | 代理人: | 茹阿昌 |
| 地址: | 300000 天津市*** | 國省代碼: | 天津;12 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 軟硬 結(jié)合 通道 視頻 同步 解碼 方法 | ||
1.一種軟硬結(jié)合的多通道視頻同步解碼方法,其特征在于,包括以下步驟:
1)配置ffmpeg的編譯屬性和參數(shù),將ffmpeg動態(tài)庫移植到海思平臺;
2)創(chuàng)建網(wǎng)絡(luò)接收圖像數(shù)據(jù)任務(wù),并將原始數(shù)據(jù)存入環(huán)形緩沖區(qū);
3)從環(huán)形緩沖區(qū)取出原始數(shù)據(jù),獲取完整數(shù)據(jù)包;
步驟3)所述獲取完整數(shù)據(jù)包,具體為:
321)獲取從環(huán)形緩沖區(qū)讀取的圖像數(shù)據(jù)緩沖區(qū)首地址bufPtr和長度bufLen,具體步驟如下:
3211)獲取目前緩沖區(qū)的寫指針位置putPtr和緩沖區(qū)數(shù)據(jù)總長度cirLen;
3212)判斷讀指針readPtr與putPtr是否一致,如果一致則延時1ms,返回到步驟3211)否則進行下一步;
3213)判斷已讀數(shù)據(jù)readLen是否小于cirLen,如果是則繼續(xù)下一步,否則步驟3217);
3214)判斷cirLen與readLen差值是否大于等于協(xié)議幀固定長度frame_len,如果是繼續(xù)下一步,如果不是則進行步驟3216);
3215)將當(dāng)前readPtr作為解碼圖像數(shù)據(jù)首地址bufPtr,長度bufLen為frame_len,同時移動指針readPtr,移動字節(jié)為frame_len,增加讀取長度readLen,增加的字節(jié)個數(shù)為frame_len;
3216)將當(dāng)前readPtr作為解碼圖像數(shù)據(jù)首地址bufPtr,長度bufLen為cirLen減去readLen,同時移動readPtr,移動個數(shù)為cirLen減去readLen,增加讀取長度readLen,增加的字節(jié)個數(shù)為cirLen與readLen的差值;
3217)判斷readLen與frame_len的和是否小于緩沖區(qū)最大長度MAX_LEN,如果是則進行下一步,如果不是則進行步驟3219);
3218)將當(dāng)前readPtr作為解碼圖像數(shù)據(jù)首地址bufPtr,數(shù)據(jù)長度bufLen為frame_len,移動讀指針,指針移動的字節(jié)個數(shù)為frame_len,增加讀數(shù)據(jù)長度readLen,增加的字節(jié)個數(shù)為frame_len;
3219)將當(dāng)前readPtr作為解碼圖像數(shù)據(jù)首地址bufPtr,數(shù)據(jù)長度bufLen為MAX_LEN減去readLen的差值,移動讀指針到緩沖區(qū)首地址,置讀長度readLen為0;
322)判斷當(dāng)前的數(shù)據(jù)長度bufLen是否大于0,如果是則繼續(xù)下一步,如果不是,則退出本次數(shù)據(jù)的解碼過程,等待下次網(wǎng)絡(luò)傳送的原始數(shù)據(jù);
323)傳送數(shù)據(jù)數(shù)組首地址指針bufPtr和長度bufLen給軟解碼模塊,使用庫函數(shù)av_parser_parse2對數(shù)據(jù)按幀進行分割,如果從數(shù)組能成功獲得一個完整的圖像幀數(shù)據(jù)包則記錄繼續(xù)下一步,如果不是則退出本次解碼過程;
324)保存本次數(shù)據(jù)數(shù)組中圖像幀分割的數(shù)據(jù)包長度ret,從數(shù)據(jù)數(shù)組總長度bufLen剔除本次分割的圖像幀數(shù)據(jù)包長度ret,并向前移動首地址指針bufPtr,移動次數(shù)為ret;
325)將本次分割的圖像完整數(shù)據(jù)包放到待解碼隊列中,等待下次網(wǎng)絡(luò)傳送的原始壓縮圖像數(shù)據(jù),返回步驟321);
4)基于容錯策略對ffmpeg獲取的完整數(shù)據(jù)包進行錯誤幀的篩選;
所述的步驟4)所述對ffmpeg獲取的完整數(shù)據(jù)包進行錯誤幀的篩選,具體為:
41)在獲取的數(shù)據(jù)中根據(jù)h265協(xié)議幀頭查找?guī)^;
42)在獲取的數(shù)據(jù)中根據(jù)h265協(xié)議幀頭查找?guī)玻?/p>
43)找到幀頭和幀尾的幀作為完整一幀圖像幀并記錄該圖像幀類型,如果不是則拋棄該圖像幀;
44)記錄每個圖像幀所需要的原始數(shù)據(jù)類型,獲得編碼規(guī)律;
45)分析不符合步驟44)中編碼規(guī)律的錯誤圖像數(shù)據(jù);
451)保存時間上早于當(dāng)前幀且最近的vps幀,sps幀,pps幀,sei幀;
452)如果當(dāng)前幀與之前保存的幀不符合編碼規(guī)律Encode,且當(dāng)前幀為多余幀,則將編碼規(guī)律中第一個p幀修改為I幀,并且結(jié)合步驟451)的獲得的vps幀,sps幀,pps幀,sei幀和編碼規(guī)律中所有的p幀一起組合作為一幅圖像數(shù)據(jù);完成錯誤幀篩選工作,獲得篩選后的完整數(shù)據(jù)包;反之,則進入步驟453);
453)如果當(dāng)前幀與之前保存的幀不符合編碼規(guī)律Encode,且當(dāng)前幀的后面幀是vps幀,則將當(dāng)前編碼規(guī)律的第一個p幀修改為I幀,并且結(jié)合步驟451)的vps幀,sps幀,pps幀,sei幀和修改后的編碼規(guī)律中的所有p幀組合作為一幅圖像數(shù)據(jù);完成錯誤幀篩選工作,獲得篩選后的完整數(shù)據(jù)包;反之,則進入步驟454);
454)如果當(dāng)前幀與之前保存的幀符合編碼規(guī)律,且當(dāng)前幀為錯誤幀,則丟棄當(dāng)前幀,則將編碼規(guī)律中的第一個p幀修改為I幀,并且取前兩個p幀和步驟451)的vps幀,sps幀,pps幀,sei幀一起組合作為一幅圖像數(shù)據(jù);完成錯誤幀篩選工作,獲得篩選后的完整數(shù)據(jù)包;
5)將篩選后的完整數(shù)據(jù)包發(fā)送給海思平臺中的硬解碼模塊進行解碼;
6)通過解碼通道獲取圖像,并使用網(wǎng)絡(luò)回傳解碼后的數(shù)據(jù)給主機。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于天津津航計算技術(shù)研究所,未經(jīng)天津津航計算技術(shù)研究所許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110697282.5/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
H04N 圖像通信,如電視
H04N21-00 可選的內(nèi)容分發(fā),例如交互式電視,VOD〔視頻點播〕
H04N21-20 .專門適用于內(nèi)容分發(fā)的專用服務(wù)器,例如:VOD服務(wù)器;其操作
H04N21-40 .專門適用于接收內(nèi)容或者與內(nèi)容交互的客戶端設(shè)備,如STB[機頂盒];相關(guān)操作
H04N21-60 .用于在服務(wù)器和客戶端之間或者在遠程客戶端之間的視頻分配的網(wǎng)絡(luò)結(jié)構(gòu)或者處理
H04N21-80 .通過內(nèi)容產(chǎn)生器獨立于分配過程實現(xiàn)的內(nèi)容或附加數(shù)據(jù)的生成或處理;內(nèi)容本身
H04N21-81 ..其單媒體部件





