專利名稱:可增進譯碼效能的方法
技術領域:
本發明是有關于視頻或音頻譯碼,特別是有關于可變長度譯碼(Variable Length Decoding,VLD)。
背景技術:
可變長度編碼(Variable Length Coding,VLC)是一種運用于多媒體文件編碼的技術,能大幅的減少編碼后的數據量,從而減少數據傳輸所需的頻寬或儲存所占據的空間。可變長度編碼已運用于許多格式的視頻或音頻編碼,例如運動圖像專家組(Motion Picture Experts Group,MPEG)編碼。當然,當編碼的數據進行播放時,需事先以可變長度譯碼(Variable LengthDecoding,VLD)將數據進行譯碼,才可還原數據。
圖1A為一運動圖像專家組編碼模塊(MPEG Coder)100的區塊圖。運動圖像專家組編碼模塊100包括移動估計(motionestimation)模塊102、離散余弦變換(Discrete CosineTransformation,DCT)模塊104、量化(quantization)模塊106以及可變長度編碼模塊108。移動估計模塊102首先比較輸入影像與參考影像以得到影像差異。接著,離散余弦變換模塊104將影像差異轉換為離散余弦變換值。當量化模塊106將離散余弦變換值量化后,可變長度編碼模塊108接著進行可變長度編碼,以得到最終的編碼數據。
圖1B為一運動圖像專家組譯碼模塊(MPEG Decoder)150的區塊圖。運動圖像專家組譯碼模塊150包括可變長度譯碼模塊152、反量化(inverse quantization)模塊154、反離散余弦變換(Inverse Discrete Cosine Transformation,IDCT)模塊156以及移動補償(motion compensation)模塊158。可變長度譯碼模塊152首先將編碼數據以可變長度譯碼方式還原為譯碼數據,接著反量化模塊154將譯碼數據反量化為離散余弦變換值。接著,反離散余弦變換模塊156將離散余弦變換值還原為影像差異,最后移動補償模塊158借影像差異對影像進行補償以得到輸出端的影像。
然而,圖1B的可變長度譯碼模塊152于譯碼數據時必須花費大量時間于輸出一連串的零值,以作為譯碼后的數據。據統計,可變長度譯碼模塊152輸出的譯碼數據中,約有70%~98%為上述的連續零值。
輸出連串零值的場合至少有4種,包括在讀取到區塊數據終點碼(End Of Block,EOB)、編碼區塊數據樣式(Coded BlockPattern,CBP)位為0、讀取到一跳過宏塊數據碼(SkippedMacroblock)以及在譯碼編碼數據的運行級別對(run-level pair)等等場合。圖2A顯示一包含區塊數據終點碼EOB202的區塊數據200。可變長度譯碼模塊152譯碼后得到的譯碼數據是由一連串的區塊數據(block data)所組成的包含8×8見方(64個)的數據值。當可變長度譯碼模塊152于接收到的編碼數據中讀取到一區塊數據終點碼EOB時,如圖2A中解譯完值為5的像素值202后若遇到區塊數據終點碼(其值為二位“10”),則可變長度譯碼模塊152輸出的譯碼數據的區塊數據200中出現于值為5的像素值202后方的數據值皆為0,如204部分所示,其中因區塊數據終點碼EOB僅會在編碼數據中出現但不會被譯碼出,因此在圖2A中不會看到此終點碼。
此外,譯碼數據的每六個區塊數據組成一宏塊數據(macroblock),包括4個Y區塊數據與從4個Y區塊數據中取樣出的1個Cb數據區塊與1個Cr數據區塊,其中4個Y區塊數據如圖2B中212所示。而可變長度譯碼模塊152讀取的編碼數據中包含一編碼區塊數據樣式位,該位可指示一宏塊數據中哪幾個區塊數據的值全為0。因此,當可變長度譯碼模塊152讀取到編碼數據的區塊數據214的編碼區塊數據樣式位為0時,則可變長度譯碼模塊152將輸出一整個區塊數據的零值。另外,跳過宏塊數據碼則表示組成一宏塊數據的六個區塊數據皆全為0,如圖2C中的宏塊數據222的六個區塊數據223~228。因此,當可變長度譯碼模塊152讀取到一跳過宏塊數據碼時,將需輸出相當于六個區塊數據的零值。
圖2D顯示一區塊數據232被以可變長度編碼方式編碼為一連串運行級別對(run-level)的過程。一個運行級別對包含兩個值,分別為零數值(run)及系統值(level)。例如,區塊數據232包含一串行數據“1005000008”,于系統值1后,首先接續2個零數值,接著為系統值5,再接續5個零數值,最后出現系統值8。該串行數據經編碼后成為1,(2,5),及(5,8),其中(2,5)及(5,8)為運行級別對。因此,當可變長度譯碼模塊152譯碼編碼數據的運行級別對時將依據各運行級別對的零數值輸出許多零值。
在這些連續輸出零值的狀況會拖延譯碼的時間,而造成運動圖像專家組譯碼模塊150整體譯碼效能的低落。因此,若能改進上述缺點以增進可變長度譯碼的效率,將可大幅增進視頻及音頻譯碼的效能。
發明內容
有鑒于此,本發明提供一種可增進譯碼效能的方法,以解決已知技術存在的問題。該方法是應用于一可變長度譯碼模塊譯碼一編碼數據以得到一譯碼數據,而一后續模塊對該譯碼數據進行進一步處理。首先,耦接一緩沖器于該可變長度譯碼模塊與該后續模塊之間,以緩沖該可變長度譯碼模塊譯碼所得的該譯碼數據。接著,當該后續模塊自該緩沖器讀取該譯碼數據后,隨即清除該緩沖器被讀取的部分,以維持該緩沖器的未使用區的內容為一預設值,其中該未使用區為該緩沖器中除了未讀取的該譯碼數據以外的部分。最后,若該可變長度譯碼模塊于該編碼數據中判讀到一零輸出指令碼,則該可變長度譯碼模塊無需將該譯碼數據內含的零值寫入該緩沖器中。
本發明更提供一種譯碼裝置。該譯碼裝置包括一可變長度譯碼模塊,一后續模塊以及一緩沖器。該可變長度譯碼模塊譯碼被以可變長度編碼(variable length coding)方式進行編碼的一編碼數據以得到一譯碼數據。該緩沖器耦接至該可變長度譯碼模塊與該后續模塊,用以緩沖該可變長度譯碼模塊譯碼所得的該譯碼數據,且當對該譯碼數據進行后續處理的該后續模塊自該緩沖器讀取該譯碼數據后,該緩沖器隨即清除被讀取的部分以維持該緩沖器的未使用區的內容為一預設值,其中該未使用區為該緩沖器中除了未讀取的該譯碼數據以外的部分。
本發明所述的可增進譯碼效能的方法,可節省可變長度譯碼模塊68.7%~97.4%的處理時間,而大幅提升譯碼過程整體的效能。
圖1A為一運動圖像專家組編碼模塊的區塊圖;圖1B為一運動圖像專家組譯碼模塊的區塊圖;圖2A顯示一包含區塊數據終點碼的區塊數據;圖2B顯示編碼區塊數據樣式位為0的區塊數據的示意圖;圖2C顯示跳過宏塊數據碼對應的六個區塊數據的示意圖;圖2D顯示一區塊數據被以可變長度編碼方式編碼為一連串運行級別對的過程;圖3A為依據本發明的譯碼裝置的區塊圖;圖3B為依據本發明的緩沖器進行寫入與讀取的流程圖;圖4A為依據本發明的緩沖器進行自動清除的示意圖;圖4B依據本發明的緩沖器進行自動清除的信號時序圖;圖4C顯示讀取信號被延遲以構成清除信號的細部電路;圖4D顯示讀取地址被延遲以構成清除地址的細部電路;圖5A為依據本發明的譯碼裝置的部分電路圖;圖5B顯示區塊數據終點信號的時序圖;圖5C為零區塊數據信號的時序圖;圖5D為對應于跳過宏塊數據碼的零區塊數據信號的時序圖;圖6為依據本發明的可變長度譯碼模塊譯碼運行級別對為譯碼數據的示意圖;圖7為依據本發明的可增進譯碼效能的方法的流程圖。
具體實施例方式
為了讓本發明的上述和其他目的、特征和優點能更明顯易懂,下文特舉數較佳實施例,并配合所附圖示,作詳細說明如下。
圖3A為依據本發明的譯碼裝置300的區塊圖。譯碼裝置300包括一可變長度譯碼模塊302及一緩沖器304。可變長度譯碼模塊302譯碼被以可變長度編碼(variable length coding)方式進行編碼的一編碼數據,以得到一譯碼數據。緩沖器304用以緩沖可變長度譯碼模塊302譯碼所得的譯碼數據。一反量化模塊306自緩沖器304讀取可變長度譯碼模塊302輸出的譯碼數據,以進行后續處理。每當反量化模塊306自緩沖器304讀取譯碼數據后,緩沖器304隨即會清除其內被讀取的部分,將被讀取的區域清除為一預設值,而該預設值在一較佳狀態下為零值。如此則緩沖器304未儲存譯碼數據的區域皆可以維持內容為該預設值的清除狀態,以供后續可變長度譯碼模塊302寫入譯碼數據之用。
緩沖器304包含第一存儲器307與第二存儲器308。第一存儲器307與第二存儲器308的容量皆可剛好足以儲存譯碼數據的一區塊數據量,亦即64個離散余弦變換值。若一離散余弦變換值包含12位,則第一存儲器307與第二存儲器308的容量為64×12位。可變長度譯碼模塊302會將譯碼得到的譯碼數據的多個區塊數據依序交替寫入第一存儲器307與第二存儲器308。圖3B為依據本發明的緩沖器304寫入與讀取的流程圖350。首先,可變長度譯碼模塊302于步驟352中對編碼數據進行譯碼以得到一起始區塊數據,并將其寫入第一存儲器307。接著,可變長度譯碼模塊302于步驟354中對編碼數據進行譯碼以得到下一區塊數據,并將其寫入第二存儲器308。與此同時,反量化模塊306于步驟354中自第一存儲器307讀取其中儲存的區塊數據。接著,可變長度譯碼模塊302于步驟356中對編碼數據進行譯碼以得到再下一譯碼區塊數據,并將其寫入第一存儲器307,與此同時反量化模塊306并自第二存儲器308讀取譯碼區塊數據。步驟354與356將持續進行,每當第二存儲器被寫入時第一存儲器則同步被讀取,且當第一存儲器寫入時第二存儲器亦同步被讀取,直到所有編碼數據于步驟358中均經譯碼完畢為止。
圖4A為依據本發明的緩沖器400進行自動清除的示意圖。緩沖器400包括第一存儲器402與第二存儲器404。如圖3B的步驟354所示,當可變長度譯碼模塊寫入第二存儲器404時,反量化模塊則同時自第一存儲器402讀取上一區塊數據。每當反量化模塊自第一存儲器402讀取上一區塊數據的一個位置,則緩沖器400會隨即自動清除第一存儲器402中該區塊數據被讀取走的該位置為如上述的預設值。同理,當反量化模塊自第二存儲器404讀取區塊數據的一個位置,則緩沖器400亦會隨即自動清除第二存儲器404中該區塊數據被讀取走的該位置為預設值。當然,為了達到同時對一存儲器進行讀取與寫入,第一存儲器402與第二存儲器404皆需為雙端口(two-port)存儲器。
參考圖4B,其為依據本發明的緩沖器400進行自動清除的信號時序圖。以圖4A的情況為例,反量化模塊輸出一讀取信號以啟動第一存儲器402的讀取動作,并輸出一讀取地址以指定所欲讀取的數據。讀取信號與讀取地址則分別被延遲以構成一清除信號以啟動第一存儲器402的寫入零動作,以及一清除地址以指定所欲讀取的位,分別回送至第一存儲器402,以執行自動清除。
圖4C顯示讀取信號被延遲以構成清除信號的細部電路,而圖4D顯示讀取地址被延遲以構成清除地址的細部電路。來自反量化模塊的讀取信號與讀取地址分別經過延遲模塊426與466,以形成清除信號與清除地址,再回送至第一存儲器或第二存儲器。亦即,每當反量化模塊以圖4C的讀取信號選取第一存儲器或第二存儲器,并借圖4D的讀取地址指定第一存儲器或第二存儲器的讀取地址,被讀取信號所選擇的第一存儲器或第二存儲器便會輸出位于讀取地址的數據。當數據被讀取后便應被清除,以重復利用存儲器的空間。此時,圖4C的被延遲的讀取信號形成清除信號以選取第一存儲器或第二存儲器的寫入端,并借圖4D的被延遲的讀取地址指定第一存儲器或第二存儲器的寫入地址,將零值寫入第一存儲器或第二存儲器的原先的讀取地址處,以清空被讀取的數據。雖然于圖4C中是以零值寫入第一存儲器及第二存儲器,但不一定非用零值,亦可用其他的“預設值”寫入第一存儲器或第二存儲器的原先的讀取地址處,以表示存儲器的該處內容已被清除,而可供譯碼模塊寫入后續數據。
為解決背景技術的可變長度譯碼模塊需不斷輸出零值的缺點,本發明結合緩沖器上述自動清除的功能,以分別省下可變長度譯碼模塊填入零值的處理時間。圖5A為依據本發明的譯碼裝置500的示意圖,該譯碼裝置500包括可變長度譯碼模塊502與緩沖器504。當可變長度譯碼模塊502于輸入的編碼數據中讀取并經譯碼得到一區塊數據終點碼(End Of Block,EOB)時,由于緩沖器中的區塊數據儲存區已事先被清除而皆呈零值,則可變長度譯碼模塊502可直接略過同一區塊數據的剩余數據部分,而不需不斷以零值寫入緩沖器504。當讀取到區塊數據終點碼時,可變長度譯碼模塊502會發出一區塊數據終點信號以通知緩沖器504。圖5B顯示區塊數據終點信號的時序圖。
此外,當可變長度譯碼模塊502讀取到編碼數據的編碼區塊數據樣式(Coded Block Pattern,CBP)位為0時,則可變長度譯碼模塊502會向緩沖器504發出一零區塊數據信號。圖5C為零區塊數據信號的時序圖。當緩沖器504收到零區塊數據信號后,則會于反量化模塊讀取對應的譯碼區塊數據時,直接輸出一整個區塊數據的0予反量化模塊。例如,若一區塊數據包含64個數據值,則緩沖器504會輸出連續64組零值,以作為對應的譯碼數據。如此則可變長度譯碼模塊502可節省63(即64-1)個發出零區塊數據信號的時脈周期,以進行其他的譯碼工作。
另外,可變長度譯碼模塊502亦可能于收到的編碼數據中讀取到一跳過宏塊數據碼(Skipped Macroblock)。如圖2C所示,跳過宏塊數據碼表示6個區塊數據的數據值皆為零值。因此,可變長度譯碼模塊502會連續向緩沖器504發出六個零區塊數據信號,零區塊數據信號的發送次數可借一計數模塊510計算。圖5D為對應于跳過宏塊數據碼的零區塊數據信號的時序圖。當緩沖器504連續收到六個零區塊數據信號后,則會于反量化模塊讀取對應的六個譯碼區塊數據時,直接輸出六個區塊數據的0予反量化模塊,以作為對應的譯碼數據。如此則可變長度譯碼模塊502可節省378(即64×6-6)個發出零區塊數據信號的時脈周期,以進行其他的譯碼工作。
圖6為依據本發明的可變長度譯碼模塊譯碼運行級別對為譯碼數據的示意圖。當可變長度譯碼模塊譯碼編碼數據的運行級別對(run-level pair)時,由于一運行級別對包括一零數值(run)及一系統值(level),可變長度譯碼模塊原本需不斷輸出相當于運行級別對的多個零值。但由于緩沖器會預先自行清除其內容為零,因此可變長度譯碼模塊不需將零值重新寫入緩沖器中,只需于寫入運行級別對的系統值時,將緩沖器的寫入地址跳過相當于運行級別對的零數值(run)的儲存區域后,再直接將該運行級別對的系統值(level)寫入緩沖器即可。亦即,運行級別對系統值的寫入地址為(目前寫入地址+運行級別對的零數值個數+1)。例如,圖6中對應于時脈2與5的運行級別對的零數值分別為3與2,其系統值分別為12與7,因此寫入系統值12與7的地址分別為5(即1+3+1)與10(即7+2+1)。因此,可變長度譯碼模塊可以節省相當于運行級別對的零數值個數的時脈周期。
圖7為依據本發明的可增進譯碼效能的方法700的流程圖。首先于步驟702中耦接一緩沖器于一可變長度譯碼模塊之后,以儲存該可變長度譯碼模塊譯碼一編碼數據所得的譯碼數據。接著,當一后續模塊(例如反量化模塊)自該緩沖器讀取數據后,隨即于步驟704中清除該緩沖器被讀取的譯碼數據,以維持該緩沖器的未使用區的內容為零,如圖4A~圖4D所示。接著,繼續于步驟706中儲存該可變長度譯碼模塊譯碼輸出的該譯碼數據至該緩沖器的該未使用區。接下來,則視可變長度譯碼模塊于編碼數據中判讀到何種型態的零輸出指令碼而定,該零輸出指令碼可為區塊數據終點碼、編碼區塊數據樣式位為0、跳過宏塊數據碼及運行級別對等情況。若可變長度譯碼模塊于編碼數據中判讀到上述各式的零輸出指令碼,則可變長度譯碼模塊無需將譯碼數據內含的零值寫入緩沖器中。以下步驟分別敘述各式的零輸出指令碼的處理方式。
若該可變長度譯碼模塊于編碼數據中讀取到一區塊數據終點碼,則可變長度譯碼模塊于寫入該緩沖器時,于步驟708中直接略過目前寫入區塊數據的剩余數據部分,如圖5B所示。接著,若該可變長度譯碼模塊讀取到編碼數據的一編碼區塊數據樣式位為0時,則該緩沖器于步驟710中直接輸出一整個區塊數據的零值予該后續模塊,如圖5C所示。接著,若該可變長度譯碼模塊于編碼數據中讀取到一跳過宏塊數據碼,則該緩沖器于步驟712中直接輸出六個區塊數據的零值予該后續模塊,如圖5D所示。最后,當該可變長度譯碼模塊對編碼數據的運行級別對進行譯碼時,于步驟714中直接將該運行級別對的系統值寫入該譯碼緩沖器中跳過相當于該零數值個數的地址,如圖6所示。上述步驟可重復執行,直至所有編碼數據均經譯碼完畢為止。
關于圖7的流程說明,亦可為一平行式處理,即步驟708、710、712、714是視零輸出指令碼的形態為何而選擇性執行而毋需依序判斷執行。
本發明提供一種可增進譯碼效能的方法。借一可自動清除其內容的緩沖器,以節省可變長度譯碼模塊重復輸出零值的時間。根據統計,在一般的可變長度譯碼模塊輸出的譯碼數據值中,僅僅上述區塊數據終點碼、編碼區塊數據樣式位為0、跳過宏塊數據碼以及跳過輸出運行級別對的零數值等4種連續輸出零值的情況所輸出的零值便占據68.7%~97.4%的比重。因此,本發明可節省可變長度譯碼模塊68.7%~97.4%的處理時間,而大幅提升譯碼過程整體的效能。
以上所述僅為本發明較佳實施例,然其并非用以限定本發明的范圍,任何熟悉本項技術的人員,在不脫離本發明的精神和范圍內,可在此基礎上做進一步的改進和變化,因此本發明的保護范圍當以本申請的權利要求書所界定的范圍為準。
附圖中符號的簡單說明如下100運動圖像專家組編碼模塊102移動估計模塊104離散余弦變換模塊106量化模塊108可變長度編碼模塊150運動圖像專家組譯碼模塊152、302、502可變長度譯碼模塊154、306反量化模塊156反離散余弦變換模塊158移動補償模塊200、214、223-228、232區塊數據212、222宏塊數據 300、500譯碼裝置304、400、420、504緩沖器307、308、402、404、422、424、462、464存儲器426、466延遲模塊441-446、482-486、508多工器510計數模塊
權利要求
1.一種可增進譯碼效能的方法,是應用于一可變長度譯碼模塊譯碼一編碼數據以得到一譯碼數據,而一后續模塊對該譯碼數據進行進一步處理,其特征在于,該方法包括耦接一緩沖器于該可變長度譯碼模塊與該后續模塊之間,以緩沖該可變長度譯碼模塊譯碼所得的該譯碼數據;當該后續模塊自該緩沖器讀取該譯碼數據后,隨即清除該緩沖器被讀取的部分,以維持該緩沖器的未使用區的內容為一預設值,其中該未使用區為該緩沖器中除了未讀取的該譯碼數據以外的部分;以及若該可變長度譯碼模塊于該編碼數據中判讀到一零輸出指令碼,則該可變長度譯碼模塊無需將該譯碼數據內含的零值寫入該緩沖器中。
2.根據權利要求1所述的可增進譯碼效能的方法,其特征在于,該緩沖器被讀取的部分的清除包括延遲該后續模塊自該緩沖器讀取該譯碼數據所用的讀取信號,以得到一清除信號;延遲該后續模塊自該緩沖器讀取該譯碼數據所用的讀取地址,以得到一清除地址;以及依據該清除信號自動將該預設值寫入該緩沖器,并以該清除地址作為該緩沖器寫入該預設值的寫入地址。
3.根據權利要求1所述的可增進譯碼效能的方法,其特征在于,該緩沖器包括第一存儲器與第二存儲器,該第一存儲器與第二存儲器的容量皆剛好足以儲存該譯碼數據的一區塊數據量。
4.根據權利要求3所述的可增進譯碼效能的方法,其特征在于,該譯碼數據的緩沖包括以該可變長度譯碼模塊將譯碼得到的該譯碼數據的多個區塊數據依序交替寫入該第一存儲器與該第二存儲器;當該第二存儲器被該可變長度譯碼模塊寫入的同時,以該后續模塊自該第一存儲器讀取該譯碼數據的區塊數據;以及當該第一存儲器被該可變長度譯碼模塊寫入的同時,以該后續模塊自該第二存儲器讀取該譯碼數據的區塊數據。
5.根據權利要求1所述的可增進譯碼效能的方法,其特征在于,當該零輸出指令碼指示該可變長度譯碼模塊譯碼的該編碼數據是一運行級別對時,該可變長度譯碼模塊不會將該運行級別對的零數值譯碼以輸入至該緩沖區,而該緩沖器的寫入地址會跳過相當于該運行級別對的零數值的儲存區域后,直接將該運行級別對的系統值寫入該緩沖器的該寫入地址。
6.根據權利要求1所述的可增進譯碼效能的方法,其特征在于,當該零輸出指令碼是一區塊數據終點碼時,該可變長度譯碼模塊于寫入該緩沖器時略過目前寫入區塊數據的剩余數據部分,而該緩沖器會直接以該預設值取代該目前寫入區塊數據的剩余數據部分以輸出至該后續模塊。
7.根據權利要求1所述的可增進譯碼效能的方法,其特征在于,當該零輸出指令碼是一編碼區塊數據樣式位且該編碼區決數據樣式位內含一零位時,該可變長度譯碼模塊于寫入該緩沖器時略過該零位所指示的一整個區塊數據,而該緩沖器直接輸出該整個區塊數據的該預設值予該后續模塊,以作為對應的該譯碼數據。
8.根據權利要求1所述的可增進譯碼效能的方法,其特征在于,當該零輸出指令碼是一跳過宏塊數據碼時,該可變長度譯碼模塊于寫入該緩沖器時會略過該跳過宏塊數據碼所指示的一宏塊數據,而該緩沖器直接輸出該宏塊數據的該預設值予該后續模塊,以作為對應的該譯碼數據。
9.根據權利要求8所述的可增進譯碼效能的方法,其特征在于,該宏塊數據包含六個區塊數據。
10.根據權利要求1所述的可增進譯碼效能的方法,其特征在于,該后續模塊為一反量化模塊,該預設值為一零值。
全文摘要
本發明提供一種可增進譯碼效能的方法,并涉及一種譯碼裝置,包括一可變長度譯碼模塊及一緩沖器。該可變長度譯碼模塊譯碼被以可變長度編碼方式進行編碼的一編碼數據,以得到一譯碼數據。該緩沖器緩沖該可變長度譯碼模塊譯碼所得的該譯碼數據,且當對該譯碼數據進行后續處理的一后續模塊自該緩沖器讀取該譯碼數據后,該緩沖器隨即清除該緩沖器被讀取的部分以維持該緩沖器的未使用區的內容為0,其中該未使用區為該緩沖器中除了未讀取的該譯碼數據以外的部分。本發明所述的可增進譯碼效能的方法,可節省可變長度譯碼模塊68.7%~97.4%的處理時間,而大幅提升譯碼過程整體的效能。
文檔編號H04N7/30GK101064515SQ20071009375
公開日2007年10月31日 申請日期2007年4月18日 優先權日2007年4月18日
發明者蔡政銘, 黃士豪, 呂長霖 申請人:威盛電子股份有限公司