相關申請
本申請要求保護2015年2月2日提交且題為“wirelessbandwidthreductionwithanintaonlyencoder”的美國臨時申請?zhí)?2/111,076以及2015年3月27日提交且題為“wirelessbandwidthreductionwithanintaonlyencoder”的美國專利申請?zhí)?4/671,794的權益,它們的內(nèi)容被整體明確地并入本文中。
背景技術:
視頻編碼器壓縮視頻信息使得可以通過給定帶寬發(fā)送更多信息。經(jīng)壓縮的信號然后可在顯示之前被傳輸至對該信號進行解碼或解壓縮的接收器。
一些以前的編碼器或者不降低無線帶寬或者采用復雜的視頻編碼器(其可以生成p宏塊并且使用包含以前解碼的像素的參考幀)。
其他常規(guī)編碼器或者需要經(jīng)由(例如需要os通知何時將不更新屏幕的)sw來監(jiān)視屏幕更新或者需要幀在其被編碼之前為靜態(tài)的知識以便節(jié)省功率。其他解決方案將傳入像素與以前解碼的圖像(參考幀)進行比較,因此需要高的存儲器帶寬以及附加功率。
還有其他常規(guī)編碼器通?;蛘邔λ幸曨l幀進行編碼,浪費了功率和帶寬,或者依賴于來自os/回放(playback)應用的信息以便知道被顯示的內(nèi)容的刷新速率是多少。進一步地,以前的解決方案通常主要以全屏視頻回放為目標。大多數(shù)以前的解決方案沒有考慮關于靜態(tài)視頻幀的信息。因此,可能浪費了對靜態(tài)視頻幀進行編碼的功率和無線帶寬。
附圖說明
在附圖中,本文中描述的材料被圖示作為示例并非作為限制。為了圖示的簡單和清楚,圖中圖示的元件不一定按比例繪制。例如,為了清楚,一些元件的尺寸可能被相對于其他元件放大。進一步地,在被認為適合的地方,參考標簽在各圖之中重復以指示對應或相似元件。
圖1是示例視頻處理系統(tǒng)的說明圖;
圖2a是示例視頻處理方案的說明圖;
圖2b是示例視頻處理方案的說明圖;
圖3是示例視頻處理方案的說明圖;
圖4是示例視頻處理方案的說明圖;
圖5是圖示了示例幀速率估計器的流程圖;
圖6是圖示了示例編譯碼(coding)過程的流程圖;
圖7提供了在操作中的示例視頻編譯碼系統(tǒng)和視頻編譯碼過程的說明圖;
圖8是示例視頻編譯碼系統(tǒng)的說明圖;
圖9是示例系統(tǒng)的說明圖;以及
圖10是全部根據(jù)本公開的至少一些實現(xiàn)而布置的示例系統(tǒng)的說明圖。
具體實施方式
雖然以下描述闡述了可顯現(xiàn)在例如比如片上系統(tǒng)(soc)架構的架構中的各種實現(xiàn),但是本文中描述的技術和/或布置的實現(xiàn)不限于特定架構和/或計算系統(tǒng)并且可通過用于類似目的的任何架構和/或計算系統(tǒng)來實現(xiàn)。例如,采用例如多個集成電路(ic)芯片和/或封裝的各種架構和/或各種計算設備和/或消費電子(ce)設備(諸如機頂盒、智能電話等)可以實現(xiàn)本文中描述的技術和/或布置。進一步地,雖然以下描述可能闡述了諸如邏輯實現(xiàn)、系統(tǒng)部件的類型和相互關系、邏輯劃分/集成選擇等的許多特定細節(jié),但是可在沒有這樣的特定細節(jié)的情況下實行所要求保護的主題。在其他實例中,諸如例如控制結(jié)構和全軟件指令序列之類的一些材料可能沒有被詳細示出以便不使本文中公開的材料模糊。
可以以硬件、固件、軟件或其任何組合來實現(xiàn)本文中公開的材料。本文中公開的材料也可被實現(xiàn)為存儲在機器可讀介質(zhì)上的指令,其可由一個或多個處理器來讀取和執(zhí)行。機器可讀介質(zhì)可包括用于存儲或傳輸以機器(例如計算設備)可讀的形式的信息的任何介質(zhì)和/或機構。例如,機器可讀介質(zhì)可包括只讀存儲器(rom);隨機存取存儲器(ram);磁盤存儲介質(zhì);光學存儲介質(zhì);閃存設備;電的、光學的、聲學的或其他形式的傳播信號(例如載波、紅外信號、數(shù)字信號等),以及其他。
在說明書中對“一個實現(xiàn)”、“實現(xiàn)”、“示例實現(xiàn)”等的引用指示所描述的實現(xiàn)可包括特定特征、結(jié)構或特性,但是每個實現(xiàn)可能不一定都包括所述特定特征、結(jié)構或特性。此外,這樣的短語不一定指的是同一實現(xiàn)。進一步地,當結(jié)合實現(xiàn)來描述特定特征、結(jié)構或特性時,主張結(jié)合無論是否在本文中明確描述的其他實現(xiàn)來產(chǎn)生這樣的特征、結(jié)構或特性在本領域技術人員的知識內(nèi)。
下面描述了包括用于編碼器中的無線帶寬(bw)降低的操作的系統(tǒng)、裝置、物品和方法。
如上面所描述的那樣,一些以前的編碼器或者不降低無線帶寬或者采用復雜的視頻編碼器(其可以生成p宏塊并且使用包含以前解碼的像素的參考幀)。
其他常規(guī)編碼器或者需要經(jīng)由(例如需要os通知何時將不更新屏幕的)sw來監(jiān)視屏幕更新或者需要幀在其被編碼之前為靜態(tài)的知識以便節(jié)省功率。其他解決方案將傳入像素與以前解碼的圖像(參考幀)進行比較,因此需要高的存儲器帶寬以及附加功率。
還有其他常規(guī)編碼器通常或者對所有視頻幀進行編碼,浪費了功率和帶寬,或者依賴于來自os/回放應用的信息以便知道被顯示的內(nèi)容的刷新速率是多少。進一步地,以前的解決方案通常主要以全屏視頻回放為目標。大多數(shù)以前的解決方案沒有考慮關于靜態(tài)視頻幀的信息。因此,可能浪費了對靜態(tài)視頻幀進行編碼的功率和無線帶寬。
如將在下面更詳細地描述的那樣,在本文中描述的一些實現(xiàn)中,編碼器可被設計成當僅幀內(nèi)編碼器(intraonlyencoder)被用于無線顯示時降低無線帶寬。一個示例是wigigwde。以前的解決方案或者不降低無線帶寬或者采用更復雜得多的視頻編碼器(其可以生成p宏塊并且使用包含以前解碼的像素的參考幀)。
在本文中描述的其他實現(xiàn)中,編碼器可被設計成降低用于無線顯示的視頻編碼器的編碼器功率消耗。這樣的實現(xiàn)可能能夠在編碼的內(nèi)容為靜態(tài)時節(jié)省功率和無線帶寬。這常常是諸如生產(chǎn)力工作(例如編輯文檔、發(fā)電子郵件)之類的工作負荷中的情況。
在本文中描述的其他實現(xiàn)中,編碼器可被設計成在屏幕的內(nèi)容有時為靜態(tài)的情況下降低無線顯示應用中的視頻編碼器功率消耗和無線傳輸帶寬。一個示例是視頻回放:雖然計算機屏幕正常被設置成以每秒60幀(fps)來刷新,但是視頻內(nèi)容使用更低的速率,例如30fps。
圖1是根據(jù)本公開的至少一些實現(xiàn)而布置的示例視頻編譯碼系統(tǒng)100的說明圖。在各種實現(xiàn)中,視頻編譯碼系統(tǒng)100可被配置成進行視頻編譯碼和/或根據(jù)一個或多個高級視頻編解碼器標準來實現(xiàn)視頻編解碼器。
如將在下面更詳細地描述的那樣,在本文中描述的一些實現(xiàn)中,視頻編譯碼系統(tǒng)100的編碼器可被設計成當僅幀內(nèi)編碼器被用于無線顯示時降低無線帶寬。一個示例是wigigwde。以前的解決方案或者不降低無線帶寬或者采用更復雜得多的視頻編碼器(其可以生成p宏塊并且使用包含以前解碼的像素的參考幀)。然而,這僅僅是一個示例,并且可結(jié)合本文中描述的技術來利用圖1中圖示的具有附加部件的較復雜的編碼器。
進一步地,在各種實施例中,根據(jù)本公開,視頻編譯碼系統(tǒng)100可被實現(xiàn)為圖像處理器、視頻處理器和/或媒體處理器的部分并且可進行幀內(nèi)預測、幀內(nèi)預測、預測編譯碼和/或類似物。
如本文中所使用的那樣,術語“編譯碼器”可指代編碼器和/或解碼器。類似地,如本文中所使用的那樣,術語“編譯碼”可指代經(jīng)由編碼器進行編碼和/或經(jīng)由解碼器進行解碼。例如,如本文中描述的視頻編碼器和視頻解碼器(例如參見圖9)可能都是能夠進行編譯碼的編譯碼器的示例。
在一些示例中,視頻編譯碼系統(tǒng)100可包括為了清楚起見而沒有在圖1中示出的附加項。例如,視頻編譯碼系統(tǒng)100可包括處理器、射頻類型(rf)收發(fā)器、顯示器和/或天線。進一步地,視頻編譯碼系統(tǒng)100可包括諸如揚聲器、麥克風、加速計、存儲器、路由器、網(wǎng)絡接口邏輯等的附加項,為了清楚起見其沒有被示出在圖1中。
在一些示例中,在視頻編譯碼系統(tǒng)100的操作期間,可以以視頻數(shù)據(jù)幀的形式將當前視頻信息提供給內(nèi)部位深增加模塊102。該當前視頻幀可在模塊104處被分成最大編譯碼單元(lcu)并且然后被傳遞到殘差預測模塊106。殘差預測模塊106的輸出可通過變換和量化模塊108而經(jīng)受已知的視頻變換和量化過程。變換和量化模塊108的輸出可被提供給熵編譯碼模塊109以及解量化和逆變換模塊110。熵編譯碼模塊109可輸出用于傳送到對應解碼器的經(jīng)熵編碼的位流111。
在視頻編譯碼系統(tǒng)100的內(nèi)部解碼環(huán)路中,解量化和逆變換模塊110可以實現(xiàn)變換和量化模塊108所進行的操作的逆轉(zhuǎn)以將殘差預測模塊106的輸出提供給殘差重建模塊112。本領域技術人員可認識到如本文中描述的變換和量化模塊以及解量化和逆變換模塊可采用縮放技術。殘差重建模塊112的輸出可被饋送回到殘差預測模塊106并且還可被提供給包括去塊濾波器114、樣本自適應偏移濾波器116、自適應環(huán)路濾波器118、緩沖器120、運動估計模塊122、運動補償模塊124和幀內(nèi)預測模塊126的環(huán)路。如圖1中所示,運動補償模塊124的輸出或幀內(nèi)預測模塊126的輸出二者與殘差預測模塊106的輸出組合來作為去塊濾波器114的輸入,并且與lcu分割模塊104的輸出的差充當殘差預測模塊106的輸入。
如將在下面更詳細地描述的那樣,在本文中描述的一些實現(xiàn)中,編碼器可被設計成當僅幀內(nèi)編碼器被用于無線顯示時降低無線帶寬。一個示例是wigigwde。以前的解決方案或者不降低無線帶寬或者采用更復雜得多的視頻編碼器(其可以生成p宏塊并且使用包含以前解碼的像素的參考幀)。
在本文中描述的其他實現(xiàn)中,編碼器可被設計成降低用于無線顯示的視頻編碼器的編碼器功率消耗。這樣的實現(xiàn)可能能夠在編碼的內(nèi)容為靜態(tài)時節(jié)省功率和無線帶寬。這常常是諸如生產(chǎn)力工作(例如編輯文檔、發(fā)電子郵件)之類的工作負荷中的情況。
在本文中描述的其他實現(xiàn)中,編碼器可被設計成在屏幕的內(nèi)容有時為靜態(tài)的情況下降低無線顯示應用中的視頻編碼器功率消耗和無線傳輸帶寬。一個示例是視頻回放:雖然計算機屏幕正常被設置成以每秒60幀(fps)來刷新,但是視頻內(nèi)容使用更低的速率,例如30fps。
如將在下面更詳細地討論的那樣,視頻編譯碼系統(tǒng)100可被用來執(zhí)行在下面結(jié)合圖2-5討論的各種功能中的一些或全部。
圖2a是根據(jù)本公開的至少一些實現(xiàn)而布置的示例視頻處理方案200的說明圖。在各種實現(xiàn)中,當僅幀內(nèi)編碼器被用于無線顯示時,視頻處理方案200可降低無線帶寬。一個示例是wigigwde。
如所圖示的那樣,可針對要被編碼的圖像的每個切片、經(jīng)由視頻處理方案200的切片散列計算模塊210來計算散列值。例如,可以使用crc64。給定切片的散列值可被存儲在以前的切片散列值存儲器220中。對于每個視頻幀,可經(jīng)由比較模塊230來將各個切片的新散列值與對應的舊切片散列值進行比較。如果它們匹配,則切片是相同的。如果不匹配,則切片是不同的。散列比較的結(jié)果(例如由比較模塊230至少部分地基于散列比較的切片替換決策)可被饋送給選擇器240。
并行地,使用僅幀內(nèi)編碼器250來對像素編碼。例如,視頻處理方案200可對僅幀內(nèi)編碼器進行輕微修改,其可與在宏塊(bm)級別處支持p_skip的更復雜得多的昂貴且功率消耗的視頻編碼器同等地為wde提供無線bw節(jié)省。編碼器中的附加部件可包括靜態(tài)切片檢測器并支持丟掉靜態(tài)切片或利用(例如包含所有p_skipmb的)p_skip切片替換它們。
如果切片的散列與來自以前的視頻幀的位于一處的切片的散列相同,則代替?zhèn)鬏斢删幋a器生成的幀內(nèi)切片,切片或者被全部丟掉或者經(jīng)由選擇器240被來自替換切片模塊260的p_skip切片替換。
在這樣的示例中,在解碼器側(cè)上,失去的/p_skip切片被來自以前的視頻幀的經(jīng)解碼的像素替換。
以前的解決方案或者不降低無線帶寬或者采用更復雜得多的視頻編碼器(其可以生成p宏塊并且使用包含以前解碼的像素的參考幀)。
作為替代,視頻處理方案200可在切片級別處檢測切片中的像素是否與以前的視頻幀相同。如果像素是相同的,則屬于該切片的所有分組或者被丟棄(而不是被傳輸)或者作為替代傳輸p_skip切片(它非常小)。因此,用于靜態(tài)內(nèi)容的無線帶寬被相當大地降低。
視頻處理方案200可實現(xiàn)與在宏塊級別處支持p_skip的更復雜得多的視頻編碼器粗略相同的無線帶寬節(jié)省。這通過將像素比較單元添加至非常簡單的僅幀內(nèi)編碼器來實現(xiàn)。作為一個示例,移動標記2012藍光視頻回放測試包含61%靜態(tài)宏塊行和67%靜態(tài)宏塊(mb)。因此,檢測靜態(tài)mb行且丟棄對應分組將導致節(jié)省與更復雜且昂貴的編碼器幾乎一樣多的無線帶寬,所述編碼器使用可以在mb級別處工作,但是需要更多功率來執(zhí)行視頻編碼。
wde規(guī)范將每個視頻幀劃分成許多切片。在每個mb行中存在1個和16個之間的切片。進一步地,wde規(guī)范將每個mb限制為或者幀內(nèi)mb或者p_skipmb(不存在具有非零殘差或非零運動向量的pmb)。因此,wde編碼器設計者可以使用或者僅幀內(nèi)編碼器或者也支持p_skipmb的編碼器。雖然開發(fā)僅幀內(nèi)編碼器更容易、更便宜且更快得多,但是在內(nèi)容為靜態(tài)的情況下它不高效。一個示例是辦公室生產(chǎn)力工作,其中屏幕的大部分保持靜態(tài)而其他被更新(例如鼠標運動)。在另一方面,開發(fā)在mb級別處支持p_skip的編碼器更復雜。這樣的編碼器使用包含以前解碼的圖像的參考幀。這樣的編碼器將新的圖像與參考幀進行比較,并且作出每mb的模式?jīng)Q策:編碼為幀內(nèi)mb或編碼為p_skipmb。這樣的設計是復雜的,消耗更多的功率,并且需要用于參考幀的昂貴存儲裝置。因為wde規(guī)范使用非常高的圖像質(zhì)量(用于無線對接應用),所以假設如果切片或mb被修改則編碼器將選擇使用幀內(nèi)編碼對經(jīng)修改的區(qū)域進行重新編碼可能是合理的。進一步地,在許多情況下,在mb級別處的重新編碼與在切片級別(其仍是子mb行級別)處的重新編碼之間的無線帶寬中的差異是小的。
因此,視頻處理方案200可被用在wigig無線soc中以便在采用簡單、便宜、低功率的僅幀內(nèi)視頻編碼器的同時顯著改進它們的視頻編碼器性能。
圖2b是根據(jù)本公開的至少一些實現(xiàn)而布置的示例視頻處理方案200的說明圖。在各種實現(xiàn)中,視頻處理方案200可包括與靜態(tài)切片檢測電路290結(jié)合的丟掉靜態(tài)切片控制邏輯280。
本文中描述的一些實現(xiàn)可向視頻編碼器添加hw,其檢測視頻切片是否為靜態(tài)。例如,丟掉靜態(tài)切片控制邏輯280可被用來在給定切片為靜態(tài)的情況下尋找x個連續(xù)視頻幀。
在所圖示的示例中,靜態(tài)切片檢測電路290可接收要被編碼的像素作為輸入。靜態(tài)切片檢測器290可經(jīng)由切片散列計算模塊210例如使用crc64來計算給定切片中的像素的散列值。給定切片的散列值可被存儲在以前的切片散列值存儲器220中。對于每個視頻切片,可經(jīng)由比較模塊230將新的散列值與舊的散列值進行比較。如果它們匹配,則切片是相同的。如果不匹配,則切片是不同的。散列比較的結(jié)果(例如切片靜態(tài)/非靜態(tài)指示)可被饋送給丟掉靜態(tài)切片控制邏輯280。
為了提高圖像質(zhì)量,丟掉靜態(tài)切片控制邏輯280可決定可以在切片為靜態(tài)的情況下在x個連續(xù)視頻幀之后將切片丟掉。這可以給予編碼器例如在場景改變之后提高圖像質(zhì)量的機會。還要注意,為了提高無線信道魯棒性,有可能偶爾生成并傳輸針對切片的幀內(nèi)刷新,甚至在它為靜態(tài)時。
圖3是根據(jù)本公開的至少一些實現(xiàn)而布置的示例視頻處理方案視頻處理方案300的說明圖。在各種實現(xiàn)中,視頻處理方案300可降低用于無線顯示的視頻編碼器350的編碼器功率消耗。這樣的實現(xiàn)可能能夠在編碼的內(nèi)容為靜態(tài)時節(jié)省功率和無線帶寬。這常常是諸如生產(chǎn)力工作(例如編輯文檔、發(fā)電子郵件)之類的工作負荷中的情況。
視頻處理方案300可向標準無線顯示視頻編碼器添加兩個部件。首先,靜態(tài)圖像檢測電路390和控制邏輯340(控制邏輯340上的/控制邏輯340的編碼器)可確定編碼器在下一視頻幀期間將為打開還是關閉,如圖3中所圖示的那樣。
例如,靜態(tài)圖像檢測單元390可接收像素并針對每個視頻幀經(jīng)由散列計算模塊310計算傳入像素的散列。散列函數(shù)的一個示例是crc64。計算出的散列值可被存儲在以前的幀散列值存儲器320中。當新的散列被計算時,經(jīng)由比較模塊330將其與(存儲在存儲器中的)以前的散列進行比較。如果散列值是相同的,則從比較模塊230向編碼器打開/關閉控制邏輯340提供靜態(tài)幀指示。
在該示例中,編碼器打開/關閉控制邏輯340可確定編碼器350在下一視頻幀期間將處于打開還是關閉。如上面所指出的那樣,視頻處理方案300的靜態(tài)幀檢測單元390可通過對像素值進行散列將新的視頻幀與以前的視頻幀進行比較。當經(jīng)由編碼器打開/關閉控制邏輯340檢測到x個相同視頻幀的序列時,編碼器350可被關閉??蓛H在圖像改變之后或者因為周期性的幀內(nèi)刷新經(jīng)由編碼器打開/關閉控制邏輯340再次打開編碼器350。將編碼器350完全關閉可以節(jié)省相當大的功率和無線帶寬。
在操作中,如果靜態(tài)圖像檢測單元290檢測到圖像不是靜態(tài)的,則編碼器將在下一視頻幀期間被打開。如果該圖像在x個連續(xù)視頻幀內(nèi)是靜態(tài)的,則編碼器350將被關閉直到檢測到圖像中的改變?yōu)橹?。x的值可以是應用相關的。較高的值幫助確保在編碼器被關閉之前通過無線鏈路傳輸了全視頻幀。這是因為同一圖像被發(fā)送若干次,幫助增加成功接收的概率。此外,一些編碼器隨著時間過去逐漸提高靜態(tài)圖像的質(zhì)量。因此在編碼器被關閉之前將同一圖像發(fā)送若干次也將提高質(zhì)量。為了確保編碼器和解碼器之間的時鐘同步被保持,并且為了提高系統(tǒng)魯棒性和確保不存在歸因于失去的分組的持續(xù)很久的可見偽像,編碼器打開/關閉控制邏輯340可觸發(fā)幀內(nèi)刷新,例如在圖像仍為靜態(tài)的同時周期性地打開編碼器。最終,當檢測到圖像中的改變時,編碼器350被再次打開。編碼器350可保持編碼直到檢測到下一x個靜態(tài)圖像序列為止。
要注意,在接收器側(cè)上,可針對沒有被編碼的視頻幀實現(xiàn)誤差隱藏。在該情況下,接收器可僅重新顯示沒被傳輸?shù)撵o態(tài)圖像。
以前的解決方案或者需要經(jīng)由(例如需要os通知何時將不更新屏幕的)sw來監(jiān)視屏幕更新或者需要幀在其被編碼之前為靜態(tài)的知識以便節(jié)省功率。其他解決方案將傳入像素與以前解碼的圖像(參考幀)進行比較,因此需要高的存儲器帶寬以及附加功率。
相比之下,圖3的實現(xiàn)不依靠來自sw的靜態(tài)通知,并且甚至在在將所有像素都呈現(xiàn)給編碼器之后完成靜態(tài)檢測時仍可以節(jié)省功率。
此外,本文中描述的一些實現(xiàn)可能是對依靠來自sw的靜態(tài)幀通知的改進,因為依靠來自sw的靜態(tài)幀通知可能并非在所有操作系統(tǒng)中可用,集成更復雜,并且可能不是可靠的(例如不能在壓縮電影的全屏回放期間檢測靜態(tài)視頻幀)。
進一步地,視頻處理方案300可能是對依靠在視頻幀開始時的靜態(tài)幀通知(例如通過顯示引擎的靜態(tài)幀通知)的改進,因為依靠在視頻幀開始時的靜態(tài)幀通知通常需要來自顯示引擎的專用接口,所述專用接口并非在所有系統(tǒng)中可用。此外,本文中描述的一些實現(xiàn)可能是自包含的,并且可能不依靠在顯示引擎中檢測靜態(tài)幀的能力。
視頻處理方案300可被利用作為wigig無線soc的部分,將用于商業(yè)應用中的無線對接作為目標。在這些用例中,已觀察到常常存在靜態(tài)視頻幀序列(例如在閱讀文檔時)。通過檢測到這樣的序列并且關閉視頻編碼器,wigig無線soc所消耗的平均功率消耗和無線帶寬可被顯著降低??稍跊]有任何sw干預并且沒有來自gpu的專用信令的情況下實現(xiàn)所有這一切,因此本文中描述的實現(xiàn)可能比常規(guī)解決方案更簡單。同時,編碼器可能能夠通過執(zhí)行周期性幀內(nèi)刷新(例如時不時對靜態(tài)幀進行編碼和傳輸)來維持無線鏈路上的魯棒圖像。
因此,視頻處理方案300可被用在wigig無線soc中以便針對諸如在pc上執(zhí)行生產(chǎn)力工作(例如編輯文檔)之類的情況顯著降低功率消耗和無線帶寬。這已經(jīng)在使用簡單且功率高效的編碼器、支持在wde標準中允許的僅幀內(nèi)編碼時被實現(xiàn)。
圖4是根據(jù)本公開的至少一些實現(xiàn)而布置的示例視頻處理方案400的說明圖。在各種實現(xiàn)中,視頻處理方案400可在屏幕的內(nèi)容有時為靜態(tài)的情況下降低無線顯示應用中的視頻編碼器功率消耗和無線傳輸帶寬。一個示例是視頻回放:雖然計算機屏幕正常被設置成以每秒60幀(fps)來刷新,但是視頻內(nèi)容使用更低的速率,例如30fps。
視頻處理方案400可包括以下模塊:靜態(tài)幀檢測器490、幀速率估計器控制邏輯440以及視頻編碼器450。視頻處理方案400可使用幀速率估計器控制邏輯440來檢測實際的幀更新模式(例如2個幀被更新,然后3個靜態(tài)幀),預測將來的模式,并且至少部分地基于所預測的將來的模式來打開/關閉視頻編碼器450。
例如,靜態(tài)幀檢測單元490可接收像素并且針對每個視頻幀經(jīng)由散列計算模塊410計算傳入像素的散列。散列函數(shù)的一個示例是crc64。計算出的幀散列值可被存儲在以前的幀散列值存儲器420中。當新的幀散列被計算時,經(jīng)由比較模塊430將其與(存儲在存儲器中的)以前的幀散列進行比較。如果散列值是相同的,則從比較模塊430向幀速率估計器控制邏輯440提供靜態(tài)幀指示。
在該示例中,可根據(jù)由幀速率估計器控制邏輯440確定的預測模式來打開/關閉編碼器450。如果模式改變,則這由幀速率估計器控制邏輯440檢測,并且編碼器450可保持打開(例如當將鼠標移動到全屏視頻回放頂部上時)。
進一步地,幀速率估計器控制邏輯440可被配置成在運行中學習新的模式。可以關于圖5在下面找到關于幀速率估計器控制邏輯440的更多細節(jié)。
視頻處理方案400的全部或部分可以被自包含在視頻編碼器450本身中,并且可能不需要來自外部sw和/或來自操作系統(tǒng)的幫助和/或提示,其可能不覆蓋幀速率可以被降低的所有情況。
以前的解決方案通?;蛘邔λ幸曨l幀進行編碼,浪費了功率和帶寬,或者依賴于來自os/回放應用的信息以便知道被顯示的內(nèi)容的刷新速率是多少。進一步地,以前的解決方案通常主要以全屏視頻回放為目標。大多數(shù)以前的解決方案沒有考慮關于靜態(tài)視頻幀的信息。因此,可能浪費了對靜態(tài)視頻幀進行編碼的功率和無線帶寬。
相反地,本文中描述的一些實現(xiàn)可向視頻編碼器添加hw,其檢測視頻幀是否為靜態(tài)。然后,幀速率估計器可被用來查找改變的視頻幀的模式(例如內(nèi)容在2個視頻幀中改變一次)。最后,視頻編碼器可被編程成根據(jù)所檢測到的模式被關閉。
大多數(shù)以前的解決方案沒有考慮關于靜態(tài)視頻幀的信息。因此,可能浪費了對靜態(tài)視頻幀進行編碼的功率和無線帶寬。其他以前的解決方案通常需要到編碼器的關于內(nèi)容類型以及該內(nèi)容的刷新速率的提示。一個示例在在以60fps刷新顯示器的計算機上全屏播放以24fps更新的電影時。
相反地,本文中描述的一些實現(xiàn)可能使圖形驅(qū)動器通知視頻編碼器屏幕將被以24fps更新,并且視頻編碼器將被相應地打開/關閉。一個更難的示例是包含一些動畫的網(wǎng)站,例如基于閃爍的商業(yè)廣告。難以預測這樣的內(nèi)容將被更新的幀速率,因此可針對每個幀打開編碼器。
圖5是圖示根據(jù)本公開的至少一些實現(xiàn)而布置的示例幀速率估計器440的圖。在各種實現(xiàn)中,可以以硬件、軟件或二者的組合來實現(xiàn)幀速率估計器440。
例如,幀速率估計器440可以基于以下構建塊:靜態(tài)幀檢測器490(其可以與幀速率估計器440分離或合并)、幀速率生成器模塊510、幀速率誤差估計器模塊520、幀速率控制器模塊530等和/或其組合。
在所圖示的示例中,靜態(tài)幀檢測器490可提供靜態(tài)幀指示符。例如,對于每個幀,指示可被提供作為輸入,聲明該幀與以前的幀類似還是不同。
在所圖示的示例中,幀速率生成器模塊510可能能夠生成以預先定義的粒度的在0和最大幀速率之間的可編程幀速率。
在所圖示的示例中,幀速率誤差估計器模塊520可能能夠估計在(來自靜態(tài)幀檢測器490)的傳入幀速率與由幀速率生成器模塊510生成的幀速率之間的相位和頻率中的誤差。
在所圖示的示例中,幀速率控制器模塊530可能能夠至少部分地基于從幀速率誤差估計器模塊520輸出的幀速率誤差估計來控制幀速率生成器模塊510。幀速率控制器模塊530還可執(zhí)行是否檢測到穩(wěn)定的降低的幀速率的判定,并且確定系統(tǒng)將在如下哪個模式下操作:最大幀速率還是降低的幀速率。
在一些實現(xiàn)中,幀速率估計器440可表現(xiàn)如下:
對于每個幀,幀速率誤差估計器520可檢查來自靜態(tài)幀檢測器490的靜態(tài)幀指示輸入與所生成的編碼器打開/關閉信號是否類似(活動的或不活動的,被分別表示為“1”或“0”)?;谠摖顩r,例如如果它們是類似的,則幀速率誤差可以是“1”,并且如果它們不是類似的,則幀速率誤差可以是“0”。
幀速率控制器530可使用幀速率誤差指示來測試是否存在穩(wěn)定的降低的幀速率。該功能的實現(xiàn)的一個示例是數(shù)字環(huán)路濾波器,其使用幀速率誤差指示作為輸入并且將頻率(幀速率)控制值輸出到幀速率生成器中。這樣的數(shù)字環(huán)路濾波器可以被實現(xiàn)為例如線性第一或第二階環(huán)路濾波器。另外地或替代地,非線性行為可以被引入該環(huán)路中。
幀速率控制器530內(nèi)的另一邏輯功能可以檢查在預先定義的時間窗期間的幀速率誤差輸入上的“1”的數(shù)目。如果“1”的數(shù)目低于某一界限(lock_value),則其意味著穩(wěn)定幀速率已經(jīng)被識別。在該狀態(tài)下,如果穩(wěn)定幀速率低于全幀速率,則可進入降低速率模式。
如果幀速率估計器控制邏輯440正在降低速率模式中操作,并且在預先定義的時間窗期間的幀速率誤差輸入超過預先定義的值(unlock_value),則其可能意味著幀速率已經(jīng)改變并且可能進入全速率模式,其中所有視頻幀被編碼。
編碼器(在這里沒有被圖示)可能具有附加的編碼器打開/關閉輸入,其控制下一視頻幀是否將被編碼(參見例如圖2中所描述的實現(xiàn))。這樣的附加的編碼器打開/關閉輸入可通過幀速率生成器模塊來饋送。當編碼器被關閉時,功率消耗可被降低并且可不傳輸分組/模板p_skip分組(其是非常小的,耗費非常小的功率和時間來生成)。這降低了功率消耗和無線帶寬。
因此,當對用于無線顯示的任何重復靜態(tài)/非靜態(tài)幀模式進行編碼時,視頻處理方案400(參見圖4)和/或幀速率估計器440可使得能實現(xiàn)節(jié)省功率和無線帶寬。一個重要的用例是利用幀速率的視頻回放,該幀速率低于無線顯示系統(tǒng)的刷新速率(例如電影以24fps,系統(tǒng)設置成以60fps來刷新)。在這樣的情況下,可以使用合并視頻處理方案400(參見圖4)和/或幀速率估計器440的編碼器來節(jié)省大量的功率和無線帶寬。
如將在下面更詳細地討論的那樣,視頻處理方案200(例如圖2a和/圖2b)、視頻處理方案300(例如圖3)和/或視頻處理方案400(例如圖4)可被用來執(zhí)行下面結(jié)合圖6和/或7所討論的各種功能中的一些或全部。
圖6是圖示根據(jù)本公開的至少一些實現(xiàn)而布置的示例過程600的流程圖。過程600可包括如由操作602等中的一個或多個圖示的一個或多個操作、功能或動作。
過程600可以在操作602“計算過去幀的至少一部分的散列值”處開始,在這里過去幀的至少一部分的散列值可被計算。例如,可經(jīng)由散列計算模塊至少部分地基于要被編碼的接收到的圖像來計算過去幀的至少一部分的散列值。
過程600可在操作604“存儲過去幀的散列值”處繼續(xù),在這里過去幀的至少一部分的散列值可被存儲。例如,可經(jīng)由散列值存儲器來存儲過去幀的至少一部分的散列值。
過程600可在操作606“計算當前幀的至少一部分的散列值”處繼續(xù),在這里當前幀的至少一部分的散列值可被計算。例如,可經(jīng)由散列計算模塊來計算當前幀的至少一部分的散列值。
過程600可在操作608“將當前幀的散列值與過去幀的散列值進行比較”處繼續(xù),在這里可將當前幀的至少一部分的散列值與過去幀的至少一部分的散列值進行比較。例如,可經(jīng)由比較模塊將當前幀的至少一部分的散列值與過去幀的至少一部分的散列值進行比較。
例如,代替存儲以前的視頻幀以便計算散列值,我們想避免存儲以前的視頻幀所需要的存儲器。作為替代,可能存在兩個散列存儲器:一個總是包含以前的視頻幀的散列的存儲器以及一個總是包含當前視頻幀的散列的存儲器。當新的當前視頻幀的最后像素被接收時,然后可比較兩個散列值(過去的和當前的)。此外,當下一幀到達時,當前視頻幀(其剛剛被接收到)的散列可被拷貝到用于以前的視頻幀的散列的存儲器,該過程再次開始,其中隨著下一幀被處理當前視頻幀的散列迭代地成為過去視頻幀的散列。
過程600可在操作610“至少部分地基于所比較的散列值來修改編碼操作以丟棄經(jīng)編碼的數(shù)據(jù)和/或關閉電源”處繼續(xù),在這里編碼操作可被修改以丟棄經(jīng)編碼的數(shù)據(jù)和/或關閉電源。例如,可經(jīng)由編碼器至少部分地基于當前幀的至少一部分與過去幀的所述至少一部分的散列值的比較來修改編碼操作以丟棄經(jīng)編碼的數(shù)據(jù)和/或關閉電源。
過程600可提供視頻編譯碼,諸如視頻編碼、解碼和/或位流傳輸技術,它們可被如本文中討論的編譯碼器系統(tǒng)采用。
可在本文中討論的實現(xiàn)的一個或多個示例中并且特別地在下面關于圖7來說明與過程600和本文中討論的其他過程有關的一些附加和/或替代細節(jié)。
圖7提供根據(jù)本公開的至少一些實現(xiàn)而布置的在操作中的示例視頻編譯碼系統(tǒng)800(為了更多細節(jié)參見例如圖8)和視頻編譯碼過程700的說明圖。在所圖示的實現(xiàn)中,過程700可包括如由動作710等中的一個或多個圖示的一個或多個操作、功能或動作。
作為非限制性示例,過程700將被在本文中參考包括圖1的編譯碼器100的示例視頻編譯碼系統(tǒng)800來描述,如下面在本文中關于圖8進一步討論的那樣。在各種示例中,可由包括編碼器和解碼器二者的系統(tǒng)或由具有采用編碼器(以及可選地采用解碼器)的一個系統(tǒng)和采用解碼器(以及可選地采用編碼器)的另一系統(tǒng)的分離系統(tǒng)來進行過程700。還要注意,如上面所討論的那樣,編碼器可包括采用本地解碼器作為編碼器系統(tǒng)的部分的本地解碼環(huán)路。
如所圖示的那樣,視頻編譯碼系統(tǒng)800(為了更多細節(jié)參見例如圖8)可包括邏輯模塊850。例如,邏輯模塊850可包括如關于本文中描述的系統(tǒng)或子系統(tǒng)中的任一個討論的任何模塊。例如,邏輯模塊850可包括靜態(tài)檢測器701、切片替換邏輯模塊702、丟掉靜態(tài)切片丟掉邏輯模塊704、靜態(tài)幀編碼器打開/關閉邏輯模塊706、幀模式編碼器打開/關閉邏輯模塊708和/或類似物。
過程700可在操作710“靜態(tài)切片檢測”處開始,在這里靜態(tài)切片可被檢測。例如,可經(jīng)由靜態(tài)檢測器701來檢測切片。
在一些實現(xiàn)中,可計算當前幀的切片的散列值并將其與過去幀的切片的以前計算且存儲的散列值進行比較。
類似地,過程700可在操作720“靜態(tài)幀檢測”處繼續(xù),在這里靜態(tài)幀可被檢測。例如,可經(jīng)由靜態(tài)檢測器701來檢測靜態(tài)幀。
在一些實現(xiàn)中,可計算整個當前幀的散列值并且將其與整個過去幀的以前計算且存儲的散列值進行比較。
在一些實現(xiàn)中,可經(jīng)由相同或類似模塊同時或幾乎同時地執(zhí)行操作710和720。
過程700可在操作730“編碼”處繼續(xù),在這里可與散列值的計算并行地將當前幀的像素編碼成經(jīng)編碼的數(shù)據(jù)流。例如,可經(jīng)由編碼器802與散列值的計算并行地將當前幀的像素編碼成經(jīng)編碼的數(shù)據(jù)流。
在一些實現(xiàn)中,編碼器802可以是補充有p_skip支持單元(未示出)的僅幀內(nèi)類型。例如,p_skip可被配置成向解碼器提供利用來自早期解碼的視頻幀的經(jīng)解碼的像素替換p_skip切片的指示。然而這僅是一個示例,并且可能結(jié)合過程700的全部或部分來使用其他的僅非幀內(nèi)類型的編碼器。
過程700可在操作740“在當前切片和替換切片之間進行選擇”處繼續(xù),在這里選擇可在當前切片和替換切片之間進行。例如,可經(jīng)由選擇器模塊(在這里被圖示為切片替換邏輯模塊702)在當前幀的幀內(nèi)編碼切片、替換p_skip切片和/或全部丟掉幀內(nèi)編碼切片之間進行選擇,其中選擇可至少部分地基于當前切片的切片散列值與過去切片的切片散列值的比較。
過程700可在操作750“識別連續(xù)靜態(tài)切片”處繼續(xù),在這里連續(xù)靜態(tài)切片可被識別。例如,可經(jīng)由靜態(tài)檢測器701來識別其中給定切片為靜態(tài)的預先設置的數(shù)目的連續(xù)視頻幀。這樣的識別可至少部分地基于當前切片的切片散列值與過去切片的切片散列值的比較。
過程700可在操作752“基于連續(xù)靜態(tài)切片而丟掉當前切片”處繼續(xù),在這里可至少部分地基于預先設置的數(shù)目的連續(xù)視頻幀的識別而丟掉當前切片。例如,可至少部分地基于其中給定切片為靜態(tài)的預先設置的數(shù)目的連續(xù)視頻幀的識別、經(jīng)由丟掉靜態(tài)切片控制邏輯704來丟掉當前切片。
過程700可在操作754“間歇地傳輸已丟掉的靜態(tài)切片的刷新”處繼續(xù),在這里已丟掉的靜態(tài)切片的刷新可被間歇地傳輸。例如,可經(jīng)由丟掉靜態(tài)切片控制邏輯704間歇地傳輸已丟掉的靜態(tài)切片的刷新,作為已丟掉的靜態(tài)切片的幀內(nèi)刷新。
過程700可在操作760“識別連續(xù)靜態(tài)幀”處繼續(xù),在這里連續(xù)靜態(tài)幀可被識別。例如,可經(jīng)由靜態(tài)檢測器701來識別其中給定幀為靜態(tài)的連續(xù)靜態(tài)幀。在這樣的實現(xiàn)中,識別可至少部分地基于當前整個幀散列值與過去整個幀散列值的比較。
過程700可在操作762“將開啟/關閉到編碼器的電源”處繼續(xù),在這里到編碼器的電源可被開啟/關閉。例如,可至少部分地基于其中給定幀為靜態(tài)的預先設置的數(shù)目的連續(xù)視頻幀的識別、經(jīng)由靜態(tài)幀編碼器打開/關閉控制邏輯706來關閉到編碼器802的電源。同樣地,可至少部分地基于周期性刷新和/或當前幀為非靜態(tài)的識別、經(jīng)由靜態(tài)幀編碼器打開/關閉控制邏輯706來開啟到編碼器802的電源。
過程700可在操作770“檢測當前幀模式”處繼續(xù),在這里當前幀模式可被預測。例如,可至少部分地基于當前整個幀散列值與過去整個幀散列值的比較、經(jīng)由幀速率估計器控制邏輯708來預測當前幀模式。
過程700可在操作772“預測將來幀模式”處繼續(xù),在這里將來幀模式可被預測。例如,可至少部分地基于所檢測到的當前幀更新模式、經(jīng)由幀速率估計器控制邏輯708來預測將來幀模式。
過程700可在操作774“開啟/關閉到編碼器的電源”處繼續(xù),在這里到編碼器的電源可被開啟/關閉。例如,可至少部分地基于所預測的幀更新模式、經(jīng)由幀速率估計器控制邏輯708來開啟/關閉到編碼器802的電源。
為了簡單,沒有在圖7中圖示關于幀速率估計器控制邏輯708的操作的附加細節(jié)和幀速率估計器控制邏輯708的細節(jié)(其被在上面關于圖5較詳細地描述了)。然而,在下面簡略地描述了這些方面中的一些而沒有編號。例如,幀速率估計器控制邏輯708可包括幀速率生成器模塊、幀速率誤差估計器模塊和/或幀速率控制器模塊。幀速率估計器控制邏輯的這樣的幀速率生成器模塊可被配置成生成以預先定義的粒度的在0和最大幀速率之間的可編程幀速率。幀速率估計器控制邏輯的這樣的幀速率誤差估計器模塊可被配置成估計來自比較模塊的傳入幀速率與由幀速率生成器模塊生成的幀速率之間的相位和頻率中的幀速率誤差。幀速率估計器控制邏輯的這樣的幀速率控制器模塊可被配置成至少部分地基于所估計的幀速率誤差來控制幀速率生成器模塊。進一步地,幀速率控制器模塊可被配置成響應于穩(wěn)定的降低的幀速率的檢測而確定是在最大幀速率模式還是降低的幀速率模式中操作。
可以以軟件、固件和/或硬件和/或其任何組合來實現(xiàn)本文中描述的過程和/或系統(tǒng)的各種部件。例如,可至少部分通過片上計算系統(tǒng)(soc)的硬件來提供本文中描述的過程和/或系統(tǒng)的各種部件,所述硬件諸如可在諸如例如智能電話之類的計算系統(tǒng)中找到。本領域技術人員可認識到本文中描述的系統(tǒng)可包括沒有在對應圖中描繪的附加部件。
如在本文中描述的任何實現(xiàn)中所使用的那樣,術語“模塊”可指代“部件”或“邏輯單元”,如這些術語在下面被描述的那樣。因此,術語“模塊”可指代被配置成提供本文中描述的功能的軟件邏輯、固件邏輯和/或硬件邏輯的任何組合。例如,本領域普通技術人員將領會到可經(jīng)由軟件部件來替代地實現(xiàn)由硬件和/或固件執(zhí)行的操作,所述軟件部件可被體現(xiàn)為軟件包、代碼和/或指令集,并且還領會到邏輯單元還可利用軟件的一部分來實現(xiàn)其功能。
如本文中描述的任何實現(xiàn)中所使用的那樣,術語“部件”指代被配置成提供本文中描述的功能的軟件邏輯和/或固件邏輯的任何組合。軟件邏輯可被體現(xiàn)為軟件包、代碼和/或指令集,和/或存儲由可編程電路執(zhí)行的指令的固件。部件可全體或單獨地被體現(xiàn)為更大系統(tǒng)(例如集成電路(ic)、片上系統(tǒng)(soc)等)的部分以用于實現(xiàn)。
如本文中描述的任何實現(xiàn)中所使用的那樣,術語“邏輯單元”指代被配置成提供本文中描述的功能的固件邏輯和/或硬件邏輯的任何組合。如本文中描述的任何實現(xiàn)中所使用的“硬件”可例如單獨地或任何組合地包括硬接線電路、可編程電路、狀態(tài)機電路和/或存儲由可編程電路執(zhí)行的指令的固件。邏輯單元可全體或單獨地體現(xiàn)為形成更大系統(tǒng)(例如集成電路(ic)、片上系統(tǒng)(soc)等)的部分的電路。例如,邏輯單元可被體現(xiàn)在用于實現(xiàn)本文中討論的系統(tǒng)的固件或硬件的邏輯電路中。進一步地,本領域普通技術人員將領會到,由硬件和/或固件執(zhí)行的操作也可利用軟件的一部分來實現(xiàn)邏輯單元的功能。
此外,可響應于由一個或多個計算機程序產(chǎn)品所提供的指令來進行本文中描述的過程的塊中的任何一個或多個。這樣的程序產(chǎn)品可包括提供指令的信號承載介質(zhì),所述指令當被例如處理器執(zhí)行時可提供本文中描述的功能??梢砸匀魏涡问降挠嬎銠C可讀介質(zhì)來提供計算機程序產(chǎn)品。因此,例如,包括一個或多個處理器核的處理器可響應于由計算機可讀介質(zhì)傳達給處理器的指令而進行一個或多個操作。
圖8是根據(jù)本公開的至少一些實現(xiàn)而布置的示例視頻編譯碼系統(tǒng)800的說明圖。在所圖示的實現(xiàn)中,雖然視頻編譯碼系統(tǒng)800被圖示有視頻編碼器802和視頻解碼器804二者,但是在各種示例中視頻編譯碼系統(tǒng)800可僅包括視頻編碼器802或僅包括視頻解碼器804。視頻編譯碼系統(tǒng)800(在各種示例中其可僅包括視頻編碼器802或僅包括視頻解碼器804)可包括(多個)成像設備801、天線803a和803b、一個或多個處理器806、一個或多個存儲器存儲裝置808和/或顯示設備810。如所圖示的那樣,(多個)成像設備801、天線803a和803b、視頻編碼器802、視頻解碼器804、(多個)處理器806、(多個)存儲器存儲裝置808和/或顯示設備810可能能夠彼此通信。
在一些實現(xiàn)中,視頻編譯碼系統(tǒng)800可包括對應的天線803a(在編碼器側(cè)上)和803b(在解碼器側(cè)上)。例如,天線803a和/或803b可被配置成傳輸或接收例如視頻數(shù)據(jù)的經(jīng)編碼的位流。(多個)處理器806可以是任何類型的處理器和/或處理單元。例如,(多個)處理器806可包括不同的中央處理單元、不同的圖形處理單元、集成片上系統(tǒng)(soc)架構等和/或其組合。此外,(多個)存儲器存儲裝置808可以是任何類型的存儲器。例如,(多個)存儲器存儲裝置808可以是易失性存儲器(例如靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)等)或非易失性存儲器(例如閃存等)等。在非限制性示例中,(多個)存儲器存儲裝置808可以由高速緩沖存儲器來實現(xiàn)。進一步地,在一些實現(xiàn)中,視頻編譯碼系統(tǒng)800可包括顯示設備810。顯示設備810可被配置成呈現(xiàn)視頻數(shù)據(jù)。
如所示的那樣,在一些示例中,視頻編譯碼系統(tǒng)800可包括邏輯模塊850。雖然被圖示為與視頻編碼器802相關聯(lián),但是視頻解碼器804可類似地與和所圖示的邏輯模塊850相同和/或類似的邏輯模塊相關聯(lián)。相應地,視頻編碼器802可包括邏輯模塊850的全部或各部分。例如,(多個)成像設備801和視頻編碼器802可能能夠彼此通信和/或與和邏輯模塊850相同和/或類似的邏輯模塊通信。類似地,視頻解碼器804可包括與邏輯模塊850相同和/或類似的邏輯模塊。例如,天線803、視頻解碼器804、(多個)處理器806、(多個)存儲器存儲裝置808和/或顯示器810可能能夠彼此通信和/或與邏輯模塊850的部分通信。
在一些實現(xiàn)中,邏輯模塊850可體現(xiàn)如關于本文中描述的任何系統(tǒng)或子系統(tǒng)討論的各種模塊。在各種實施例中,邏輯模塊850中的一些可以以硬件來實現(xiàn),而軟件可以實現(xiàn)其他邏輯模塊。例如,在一些實施例中,邏輯模塊850中的一些可由專用集成電路(asic)邏輯來實現(xiàn),而其他邏輯模塊可通過由諸如處理器806之類的邏輯所執(zhí)行的軟件指令來提供。然而,本公開不限于該點上并且可通過硬件、固件和/或軟件的任何組合來實現(xiàn)邏輯模塊850中的一些。
例如,邏輯模塊850可包括切片替換邏輯模塊702、丟掉靜態(tài)切片丟掉邏輯模塊704、靜態(tài)幀編碼器打開/關閉邏輯模塊706、幀模式編碼器打開/關閉邏輯模塊708和/或被配置成實現(xiàn)本文中描述的實現(xiàn)中的一個或多個的操作的類似物。
圖9是根據(jù)本公開的至少一些實現(xiàn)而布置的示例系統(tǒng)900的說明圖。在各種實現(xiàn)中,系統(tǒng)900可以是媒體系統(tǒng),但是系統(tǒng)900不被限于該背景。例如,系統(tǒng)900可被合并到個人計算機(pc)、膝上型計算機、超級膝上型計算機、平板、觸摸板、便攜式計算機、手持計算機、掌上計算機、個人數(shù)字助理(pda)、蜂窩電話、結(jié)合蜂窩電話/pda、電視、智能設備(例如智能電話、智能平板或智能電視)、移動互聯(lián)網(wǎng)設備(mid)、消息傳送設備、數(shù)據(jù)傳送設備、相機(例如傻瓜相機、超級變焦相機、數(shù)碼單鏡頭反光(dslr)相機)等中。
在各種實現(xiàn)中,系統(tǒng)900包括耦合至顯示器920的平臺902。平臺902可從諸如(多個)內(nèi)容服務設備930或(多個)內(nèi)容遞送設備940之類的內(nèi)容設備或者其他類似的內(nèi)容源接收內(nèi)容。包括一個或多個導航特征的導航控制器950可被用來與例如平臺902和/或顯示器920交互。在下面更詳細地描述這些部件中的每個。
在各種實現(xiàn)中,平臺902可包括芯片組905、處理器910、存儲器912、天線913、存儲裝置914、圖形子系統(tǒng)915、應用916和/或無線電裝置(radio)918的任何組合。芯片組905可提供處理器910、存儲器912、存儲裝置914、圖形子系統(tǒng)915、應用916和/或無線電裝置918之間的互相通信。例如,芯片組905可包括能夠提供與存儲裝置914的互相通信的存儲適配器(未被描繪)。
處理器910可被實現(xiàn)為復雜指令集計算機(cisc)或精簡指令集計算機(risc)處理器、x86指令集兼容處理器、多核或任何其他微處理器或中央處理單元(cpu)。在各種實現(xiàn)中,處理器910可以是(多個)雙核處理器、(多個)雙核移動處理器等。
存儲器912可以被實現(xiàn)為易失性存儲器設備,諸如但不限于隨機存取存儲器(ram)、動態(tài)隨機存取存儲器(dram)或靜態(tài)ram(sram)。
存儲裝置914可被實現(xiàn)為非易失性存儲設備,諸如但不限于磁盤驅(qū)動器、光盤驅(qū)動器、磁帶驅(qū)動器、內(nèi)部存儲設備、附接存儲設備、閃存、電池備份sdram(同步dram)和/或網(wǎng)絡可訪問存儲裝置設備。在各種實現(xiàn)中,當例如多個硬件驅(qū)動器被包括時,存儲裝置914可包括用來增加對有價值的數(shù)字媒體的存儲性能增強保護的技術。
圖形子系統(tǒng)915可執(zhí)行諸如用于顯示的靜止攝影或視頻之類的圖像的處理。圖形子系統(tǒng)915可以是例如圖形處理單元(gpu)或視覺處理單元(vpu)。模擬或數(shù)字接口可被用來通信地耦合圖形子系統(tǒng)915和顯示器920。例如,該接口可以是高清晰度多媒體接口、顯示端口、無線hdmi和/或無線hd兼容技術中的任一個。圖形子系統(tǒng)915可被集成在處理器910或芯片組905中。在一些實現(xiàn)中,圖形子系統(tǒng)915可以是通信地耦合至芯片組905的獨立設備。
可在各種硬件架構中實現(xiàn)本文中描述的圖形和/或視頻處理技術。例如,圖形和/或視頻功能可被集成在芯片組內(nèi)。替代地,可使用分立的圖形和/或視頻處理器。作為又一實現(xiàn),可通過通用處理器(包括多核處理器)來提供圖形和/或視頻功能。在其他實施例中,可在消費類電子設備中實現(xiàn)所述功能。
無線電裝置918可包括能夠使用各種適合的無線通信技術來傳輸和接收信號的一個或多個無線電裝置。這樣的技術可涉及跨一個或多個無線網(wǎng)絡的通信。示例無線網(wǎng)絡包括(但不限于)無線局域網(wǎng)(wlan)、無線個域網(wǎng)(wpan)、無線城域網(wǎng)(wman)、蜂窩網(wǎng)以及衛(wèi)星網(wǎng)。在跨這樣的網(wǎng)絡進行通信時,無線電裝置918可根據(jù)任何版本的一個或多個可適用標準來操作。
在各種實現(xiàn)中,顯示器920可包括任何電視類型監(jiān)視器或顯示器。顯示器920可包括例如計算機顯示屏、觸摸屏顯示器、視頻監(jiān)視器、像電視的設備和/或電視。顯示器920可以是數(shù)字和/或模擬的。在各種實現(xiàn)中,顯示器920可以是全息顯示器。而且,顯示器920可以是可接收視覺投影的透明表面。這樣的投影可傳達各種形式的信息、圖像和/或?qū)ο蟆@?,這樣的投影可以是用于移動增強現(xiàn)實(mar)應用的視覺覆蓋。在一個或多個軟件應用916的控制下,平臺902可以在顯示器920上顯示用戶界面922。
在各種實現(xiàn)中,(多個)內(nèi)容服務設備930可通過任何國家的、國際的和/或獨立的服務來托管并且因此經(jīng)由例如因特網(wǎng)對平臺902而言是可訪問的。(多個)內(nèi)容服務設備930可被耦合至平臺902和/或顯示器920。平臺902和/或(多個)內(nèi)容服務設備930可被耦合至網(wǎng)絡960以向和從網(wǎng)絡960傳送(例如發(fā)送和/或接收)媒體信息。(多個)內(nèi)容遞送設備940也可被耦合至平臺902和/或顯示器920。
在各種實現(xiàn)中,(多個)內(nèi)容服務設備930可包括有線電視盒、個人計算機、網(wǎng)絡、電話、能夠遞送數(shù)字信息和/或內(nèi)容的因特網(wǎng)使能設備或器具,以及能夠經(jīng)由網(wǎng)絡960或者直接地在內(nèi)容提供者與平臺902和/或顯示器920之間單向或雙向地傳送內(nèi)容的任何其他類似設備。將領會到,可經(jīng)由網(wǎng)絡960單向和/或雙向地向和從系統(tǒng)900中的部件和內(nèi)容提供者中的任一個傳送內(nèi)容。內(nèi)容的示例可包括任何媒體信息,包括例如視頻、音樂、醫(yī)療和游戲信息等。
(多個)內(nèi)容服務設備930可接收內(nèi)容,諸如包括媒體信息、數(shù)字信息和/或其他內(nèi)容的有線電視節(jié)目。內(nèi)容提供者的示例可包括任何有線或衛(wèi)星電視或者無線電或因特網(wǎng)內(nèi)容提供者。所提供的示例不意味著以任何方式限制根據(jù)本公開的實現(xiàn)。
在各種實現(xiàn)中,平臺902可從具有一個或多個導航特征的導航控制器950接收控制信號。例如,控制器950的導航特征可被用來與用戶界面922交互。在各種實施例中,導航控制器950可以是定點設備,其可以是允許用戶將空間(例如連續(xù)且多維)數(shù)據(jù)輸入到計算機中的計算機硬件部件(具體地,人性化接口設備)。諸如圖形用戶界面(gui)和電視及監(jiān)視器之類的許多系統(tǒng)允許用戶使用物理手勢來控制數(shù)據(jù)和向計算機或電視提供數(shù)據(jù)。
控制器950的導航特征的移動可通過指針、光標、聚焦環(huán)或顯示在顯示器上的其他視覺指示器的移動被復制在顯示器(例如顯示器920)上。例如,在軟件應用916的控制下,位于導航控制器950上的導航特征可被映射到顯示在用戶界面922上的視覺導航特征。在各種實施例中,控制器950可能不是分離的部件,而是可被集成到平臺902和/或顯示器920中。然而,本公開不限于本文中所示或所描述的元件或背景下。
在各種實現(xiàn)中,驅(qū)動器(未被示出)可包括使得用戶能夠例如在初始啟動之后、在被使能時利用按鈕的觸摸來立即打開和關閉平臺902(比如電視)的技術。程序邏輯可允許平臺902將內(nèi)容流式傳輸至媒體適配器或其他(多個)內(nèi)容服務設備930或(多個)內(nèi)容遞送設備940,甚至當平臺被“關閉”時。此外,芯片組905可包括支持例如(5.1)環(huán)繞聲音音頻和/或高清晰度(7.1)環(huán)繞聲音音頻的硬件和/或軟件。驅(qū)動器可包括用于集成圖形平臺的圖形驅(qū)動器。在各種實施例中,圖形驅(qū)動器可包括外圍部件互連(pci)express圖形卡。
在各種實現(xiàn)中,系統(tǒng)900中示出的部件中的任何一個或多個可被集成。例如,平臺902和(多個)內(nèi)容服務設備930可被集成,或者平臺902和(多個)內(nèi)容遞送設備940可被集成,或者例如平臺902、(多個)內(nèi)容服務設備930和(多個)內(nèi)容遞送設備940可被集成。在各種實施例中,平臺902和顯示器920可以是集成單元。例如,顯示器920和(多個)內(nèi)容服務設備930可被集成,或者顯示器920和(多個)內(nèi)容遞送設備940可被集成。這些示例不意味著限制本公開。
在各種實施例中,系統(tǒng)900可以被實現(xiàn)為無線系統(tǒng)、有線系統(tǒng)或二者的組合。當被實現(xiàn)為無線系統(tǒng)時,系統(tǒng)900可包括適于通過無線共享介質(zhì)進行通信的部件和接口,諸如一個或多個天線、發(fā)射器、接收器、收發(fā)器、放大器、濾波器、控制邏輯等。無線共享介質(zhì)的示例可包括無線頻譜的部分,諸如rf頻譜等。當被實現(xiàn)為有線系統(tǒng)時,系統(tǒng)900可包括適于通過有線通信介質(zhì)進行通信的部件和接口,諸如輸入/輸出(i/o)適配器、連接i/o適配器與對應的有線通信介質(zhì)的物理連接器、網(wǎng)絡接口卡(nic)、盤控制器、視頻控制器、音頻控制器等。有線通信介質(zhì)的示例可包括電線、電纜、金屬導線、印刷電路板(pcb)、背板、交換結(jié)構、半導體材料、雙絞線、同軸電纜、光纖等。
平臺902可建立一個或多個邏輯或物理通道來傳送信息。信息可包括媒體信息和控制信息。媒體信息可指代表示打算用于用戶的內(nèi)容的任何數(shù)據(jù)。內(nèi)容的示例可包括例如來自語音會話、語音會議、流式傳輸?shù)囊曨l、電子郵件(“電郵”)消息、語音郵件消息、字母數(shù)字符號、圖形、圖像、視頻、文本等的數(shù)據(jù)。來自語音會話的數(shù)據(jù)可以是例如話語信息、靜默時段、背景噪聲、舒適噪聲、音調(diào)等??刂菩畔⒖芍复硎敬蛩阌糜谧詣踊到y(tǒng)的命令、指令或控制字的任何數(shù)據(jù)。例如,控制信息可被用來通過系統(tǒng)來路由媒體信息或者指示節(jié)點以預定方式處理媒體信息。然而,實施例不限于圖9中所示或所描述的元件或背景下。
如上面所描述的那樣,系統(tǒng)900可以以變化的物理樣式或形狀因子來體現(xiàn)。圖10圖示了可在其中體現(xiàn)系統(tǒng)1000的小形狀因子設備1000的實現(xiàn)。在各種實施例中,例如,設備1000可被實現(xiàn)為具有無線能力的移動計算設備。移動計算設備可指代具有例如處理系統(tǒng)和移動電源或電力供應(諸如一個或多個電池)的任何設備。
如上所描述的那樣,移動計算設備的示例可包括個人計算機(pc)、膝上型計算機、超級膝上型計算機、平板、觸摸板、便攜式計算機、手持計算機、掌上計算機、個人數(shù)字助理(pda)、蜂窩電話、結(jié)合蜂窩電話/pda、電視、智能設備(例如智能電話、智能平板或智能電視)、移動互聯(lián)網(wǎng)設備(mid)、消息傳送設備、數(shù)據(jù)通信設備、相機(例如傻瓜相機、超級變焦相機、數(shù)碼單鏡頭反光(dslr)相機)等。
移動計算設備的示例還可包括被布置成由人穿戴的計算機,諸如手腕計算機、手指計算機、戒指計算機、眼鏡計算機、皮帶夾計算機、臂帶計算機、鞋計算機、衣服計算機以及其他可穿戴計算機。在各種實施例中,例如,移動計算設備可被實現(xiàn)為能夠執(zhí)行計算機應用、以及語音通信和/或數(shù)據(jù)通信的智能電話。雖然一些實施例可被利用實現(xiàn)為例如智能電話的移動計算設備來描述,但是可領會到,也可使用其他無線移動計算設備來實現(xiàn)其他實施例。實施例不限于該背景下。
如圖10中所示的那樣,設備1000可包括外殼1002、可包括用戶界面1010的顯示器1004、輸入/輸出(i/o)設備1006和天線1008。設備1000還可包括導航特征1012。顯示器1004可包括用于顯示適于移動計算設備的信息的任何適合的顯示單元。i/o設備1006可包括用于將信息輸入到移動計算設備中的任何適合的i/o設備。i/o設備1006的示例可包括字母數(shù)字鍵盤、數(shù)字小鍵盤、觸摸板、輸入鍵、按鈕、開關、翹板開關、麥克風、揚聲器、語音識別設備和軟件、圖像傳感器等。還可經(jīng)由麥克風(未被示出)將信息輸入到設備1000中。這樣的信息可通過語音識別設備(未被示出)來數(shù)字化。實施例不限于該背景下。
可使用硬件元件、軟件元件或二者的組合來實現(xiàn)各種實施例。硬件元件的示例可包括處理器、微處理器、電路、電路元件(例如晶體管、電阻器、電容器、電感器等)、集成電路、專用集成電路(asic)、可編程邏輯器件(pld)、數(shù)字信號處理器(dsp)、現(xiàn)場可編程門陣列(fpga)、邏輯門、寄存器、半導體器件、芯片、微芯片、芯片組等。軟件的示例可包括軟件部件、程序、應用、計算機程序、應用程序、系統(tǒng)程序、機器程序、操作系統(tǒng)軟件、中間件、固件、軟件模塊、例程、子例程、函數(shù)、方法、過程、軟件接口、應用程序接口(api)、指令集、計算代碼、計算機代碼、代碼段、計算機代碼段、字、數(shù)值、符號或其任何組合。確定實施例是否使用硬件元件和/或軟件元件來實現(xiàn)可根據(jù)任何數(shù)目的因素而變化,所述因素諸如期望的計算速率、功率級、熱耐受性、處理周期預算、輸入數(shù)據(jù)速率、輸出數(shù)據(jù)速率、存儲器資源、數(shù)據(jù)總線速度以及其他設計或性能約束。
此外,可響應于由一個或多個計算機程序產(chǎn)品提供的指令來進行本文中描述的操作中的任何一個或多個。這樣的程序產(chǎn)品可包括提供指令的信號承載介質(zhì),所述指令當被例如處理器執(zhí)行時可提供本文中描述的功能??梢砸匀魏涡问降囊粋€或多個機器可讀介質(zhì)來提供計算機程序產(chǎn)品。因此,例如,包括一個或多個處理器核的處理器可響應于由一個或多個機器可讀介質(zhì)傳達給處理器的程序代碼和/或指令或指令集而進行本文中的示例過程的操作中的一個或多個。一般地,機器可讀介質(zhì)可以傳達以使得本文中描述的設備和/或系統(tǒng)中的任一個實現(xiàn)如本文中討論的系統(tǒng)的至少部分的程序代碼和/或指令或指令集的形式的軟件。
雖然已經(jīng)參考各種實現(xiàn)描述了本文中闡述的某些特征,但是本說明書不意圖在限制的意義上來解釋。因此,本文中描述的實現(xiàn)的各種修改以及對本公開所屬領域技術人員而言顯而易見的其他實現(xiàn)被認為處于本公開的精神和范圍內(nèi)。
以下示例屬于進一步的實施例。
在一個示例中,一種用于編碼器中的無線帶寬降低的計算機實現(xiàn)方法可包括經(jīng)由散列計算模塊至少部分地基于要被編碼的接收到的圖像來計算過去幀的至少一部分的散列值。散列值存儲器可存儲過去幀的至少一部分的散列值。散列計算模塊可計算當前幀的至少一部分的散列值。比較模塊可將當前幀的至少一部分與過去幀的所述至少一部分的散列值進行比較。編碼器可至少部分地基于當前幀的至少一部分與過去幀的所述至少一部分的散列值的比較來修改編碼操作以丟棄經(jīng)編碼的數(shù)據(jù)和/或關閉電源。
在另一示例中,在用于編碼器中的無線帶寬降低的計算機實現(xiàn)方法中,當前幀的至少一部分與過去幀的所述至少一部分的散列值的比較可包括切片散列值的比較以及整個幀散列值的比較。修改編碼操作可進一步包括:經(jīng)由編碼器與當前幀的切片的散列值的計算并行地將當前幀的像素編碼成經(jīng)編碼的數(shù)據(jù)流,其中編碼器是補充有p_skip支持單元的僅幀內(nèi)類型編碼器,其中p_skip被配置成向解碼器提供利用來自早期解碼的視頻幀的經(jīng)解碼的像素來替換p_skip切片的指示。選擇器模塊可在當前幀的幀內(nèi)編碼切片、替換p_skip切片和/或全部丟掉幀內(nèi)編碼切片之間進行選擇,其中選擇至少部分地基于當前切片的切片散列值與過去切片的切片散列值的比較。比較模塊可識別其中給定切片為靜態(tài)的預先設置的數(shù)目的連續(xù)視頻幀,其中識別至少部分地基于當前切片的切片散列值與過去切片的切片散列值的比較。丟掉靜態(tài)切片控制邏輯可至少部分地基于其中給定切片為靜態(tài)的預先設置的數(shù)目的連續(xù)視頻幀的識別來從經(jīng)編碼的數(shù)據(jù)流丟掉當前切片。丟掉靜態(tài)切片控制邏輯可間歇地傳輸編碼像素,作為已丟掉的靜態(tài)切片的幀內(nèi)刷新。比較模塊可識別其中給定幀為靜態(tài)的預先設置的數(shù)目的連續(xù)視頻幀,其中識別至少部分地基于當前整個幀散列值與過去整個幀散列值的比較。編碼器打開/關閉控制邏輯可至少部分地基于其中給定幀為靜態(tài)的預先設置的數(shù)目的連續(xù)視頻幀的識別來關閉到編碼器的電源。編碼器打開/關閉控制邏輯可至少部分地基于周期性刷新和/或當前幀為非靜態(tài)的識別來開啟到編碼器的電源。幀速率估計器控制邏輯可至少部分地基于當前整個幀散列值與過去整個幀散列值的比較來檢測當前幀更新模式。幀速率估計器控制邏輯可至少部分地基于所檢測到的當前幀更新模式來預測未來幀更新模式。幀速率估計器控制邏輯可至少部分地基于所預測的幀更新模式來開啟/關閉到編碼器的電源。幀速率估計器控制邏輯的操作可進一步包括以下:經(jīng)由幀速率估計器控制邏輯的幀速率生成器模塊生成以預先定義的粒度的在0和最大幀速率之間的可編程幀速率;經(jīng)由幀速率估計器控制邏輯的幀速率誤差估計器模塊來估計來自比較模塊的傳入幀速率和由幀速率生成器模塊生成的幀速率之間的相位和頻率中的幀速率誤差;經(jīng)由幀速率估計器控制邏輯的幀速率控制器模塊至少部分地基于所估計的幀速率誤差來控制幀速率生成器模塊;以及響應于穩(wěn)定的降低的幀速率的檢測而經(jīng)由幀速率控制器模塊來確定是在最大幀速率模式還是降低的幀速率模式下操作。
在其他示例中,一種用于編碼器中的無線帶寬降低的系統(tǒng)可包括散列計算模塊,其被配置成至少部分地基于要被編碼的接收到的圖像來計算過去幀的至少一部分的散列值。散列值存儲器可被配置成存儲過去幀的至少一部分的散列值。散列計算模塊可被配置成計算當前幀的至少一部分的散列值。比較模塊可被配置成將當前幀的至少一部分與過去幀的所述至少一部分的散列值進行比較。編碼器可被配置成至少部分地基于當前幀的至少一部分與過去幀的所述至少一部分的散列值的比較來修改編碼操作以丟棄經(jīng)編碼的數(shù)據(jù)和/或關閉電源。
在另一示例中,在用于編碼器中的無線帶寬降低的系統(tǒng)中,當前幀的至少一部分與過去幀的所述至少一部分的散列值的比較包括切片散列值的比較以及整個幀散列值的比較。修改編碼操作可進一步包括:編碼器可被配置成與當前幀的切片的散列值的計算并行地將當前幀的像素編碼成經(jīng)編碼的數(shù)據(jù)流,其中編碼器是補充有p_skip支持單元的僅幀內(nèi)類型編碼器,其中p_skip被配置成向解碼器提供利用來自早期解碼的視頻幀的經(jīng)解碼的像素來替換p_skip切片的指示。選擇器模塊可被配置成在當前幀的幀內(nèi)編碼切片、替換p_skip切片和/或全部丟掉幀內(nèi)編碼切片之間進行選擇,其中選擇至少部分地基于當前切片的切片散列值與過去切片的切片散列值的比較。比較模塊可被配置成識別其中給定切片為靜態(tài)的預先設置的數(shù)目的連續(xù)視頻幀,其中識別至少部分地基于當前切片的切片散列值與過去切片的切片散列值的比較。丟掉靜態(tài)切片控制邏輯可被配置成至少部分地基于其中給定切片為靜態(tài)的預先設置的數(shù)目的連續(xù)視頻幀的識別來從經(jīng)編碼的數(shù)據(jù)流丟掉當前切片。丟掉靜態(tài)切片控制邏輯可被配置成間歇地傳輸經(jīng)編碼的像素,作為已丟掉的靜態(tài)切片的幀內(nèi)刷新。比較模塊可被配置成識別其中給定幀為靜態(tài)的預先設置的數(shù)目的連續(xù)視頻幀,其中識別至少部分地基于當前整個幀散列值與過去整個幀散列值的比較。編碼器打開/關閉控制邏輯可被配置成至少部分地基于其中給定幀為靜態(tài)的預先設置的數(shù)目的連續(xù)視頻幀的識別來關閉到編碼器的電源。編碼器打開/關閉控制邏輯可被配置成至少部分地基于周期性刷新和/或當前幀為非靜態(tài)的識別來開啟到編碼器的電源。幀速率估計器控制邏輯可被配置成至少部分地基于當前整個幀散列值與過去整個幀散列值的比較來檢測當前幀更新模式。幀速率估計器控制邏輯可被配置成至少部分地基于所檢測到的當前幀更新模式來預測未來幀更新模式。幀速率估計器控制邏輯可被配置成至少部分地基于所預測的幀更新模式來開啟/關閉到編碼器的電源。幀速率估計器控制邏輯的操作可進一步包括以下:幀速率估計器控制邏輯的幀速率生成器模塊可被配置成生成以預先定義的粒度的在0和最大幀速率之間的可編程幀速率;幀速率估計器控制邏輯的幀速率誤差估計器模塊可被配置成估計來自比較模塊的傳入幀速率和由幀速率生成器模塊生成的幀速率之間的相位和頻率中的幀速率誤差;幀速率估計器控制邏輯的幀速率控制器模塊可被配置成至少部分地基于所估計的幀速率誤差來控制幀速率生成器模塊;以及幀速率控制器模塊可被配置成響應于穩(wěn)定的降低的幀速率的檢測而確定是在最大幀速率模式還是降低的幀速率模式下操作。
在另一示例中,至少一種機器可讀介質(zhì)可包括多個指令,所述多個指令響應于被在計算設備上執(zhí)行而使得計算設備執(zhí)行根據(jù)上面的示例中的任一個的方法。
在又一示例中,一種裝置可包括用于執(zhí)行根據(jù)上面的示例中的任一個的方法的部件。
上面的示例可包括特征的特定組合。然而,這樣的上面的示例不限于該點上,并且在各種實現(xiàn)中,上面的示例可包括僅承擔這樣的特征的子集、承擔不同順序的這樣的特征、承擔這樣的特征的不同組合和/或承擔除明確列出的那些特征之外的附加特征。例如,可關于示例裝置、示例系統(tǒng)和/或示例物品來實現(xiàn)關于示例方法描述的所有特征,并且反之亦然。