新四季網

解碼併合成不完整視頻數據的幀的製作方法

2023-11-30 19:30:31 1


視頻數據被例行地通過網際網路和其它網絡傳送到遍布世界的消費者。視頻數據通常使用允許或補償視頻幀數據包丟失的協議來發送。例如,使用H.264格式編碼的視頻幀可使用多個不同片(piece)或「片段(slice)」來傳送,每個片或「片段」可包括多個幀數據包。這些包可在傳送期間丟失或可因各種原因被延誤。如果針對給定幀的幀數據在特定量的時間內仍然未被接收到,該幀被丟棄,導致可能被視頻消費者注意到的視覺保真度的丟失。

簡要概述

在此描述的各實施例涉及解碼不完整視頻數據。在一個實施例中,計算機系統接收一幀片(例如,視頻幀)。幀包括多個幀片或「片段」,其中每個幀片被編碼以便可被單獨解碼。計算機系統解碼所接收到的幀片同時等待至少一個附加幀片被接收。接著,當指示幀不完整的條件發生時,計算機系統合成幀片以替代尚未接收到的附加幀片。

在另一實施例中,響應於接收幀的片,計算機系統解碼所接收到的幀片同時等待其它幀片被接收。計算機系統檢測指示幀不完整的條件的發生,具有至少一個附加幀片的幀仍要被接收。接著,響應於檢測到發生,計算機系統合成幀片來替代還在接收的那些附加幀片。

在另一實施例中,計算機系統訪問來自包括多個幀片的幀的幀片。每個幀片可被單獨解碼。計算機系統解碼所訪問到的幀片同時等待附加幀片被接收。計算機系統接著確定至少一個附加幀片還在接收,並且,響應於該確定,使用與先前幀相關聯的幀數據來合成幀片。

提供本概述以便以簡化的形式介紹以下在詳細描述中進一步描述的一些概念。本概述並非旨在標識出要求保護的主題的關鍵特徵或必要特徵,亦非旨在用作輔助確定要求保護的主題的範圍。

本發明的附加特徵和優點將在以下描述中敘述,且其一部分根據本描述對本領域的技術人員將是顯而易見的,或可通過對此處的原理的實踐來獲知。此處所描述的各實施例的特徵和優點可通過在所附權利要求書中特別指出的工具和組合來實現和獲得。通過下列描述以及所附的權利要求,,此處所描述的各實施例的特徵將變得更加顯而易見。

附圖簡述

為進一步闡明此處所描述的各實施例的上述及其它特徵,將參考附圖,呈現更具體的描述。應該理解,這些附圖只描述了此處所描述的各實施例的示例,因此,不應該被視為限制其範圍。將通過使用附圖並利用附加特徵和細節來描述和解釋各實施例,在附圖中:

圖1示出了可以在其中操作本文所描述的各實施例(包括解碼不完整視頻數據)的計算機體系結構。

圖2示出了用於解碼不完整視頻數據的示例方法的流程圖。

圖3示出了用於解碼不完整視頻數據的替換示例方法的流程圖。

圖4示出了用於解碼不完整視頻數據的另一替換示例方法的流程圖。

圖5示出了其中幀片以順序方式被解碼的實施例。

圖6示出了其中幀片被解碼併合成的實施例。

圖7示出了其中幀片在H.264信道中被解碼的實施例。

詳細描述

在此描述的各實施例涉及解碼不完整視頻數據。在一個實施例中,計算機系統接收幀片(例如,視頻幀)。幀包括多個幀片,其中每個幀片被編碼以便可被單獨解碼。計算機系統解碼所接收到的幀片同時等待至少一個附加幀片被接收。接著,當指示幀不完整的條件發生時,計算機系統合成幀片以替代尚未接收到的附加幀片。

在另一實施例中,響應於接收幀的片,計算機系統解碼所接收到的幀片同時等待其它幀片被接收。計算機系統檢測指示幀不完整的條件的發生,具有至少一個附加幀片的幀仍要被接收。接著,響應於檢測到發生,計算機系統合成幀片來替代還在接收的那些附加幀片。

在另一實施例中,計算機系統訪問來自包括多個幀片的幀的幀片。每個幀片可被單獨解碼。計算機系統解碼所訪問到的幀片同時等待附加幀片被接收。計算機系統接著確定至少一個附加幀片還在被接收,並且響應於該確定,使用與先前幀相關聯的幀數據來合成幀片。

下面的討論現在涉及可被執行的多個方法和方法動作。值得注意的是,雖然可以以某一順序討論或在流程圖中按特定順序發生而示出了方法動作,但是,沒有特定順序是一定需要的,除非特別聲明,或者是必需的,因為在一個動作被執行之前該動作取決於另一動作被完成。

本文中描述的實施例可實現各種類型的計算系統。這些計算系統現在越來越多地採取多種多樣的形式。例如,計算系統可以是手持式設備、電器、膝上型計算機、臺式計算機、大型機、分布式計算系統或甚至常規上不被認為是計算系統的設備。在本說明書以及權利要求書中,術語「計算系統」被廣義地定義為包括任何設備或系統(或其組合),該設備或系統包含至少一個物理且有形的處理器以及其上能具有可由處理器執行的計算機可執行指令的物理且有形的存儲器。計算系統可以分布在網絡環境中,並可包括多個組分計算系統。

如圖1中例示的,計算系統101通常包括至少一個處理單元102A和存儲器103A。存儲器103A可以是物理系統存儲器,該物理系統存儲器可以是易失性的、非易失性的、或兩者的某種組合。術語「存儲器」也可在此用來指示諸如物理存儲介質這樣的非易失性大容量存儲器。如果計算系統是分布式的,則處理、存儲器和/或存儲能力也可以是分布式的。

如本文中所使用的,術語「可執行模塊」或「可執行組件」可以指可以在計算系統上執行的軟體對象、例程或方法。此處所描述的不同組件、模塊、引擎以及服務可以實現為在計算系統上執行的對象或進程(例如,作為分開的線程)。

在隨後的描述中,參考由一個或多個計算系統執行的動作描述了各實施例。如果這樣的動作是以軟體實現的,則執行動作的相關聯計算系統的一個或多個處理器響應於已經執行了計算機可執行指令來引導計算系統的操作。例如,這樣的計算機可執行指令可以在形成電腦程式產品的一個或多個計算機可讀介質上實現。這樣的操作的示例涉及對數據的操縱。計算機可執行指令(以及被操縱的數據)可被存儲在計算系統101的存儲器103A中。計算系統101還可包含允許計算系統101通過有線或無線網絡與其它消息處理器通信的通信信道。

在此描述的各實施例可包括或利用專用或通用計算機系統,該專用或通用計算機系統包括諸如例如一個或多個處理器和系統存儲器等計算機硬體,如以下更詳細討論的。系統存儲器可被包括在整體存儲器103A內。系統存儲器還可被稱為「主存儲器」,並且包括可被至少一個處理單元102A在存儲器總線上被尋址的存儲器位置,在這種情況下地址位置被聲明在存儲器總線自身上。系統存儲器傳統上是易失性的,但本文中描述的原理還應用於其中系統存儲器部分或者甚至全部是非易失性的情況。

本發明範圍內的各實施例也包括用於實現或存儲計算機可執行指令和/或數據結構的實體及其它計算機可讀介質。這樣的計算機可讀介質可以是可由通用或專用計算機系統訪問的任何可用介質。存儲計算機可執行指令和/或數據結構的計算機可讀介質是計算機存儲介質。承載計算機可執行指令和/或數據結構的計算機可讀介質是傳輸介質。由此,作為示例而非限制,本發明的各實施例可包括至少兩種顯著不同的計算機可讀介質:計算機存儲介質和傳輸介質。

存儲計算機可執行指令和/或數據結構的計算機存儲介質是物理硬體存儲介質。物理硬體存儲介質包括計算機硬體,諸如RAM、ROM、EEPROM、固態驅動器(「SSD」)、快閃記憶體、相變存儲器(「PCM」)、光碟存儲、磁碟存儲或其它磁存儲設備、或可用於存儲計算機可執行指令或數據結構形式的程序代碼的任何其它硬體存儲介質,其可由通用或專用計算機系統訪問來實現本發明公開的功能。

傳輸介質可包括可用於攜帶計算機可執行指令或數據結構形式的程序代碼並可由通用或專用計算機系統訪問的網絡和/或數據鏈路。「網絡」被定義為使得電子數據能夠在計算機系統和/或模塊和/或其它電子設備之間傳輸的一個或多個數據鏈路。當信息通過網絡或另一個通信連接(硬連線、無線、或者硬連線或無線的組合)傳輸或提供給計算機系統時,該計算機系統將該連接視為傳輸介質。上述的組合應當也被包括在計算機可讀介質的範圍內。

此外,在到達各種計算機系統組件之後,計算機可執行指令或數據結構形式的程序代碼可從傳輸介質自動傳輸到計算機存儲介質(或反之亦然)。例如,通過網絡或數據鏈路接收到的計算機可執行指令或數據結構可以在網絡接口模塊(例如,「NIC」)內的RAM中被緩衝,然後最終被傳輸至計算機系統RAM和/或計算機系統處的較不易失性的計算機存儲介質。因而,應當理解,計算機存儲介質可被包括在還利用(或甚至主要利用)傳輸介質的計算機系統組件中。

計算機可執行指令例如包括,當在一個或多個處理器處執行時使通用計算機系統、專用計算機系統、或專用處理設備執行某一功能或某組功能的指令和數據。計算機可執行指令可以是例如二進位代碼、諸如彙編語言之類的中間格式指令、或甚至原始碼。

本領域的技術人員將理解,本文中描述的原理可以在具有許多類型的計算機系統配置的網絡計算環境中實踐,這些計算機系統配置包括個人計算機、臺式計算機、膝上型計算機、消息處理器、手持式設備、多處理器系統、基於微處理器的或可編程消費電子設備、網絡PC、小型計算機、大型計算機、行動電話、PDA、平板、尋呼機、路由器、交換機等等。本發明也可在其中通過網絡連結(或者通過硬連線數據鏈路、無線數據鏈路,或者通過硬連線和無線數據鏈路的組合)的本地和遠程計算機系統兩者都執行任務的分布式系統環境中實施。如此,在分布式系統環境中,計算機系統可包括多個組成部分計算機系統。在分布式系統環境中,程序模塊可以位於本地和遠程存儲器存儲設備二者中。

本領域技術人員還將理解本發明可在雲計算環境中實踐。雲計算環境可以是分布式的,但這不是必須的。在分布時,雲計算環境可以國際性地分布在一個組織內,和/或具有跨多個組織擁有的組件。在該說明書和下面的權利要求書中,「雲計算」被定義為用於允許對可配置計算資源(例如,網絡、伺服器、存儲、應用和服務)的共享池的按需網絡訪問的模型。「雲計算」的定義不限於可從這樣的模型(在被合適地部署時)中獲得的任何其它多個優點。

更進一步,此處所描述的系統架構可包括多個獨立組件,每一組件都對作為整體的系統的功能有貢獻。當開始考慮平臺可縮放性的問題時,此模塊性允許提高靈活性,為此,提供各種優點。可以通過使用帶有有限的功能範圍的較小規模部件,比較輕鬆地管理系統複雜性和增長。通過使用這些鬆散耦合的模塊,增強平臺容錯。隨著業務需要規定,單個組件可以增量地增長。對於新的功能,模塊化開發還轉換為縮短的上市時間。可以添加或減去新功能,而不會影響核心系統。

圖1示出了其中可以採用至少一個實施例的計算機架構100。計算機架構100包括計算機系統101。計算機系統101和113可以是任何類型的本地或分布式計算機系統,包括雲計算系統。每一個包括至少一個處理器102A/102B、存儲器103A/103B以及通信模塊104A/104B。通信模塊可包括包含有線或無線網卡、藍牙無線收音機、WiFi收音機或其它配置用於傳送和/或接收數字數據的硬體的有線或無線的通信裝置。通信模塊104A,例如,可從計算機系統113的通信模塊104B接收幀111或幀片110。

在一些實施例中,計算機系統113可以是伺服器。伺服器可以是單個計算機系統,或可以是分布式的。伺服器可被配置來向諸如計算機系統101的客戶機提供數據。伺服器可響應於輸入或對數據的其它請求來向客戶機提供應用數據。在一些情況中,計算機系統113可以是視頻遊戲伺服器。在這樣的情況下,視頻遊戲伺服器可被配置成提供帶有視頻遊戲內容的幀。這些幀可被編碼或,至少在某些情況中,可處於原始形式。幀可以全幀形式111或片110來被發送。片可通過數據包來發送,並且每片可包括一個或多個數據包。如此,幀片被傳遞到計算機系統101並且接著被組合以形成全幀。這些幀片可以以連續流的方式被發送,以便形成幀的毗連繫列以形成運動圖片。在玩遊戲的情形中,幀的這個流可形成視頻遊戲輸出。應當理解,視頻遊戲實施例,儘管在此頻繁引用,僅僅是其中視頻內容從一個計算機系統被傳遞(即,流)到另一個計算機系統的實施例的一個示例。事實上,不完整數據的解碼,如以下描述的,可在其中視頻數據通過有損網絡發送的各種不同情形中被實現。

為了使得幀111和幀片110更容易傳遞,它們常常在傳遞之前以某種方式被編碼。在某些實施例中,幀可以根據H.264格式來被編碼。在其他實施例中,可以使用其它格式。計算機系統113的編碼模塊114可根據所選編碼格式來編碼全幀和/或幀片110。這些經編碼的幀或幀片接著被傳遞到計算機系統101,它們接著在計算機系統101處被解碼並顯示在顯示器108上。解碼模塊105解碼所接收到的幀111和幀片110並將它們發送到顯示器108以供向用戶顯示。在某些實施例中,解碼模塊105可被配置來顯示幀片110,即使在某些幀片丟失時。事實上,在其中數據包丟失的網絡事務中,某些幀片或其某些部分可能在傳遞期間丟失或可能延誤。在這樣的情況中,解碼模塊將保持解碼其已經接收到的幀片同時等待丟失或延誤的片出現。如果丟失或延誤的片未及時出現,則幀合成模塊107可使用各種不同幀合成技術來合成幀片。

例如,幀合成模塊107可通過查看幀數據尋找一個或多個先前的幀來合成丟失或延誤的幀片。幀合成模塊107可確定丟失的幀片處在當前正被解碼並準備顯示的幀的左上角。幀合成模塊107可接著查看幀數據尋找一個或多個先前幀的左上角來確定幀的那個部分看起來像啥(例如,它是否是藍天,或城市背景等)。接著,基於這個數據,幀合成模塊107可合成(一個或多個)缺失的幀片使得幀看起來基本上準確。然而,可能存在保真度的某些損失。此時計算機系統101可向計算機系統113發送指示112,指示至少一個幀片丟失或相當大地延誤,並且全幀111要被發送。接著,全幀111將被發送或某個其它刷新將被執行以更正不正確的像素,而不是發送幀增量(即,僅發送幀的已經改變的部分)。應當注意,許多不同方法和技術可被用來合成缺失的幀片。以下將分別參照圖2、3和4的方法200、300和400來進一步描述這些幀合成方法和其它概念。

鑑於上文所描述的系統和架構,參考圖2、3以及4的流程圖,將更好地理解可以根據所公開的主題實現的方法。為了簡潔起見,作為一系列框示出和描述了方法。然而,應了解和明白,所要求保護的主題不受方框的順序的限制,因為某些方框可以按不同的順序進行,和/或與此處所描繪和描述的其它方框同時進行。此外,並非所有的所示出的方框都是實現下面所描述的方法所必需的。

圖2示出了用於解碼不完整視頻數據的方法200的流程圖。現在將頻繁地參考環境100的組件以及數據來描述方法200。

方法200包括接收幀的至少一個片的動作,該幀包括多個幀片,每個幀片其本身被編碼以便可被單獨解碼(動作210)。例如,計算機系統101的通信模塊104A可接收來自計算機系統113的通信模塊104B的幀片110。幀片110可被單獨或與其它片組合發送。此外,幀片它本身可在單個數據包中被發送,或可被打破成多個數據包。幀片110是全幀(例如111)的一個片並且,因此,在與它的其它對應幀片組合時形成全幀。幀可被分割成基本上任何數量的幀片。這些片接著被傳遞並重新組裝以形成全幀。在某些實施例中,幀片可在傳遞到計算機系統101之前被編碼模塊114編碼。幀可以以各種不同編碼格式的任何一種來被編碼。這些編碼格式可針對視頻質量、傳遞效率(即帶寬)、快速解碼或針對某個其它考慮來被優化。

每個幀片110可以以這樣的方式被單獨編碼:允許幀片被單獨地解碼。因此,計算機系統101的解碼模塊105可接收幀片並解碼它而無需已經接收任何其它幀片。接著,在接收另一幀片之後,並且在等待其它幀片被接收時,解碼模塊105可開始解碼最近接收到的片。事實上,這在方法200中被描述,方法200包括解碼至少一個接收到的幀片同時等待至少一個附加幀片被接收的動作(動作220)。這一過程在圖5中進一步解說。

圖5包括解碼器501,其可以與圖1中的解碼模塊105相同或不同。解碼器501可具有先前接收的幀片503A並可能已經開始解碼它。此經解碼的幀片503A可被添加到幀505或可以以其他方式開始形成幀505。儘管示為形成幀505的底部,將理解經解碼的幀片503A可包括來自幀的基本上任何部分的幀數據,並可包括來自幀中的單個塊的幀數據,或可包括來自幀的不同部分的幀數據。然而,為了簡化的目的,圖5和6中的幀片被示為水平地疊在彼此之上。進入的幀片502B、502C和502D在圖5中被示為處於傳送中,並且還沒有被解碼器501接收到。然而,隨著這些幀片被接收,解碼器501可開始單獨地解碼它們。因此,所接收的幀片503A可被解碼同時等待幀片502B被接收。類似地,幀片503B可被解碼同時等待幀片502C被接收,幀片503C可被解碼同時等待幀片502D被接收,等等。以此方式,解碼器501可使用它當前擁有的幀數據來開始解碼過程。

幀片也可被無序地解碼。幀片通常通過有損網絡被傳遞,並且可使用不保證每個包安全傳送的協議(例如,UDP)來被傳遞。因此,幀片可能因各種原因被丟失或延誤。在一個示例中,幀片502C可在幀片502B之前被接收。在這樣的情況中,解碼器501可在它接收到幀片502B之前開始解碼幀片502C。接著,在接收幀片502B之際,它將被解碼被添加到幀505。最後,在接收到幀505的全部組件片之際,幀將被顯示在顯示器504上。顯示器可以是任何類型的監視器、電視機、平板或顯示裝置。幀505可以是一系列幀中的一個幀。例如,在流視頻或視頻遊戲情形中,數據流伺服器將可能每秒發送許多這樣的幀。這些幀將接著被順序顯示在顯示器504上以形成可被用戶觀看的運動圖片。

回到圖2,在指示幀不完整的至少一個條件發生之際,方法200包括合成一個或多個幀片以替代還在接收的至少一個附加幀片的動作(動作230)。條件可包括,例如,確定一個或多個幀片被丟失或延誤。條件監視模塊106可被配置來監視進入的幀片並確定幀片被丟失或相當大地延誤。在這樣確定之際,幀合成模塊107可合成缺失的幀片並將合成的數據插入幀以完成幀。

如圖6所示,經解碼的幀片可與經合成的幀片組合以形成幀。解碼器601如以上結合圖5描述的那樣接收幀片。如所示,幀607包括已解碼幀片605A。幀片605A可能在等待幀片602B、602C、602D、602E等等的同時已被解碼。圖1的條件監視模塊106可能已經確定了幀片604B被丟失或延誤,並且可能已經啟動幀合成模塊107(或合成器603)來合成幀片604B。經合成的數據可以各種方式被獲得,如以下將參考圖3進一步描述的。經合成的幀片604B可被插入幀607的其中實際幀片應當處在的(一個或多個)部分。解碼器601可繼續解碼幀片同時合成器正在合成其它幀片。因此,幀片602C可被接收並被解碼,導致經解碼的幀片605C。其它幀片,諸如602D和602E,也可被接收並解碼同時合成器正在合成用於缺失或延遲的幀的數據。

返回圖1,條件監視模塊106可確定指示幀111不完整的條件已經發生。這個條件可包括有關指定的最小閾值數量的幀片已經被接收的指示,指示幀片合成要發生。因此,例如,最小數量的幀片可被逐幀或逐幀系列地建立。一旦最小數量的幀片已經達到,則該幀可被認為能夠通過合成來校正。如此,幀包括足夠的接收到的數據以使得其餘幀片的重新創建(即合成)是可允許的。幀片的這個最小數量可被管理員、程式設計師或其它用戶設置。

在最小數量的幀片未被接收到的情況或合成不可能或不被希望(例如,將導致過多偽像)的情況中,計算機系統101可生成指示幀替代數據要被發送的指示112。至少在某些實施例中,幀替代數據是全幀(例如111)。指示112被發送到計算系統113並且它通過發送全幀111來響應。這個接收到的幀數據可被結合到現有幀(如果幀片被發送)或可被結合為全幀。

因此,如在圖2的方法200中所描述的,視頻幀信息可被用來確定在低級包丟失被檢測到時做什麼,並且在這樣的情況中,在數據缺失時最小化解碼等待時間和可視破壞。各實施例處理通過網絡進入的低級數據包,通過幀和幀片來跟蹤並分組數據包,並將分組後的幀片饋送到解碼模塊105同時等等其它幀數據包到達。如果來自幀片的數據包不能通過差錯糾正來恢復,部分幀片通過最小化可視破壞的合成數據來補償或替換,直至刷新可被執行(即,全幀111被發送)。這通過向不具有穩健的差錯隱藏的視頻解碼器補充有效數據視頻解碼器來進一步允許不具有穩健的差錯隱藏的視頻解碼器的使用。

事實上,在某些實施例中,計算機系統101可確定至少一個所接收到的幀片110包括前向糾錯數據。此前向糾錯(FEC)數據可接著被實現以修正幀片中的差錯並最終使用那個幀片來形成幀。在這樣的情況中,幀片可在前向糾錯發起之前被解碼。在其它實施例中,計算機系統101可被配置來等待具有未接收到的幀片的幀的FEC信息,同時繼續解碼完整的那些幀片。因此,解碼模塊105可繼續解碼幀片,即使在等待具有不完整或遭破壞(例如,歸因於丟失或被破壞的數據包)的那些幀片上的FEC數據時。那麼,當針對FEC信息與之對應的那個幀片的FEC數據被接收時,解碼模塊105可解碼經FEC糾正的幀片並將那個幀片與其它幀片組合來形成經解碼的幀109。該幀可接著被顯示在顯示器108上。

圖7示出了實現H.264格式的實施例。儘管該格式被使用,將理解其它格式也可連同類似技術被使用。幀數據包可跨多個幀被跟蹤。這導致跟蹤信息,其向計算機系統101指示,例如,更早的幀應當已經完成並且任何缺失的包將可能不再抵達而要被看成是遺落的包。圖7的H.264信道使用幀跟蹤器對象703A、703B和703C來跟蹤當前連同與幀相關聯的數據包一起行進的已知幀。這些數據包從視頻輸出信道701或其它流傳輸源(例如,實時傳輸協議(RTP)源)接收。幀片(或如在此使用的「片段」)可被片段跟蹤器對象704A、704B和704C跟蹤來跟蹤每個幀的行進中的各片段的每一個。這允許計算機系統101知曉新幀何時開始、先前幀有多完整、哪些片段是完整的或缺失的、幀何時需要前向糾錯,等等。

H.264信道702可從視頻輸出信道701接收原始RTP數據包(或另一協議的數據包)而無需任何預處理。基於時戳,幀數據包被饋送到現有幀跟蹤器對象(例如703A)(如果可用),或被饋送到新創建的一個跟蹤器對象(例如703C)。在由幀跟蹤器接收時,幀數據包的有效荷載被分析,並且如果幀數據包含有片段網絡抽象層單元(NALU)的開始,則新片段跟蹤器(例如704C)被創建並被添加到列表。如果幀數據包(例如RTP包708)在序列中在現有片段之後,則它被饋送到對應的片段跟蹤器。否則,幀數據包被保留在亂序(OOO)包列表(例如706)中,或如果其為重複則忽略。如果包含有前向糾錯(FEC)數據(例如707),則它要麼立刻被用來重新創建遺落的包(在一些情況下,當僅缺失一個包時),要麼被幀跟蹤器保留用於稍後當更多包已抵達時使用。

至少在某些實施例中,當幀數據包被饋送到片段跟蹤器(例如,704A)時,幀數據包可被假設為處於正確序列次序中。一旦片段的最後的幀數據包被接收到,則片段NALU(例如705)可被發送到視頻解碼器(例如,圖1的105)。

如果給定幀111的片段(例如幀片110)已經被完成並被發送到解碼器(例如105),則幀被認為是完整的(例如705)且信道可轉發它供顯示在顯示器108上。當幀和其片段的一個或多個在下一陣的數據開始抵達時不完整時,計算機系統101可確定幀數據已經被遺落,其不能通過差錯糾正來重新創建。在這樣的情況中,幀片段合成發生,以便隱藏由不完整幀數據導致的差錯。缺失的幀片段由幀合成模塊107來合成,使得解碼模塊105可完成處理幀。在圖7中描述的H.264實施例中,對於每個缺失的片段,經合成的片段NALU被構建,其從先前參考幀中複製像素。經合成的片段NALU被發送到解碼器105供解碼。後續完整片段也被發送以形成幀。這在其中幀數據不完整或被破壞的情況中產生了完整輸出幀。

如果被破壞的幀(即,具有經合成的部分的經解碼的幀109)不被任何後面的幀參考,那麼它可被顯示在顯示器108中並且接著下一幀常規處理。幀數據破壞可以是可見的,但是僅針對單個幀時間並將不傳播到後面的幀。或者,如果破壞或其它數據丟失足夠嚴重,則幀可被完全丟棄並且根本不顯示。如果被破壞的幀是參考幀(例如h.264格式中的P幀),則其破壞將被傳播到後面的幀(事實上,用作後面的幀的基礎的任何幀將使得其破壞被傳播)。在這樣的情況中,被破壞的幀被顯示但是通過視頻輸出701通知視頻源已經發生了數據丟失。這允許視頻提供者(例如,圖1的計算機系統113)立刻觸發刷新,(在某些情況中,在接下來的第兩幀或兩幀中)快速清除破壞。

現在轉向圖3,示出了用於解碼不完整視頻數據的方法300的流程圖。現在將頻繁地參考環境100的組件以及數據來描述方法300。

方法300包括,響應於接收幀的一個或多個片,解碼接收到的一個或多個片同時等待至少一個附加幀片被接收的動作(動作310)。例如,計算機系統101的通信模塊104A可接收幀片110,幀片110在組合時形成全幀111。在等待附加幀片被接收時,解碼模塊105可開始解碼它已經接收到的那些幀片,即使那些幀片不按順序。條件監視模塊106可檢測指示幀不完整的條件的發生,因為至少一個附加幀片還在被接收(動作320)。條件可以是對幀片的幀數據尚未被接收到或全幀片尚未被接收到的確定。附加地或替換地,條件可以是接收後續幀的至少一個片,或作出關於給定片的幀數據被破壞或以其他方式不可用的確定。

響應於此檢測動作,幀合成模塊107可合成幀片以替代還在接收的那些附加幀片(動作330)。合成可以以各種不同方式發生,然而,每個不同方法導致缺失或破壞的數據的合成或重新創建。在某些情況中,合成幀片以替代還在接收的那些幀片包括使用與先前幀相關聯的幀數據來合成幀片。在這樣的情況中,幀合成模塊可訪問並分析一個或多個先前完整的幀來確定像素在其中在當前幀中幀數據缺失或破壞的部分中看起來如何。使用這個信息,幀合成模塊107可創建與顯現在先前幀中的幀數據類似或相同的幀數據。

進一步,幀合成模塊107可考慮包括確定各幀之間的先前移動的各種因素。各幀之間的先前移動可以是關於數據應當如何在正在合成的幀中保持改變的指示。此外,幀合成模塊107可基於一個或多個先前的幀來確定相機正在平掃的方向,並可使用所確定的平掃方向來合成幀片。因此,如果相機被確定從左向右平掃,幀合成模塊107可確定先前在幀的右側的像素將漸漸地移近幀的左側。包括運動矢量的其它因素可被用來確定不規則路線的移動(與逐漸左到右或頂到底平掃不同)或提供關於當前幀(即,要被合成的幀)應當看起來像啥的其它指示。使用這個信息,幀合成模塊107可近似或以其他方式合成幀片的缺失的幀數據,該幀數據接著與先前解碼的幀片組合以形成全幀111。

圖4示出了用於解碼不完整視頻數據的替換方法(方法400)的流程圖。現在將頻繁地參考環境100的組件以及數據來描述方法400。

方法400包括訪問幀的至少一個片的動作,該幀包括一個或多個幀片,其中每個幀片可被單獨解碼(動作410)。解碼模塊105可訪問一個或多個接收到的幀片110並解碼那些幀片同時等待至少一個附加幀片被接收(動作420)。條件監視模塊106可確定至少一個附加幀片還在被接收,使得幀不完整(動作430)。接著,響應於該確定,幀合成模塊使用與至少一個先前幀相關聯的幀數據來合成幀片(動作440)。幀和幀片可分開地被跟蹤,如在圖7中一般地顯示的。通過跨多個幀跟蹤幀片數據包,計算機系統10可確定何時接收後續幀的數據包。當後續幀的數據包被接收到時,這可以是導致幀合成被發起的指示或條件。

在某些實施例中,幀片跟蹤和/或幀跟蹤可使用基於協議的序列號、使用遞增的時戳、或使用某個其它類型的標識符來實現。基於協議的序列號或遞增的時戳可被分配給每幀和/或每幀片。這允許幀或幀片被單獨跟蹤並且,因此,在新幀片或幀的幀數據已經被接收到時警告計算機系統101。例如,幀和/或幀片可被接收作為流化視頻遊戲的部分。經流化的視頻遊戲通常以高幀速率運行以確保用戶不體驗到滯後。在這樣的情形中,計算機系統101可使用基於協議的序列號或遞增的時戳以快速確定幀或幀片是否不完整,以及那個幀的各部分是否需要被合成。如果它是不完整的(例如,用來將幀片數據包與幀片和/或幀相關聯的時戳信息指示新幀正在被接收),幀合成模塊可立即開始合成缺失或破壞的幀數據。以此方式,幀可以被快速完成並發送到顯示器108用於向遊戲玩家顯示。

由此,提供了解碼不完整視頻數據的方法、系統和電腦程式產品。幀片可被解碼同時等待幀的其它片。此外,如果幀數據的任何部分被確定為缺失或破壞,幀的那個部分可被合成以近似缺失或破壞的數據可能看起來的那樣。

此處所描述的概念和特徵可以以其他特定形式實現,而不背離其精神或描述性的特徵。所描述的實施例在所有方面都應被認為僅是說明性而非限制性的。從而,本發明的範圍由所附權利要求書而非前述描述指示。落入權利要求書的等效方案的含義和範圍內的所有改變應被權利要求書的範圍所涵蓋。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀