專利名稱:顯示雙位字集方法以及圖像聲音譯碼/播放/復(fù)制系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種具備能顯示雙位字集(double byte character set,DBCS)的直接屏幕顯示(on screen display,OSD)功能的圖像聲音譯碼/播放/復(fù)制系統(tǒng)及利用直接屏幕顯示技術(shù)顯示雙位字集以更新圖像聲音譯碼/播放/復(fù)制系統(tǒng)的顯示畫面的的方法,特別是指一種不需要增加光學(xué)譯碼系統(tǒng)中的存儲(chǔ)器大小,即能顯示雙位字集的光學(xué)系統(tǒng)及其方法。
背景技術(shù):
直接屏幕顯示(以下簡稱OSD)在消費(fèi)性電子產(chǎn)品中占據(jù)相當(dāng)重要的地位,一般常用來提供互動(dòng)信息,例如系統(tǒng)設(shè)定、導(dǎo)引目錄等,供使用者直接進(jìn)行系統(tǒng)組態(tài)的設(shè)定與控制。常見的OSD應(yīng)用例是在個(gè)人計(jì)算機(jī)、電視機(jī)上,用來提供畫面信息,并能供使用者對(duì)畫面顯示的相關(guān)參數(shù)進(jìn)行直接調(diào)整。
如圖1所示,為一視頻信號(hào)處理系統(tǒng)500,主要包含有一處理器10、一OSD單元20、一視頻信號(hào)譯碼器30、一混合器(mixer)40、一只讀存儲(chǔ)器50、一動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器60(以下簡稱DRAM),以及一OSD緩沖存儲(chǔ)器70。
處理器10可以讀取一存儲(chǔ)介質(zhì)(圖未示)中所存儲(chǔ)的數(shù)據(jù),例如經(jīng)壓縮后的視頻信號(hào)數(shù)據(jù),當(dāng)處理器10接收到視頻信號(hào)數(shù)據(jù)的比特流(bistreams)后,即會(huì)傳送至視頻信號(hào)譯碼器30上,由視頻信號(hào)譯碼器30進(jìn)行譯碼的操作,譯碼后的畫面(frame)會(huì)暫儲(chǔ)在DRAM 60中,以便于重建出原始的畫面后傳送至顯示器80上供使用者觀看。
只讀存儲(chǔ)器50中存儲(chǔ)有多個(gè)計(jì)算機(jī)程序碼,用來進(jìn)行此視頻信號(hào)處理系統(tǒng)500開機(jī)時(shí)的初始化,以及視頻信號(hào)譯碼等邏輯演算。OSD緩沖存儲(chǔ)器70中則存儲(chǔ)有包含OSD標(biāo)題(OSD header)、OSD bitmap以及圖示等等所構(gòu)成的OSD數(shù)據(jù),其中已指定了OSD數(shù)據(jù)出現(xiàn)在顯示器80上的坐標(biāo)位置、明亮度,以及每一像素的色彩索引值(index)等等。
當(dāng)使用者啟動(dòng)OSD功能時(shí),是以一OSD啟動(dòng)鍵(圖未示)來控制處理器10,進(jìn)而使OSD單元20去存取OSD信息,以建構(gòu)出OSD畫面,并當(dāng)OSD畫面被傳送至混合器40后,藉由混合器40來迭加OSD畫面與經(jīng)視頻信號(hào)譯碼器30譯碼后的原始圖像畫面,就能夠產(chǎn)生一包含有OSD信息的畫面。
一般顯示在顯示器80畫面上的OSD信息,除了用圖標(biāo)來表達(dá)其意義以外,文字的輔助說明也甚為重要,故會(huì)在只讀存儲(chǔ)器50中存儲(chǔ)相關(guān)字型來供OSD單元20通過處理器10進(jìn)行讀取,以作為顯示時(shí)文字的來源依據(jù)。由于只讀存儲(chǔ)器50的造價(jià)不菲,故為降低整體成本起見,均僅存儲(chǔ)特定的文字或字符(26個(gè)英文字母,以及某些特定文字、符號(hào)…),以避免需要采用高容量的只讀存儲(chǔ)器50。
上述的視頻信號(hào)譯碼系統(tǒng)500,其OSD的另一種應(yīng)用是以只讀存儲(chǔ)器50中的程序代碼來讀出存儲(chǔ)介質(zhì)中的目錄名稱與文件名稱,以便使用者無需通過個(gè)人計(jì)算機(jī),僅需利用OSD就能觀看到存儲(chǔ)介質(zhì)中所存儲(chǔ)的文件,然而因?yàn)橹蛔x存儲(chǔ)器50中的字型有限,故往往僅能見到特定字符所建置的文件名稱,若是以非拼音語系的內(nèi)碼系統(tǒng),例如中文、韓文、日文…等等需要超過一個(gè)的字節(jié)來表示字符的雙位字集語言系統(tǒng)所構(gòu)成的文件名稱,則因只讀存儲(chǔ)器50中并未存儲(chǔ)有該內(nèi)碼系統(tǒng)中所定義的全部字符,往往造成文件名中的某些字符無法正確顯示。
發(fā)明內(nèi)容
有鑒于以往的缺點(diǎn),本發(fā)明的目的是提供一種無需額外的存儲(chǔ)器空間,即能以直接屏幕顯示(OSD)方式來顯示雙位字集方法以及圖像聲音譯碼/播放/復(fù)制系統(tǒng)。
為了實(shí)現(xiàn)本發(fā)明的上述目的,在一較佳實(shí)施例中,本發(fā)明的圖像聲音譯碼/播放/復(fù)制系統(tǒng)具有一直接屏幕顯示控制裝置,此控制裝置能讀取一存儲(chǔ)介質(zhì)中的雙位字集文件,并以直接屏幕顯示方式將雙位字集顯示該文件結(jié)構(gòu)于一顯示器上以更新顯示器的顯示畫面,其中該控制裝置包含一OSD緩沖存儲(chǔ)器、一存儲(chǔ)器,以及一OSD單元。
該OSD緩沖存儲(chǔ)器中存儲(chǔ)有OSD數(shù)據(jù),該圖像聲音譯碼/播放/復(fù)制系統(tǒng)的處理器是與該存儲(chǔ)器相耦接,該處理器能讀取該存儲(chǔ)介質(zhì)的該文件系統(tǒng),并且計(jì)算存儲(chǔ)介質(zhì)中的圖像聲音來源文件的名稱的長度。該OSD單元是與該OSD緩沖存儲(chǔ)器相耦接,該OSD單元能經(jīng)由該處理器,依據(jù)該內(nèi)碼自該字型文件中擷取出與該內(nèi)碼相對(duì)應(yīng)的字符后,配合該OSD數(shù)據(jù),以直接屏幕顯示方式將該文件名稱顯示于該顯示器上并更新該顯示器的顯示畫面。
在該較佳實(shí)施例中,依據(jù)上述架構(gòu),本發(fā)明還提供一種利用以直接屏幕顯示方式來顯示出該文件系統(tǒng)的方法,其包含步驟讀取該存儲(chǔ)介質(zhì)的一文件系統(tǒng)并計(jì)算該存儲(chǔ)介質(zhì)的圖像聲音來源文件的文件名稱的長度,接著由該文件系統(tǒng)取得構(gòu)成該文件的名稱的內(nèi)碼,并計(jì)算各該內(nèi)碼于該存儲(chǔ)介質(zhì)中的的雙位字集文件的實(shí)體位置后,由各該實(shí)體位置擷取與各該內(nèi)碼相對(duì)應(yīng)的字符,最后依據(jù)所述內(nèi)碼自該雙位字集文件文件中取得相對(duì)應(yīng)的字符,使得構(gòu)成該名稱的所述字符顯示在一顯示器上。
本發(fā)明的圖像聲音譯碼/播放/復(fù)制系統(tǒng)將雙位字集文件存儲(chǔ)于存儲(chǔ)介質(zhì)中,不需要額外的存儲(chǔ)器空間就可以存儲(chǔ)有各式的字型,因此不論以何種內(nèi)碼系統(tǒng)存儲(chǔ)的文件系統(tǒng),都能夠藉由正確地計(jì)算出每一字符的實(shí)體位置后,自存儲(chǔ)介質(zhì)中取得每一內(nèi)碼所相對(duì)應(yīng)的字符后顯示在顯示器上,因此不論以何種內(nèi)碼系統(tǒng)所建置的文件名都能夠被正確地顯示。
圖1是一示意圖,說明以往視頻信號(hào)處理系統(tǒng)中完成直接屏幕(OSD)顯示功能的系統(tǒng); 圖2是一示意圖,說明本發(fā)明利用直接屏幕顯示方法來顯示雙位字集(DBCS)于的一較佳實(shí)施例 圖3是一示意圖,說明繁體中文BIG5內(nèi)碼系統(tǒng)的內(nèi)碼對(duì)照表; 圖4是一示意圖,說明OSD數(shù)據(jù)結(jié)構(gòu);以及 圖5是一流程圖,說明本發(fā)明以直接屏幕顯示(OSD)方法顯示雙位字集(DBCS)以更新在一圖像聲音譯碼/播放/復(fù)制系統(tǒng)的顯示畫面的程序。
附圖標(biāo)號(hào)說明 100 數(shù)字譯碼系統(tǒng) (200,700)存儲(chǔ)介質(zhì) 300顯示器 400揚(yáng)聲器 1 光學(xué)讀寫頭 2 處理器 3 只讀存儲(chǔ)器 4 動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器 5 控制器 6 視頻信號(hào)處理器 7 音訊處理器 8 OSD緩沖存儲(chǔ)器 9 圖像聲音來源及OSD字型文件檢測(cè)模塊 31 文件過濾模塊 32 字符計(jì)算模塊 51 OSD單元 81 OSD標(biāo)題 82 色盤 83 像素?cái)?shù)據(jù)
具體實(shí)施例方式 有關(guān)本發(fā)明的前述及其它技術(shù)內(nèi)容、特點(diǎn)與效果,在以下結(jié)合附圖的一較佳實(shí)施例的詳細(xì)說明中,將可更為清楚。
參閱圖2,本發(fā)明圖像聲音譯碼/播放/復(fù)制系統(tǒng)100是能將一存儲(chǔ)介質(zhì)的文件結(jié)構(gòu),例如目錄名稱、文件名稱等,以直接屏幕顯示(以下簡稱OSD)方式顯示在一顯示器300上。
本實(shí)施例中,存儲(chǔ)介質(zhì)是一光盤片200,例如CD-R、CD-RW、DVD、DVD-R、DVD+R、DVD RAM、DVD-RW、DVD-RW…等等各式的光學(xué)存儲(chǔ)介質(zhì)。此存儲(chǔ)介質(zhì)中并存儲(chǔ)有依據(jù)MPEG標(biāo)準(zhǔn)規(guī)范所壓縮的圖像或聲音文件,例如擴(kuò)展名為mpg的圖像聲音文件,或如擴(kuò)展名為mp3的聲音文件,但并不僅以此為限,例如為一般圖像聲音播放裝置所支持的其它圖像聲音文件(*.wmv,*.wma,*.wav,*jpg,*.mid,…..)。需說明的是,本實(shí)施例中的文件是以繁體中文來作為其文件名的編碼方式,因此其文件名無法在以往的譯碼系統(tǒng)中通過OSD方式來顯示。另外,運(yùn)用于光學(xué)存儲(chǔ)介質(zhì)上的MPEG標(biāo)準(zhǔn)通??煞譃镸PEG-1(ISO/IEC 11172),以及MPEG-2(ISO/IEC13818)兩種,前者是用在一般VCD光盤片上,后者則是用在DVD或SVCD光盤片上。此外,存儲(chǔ)介質(zhì)亦可由存儲(chǔ)卡700來實(shí)現(xiàn),兩種存儲(chǔ)裝置均可用來實(shí)施本發(fā)明的技術(shù)。
此外,存儲(chǔ)介質(zhì)(200,700)中并存儲(chǔ)有多種雙位字集(DBCS)字型文件,每個(gè)字型文件是對(duì)應(yīng)著不同的內(nèi)碼系統(tǒng),并具有該內(nèi)碼系統(tǒng)所指定的所有字符,本實(shí)施例中,僅以五種字型文件來作說明,但不應(yīng)以此作為本實(shí)施例的限制。五種字型文件的文件名分別為big5.24、gbk.24、unicode.24,ksc5601.24,以及shift-jis.24,其中,big5.24是對(duì)應(yīng)BIG5的內(nèi)碼系統(tǒng),約有一萬三千個(gè)繁體漢字字符,gbk.24是對(duì)應(yīng)GBK的內(nèi)碼系統(tǒng)(簡體中文),unicode.24是對(duì)應(yīng)于Unicode 2.0的內(nèi)碼系統(tǒng)(11172個(gè)韓文字符),ksc5601.24是對(duì)應(yīng)于ksc5601的內(nèi)碼系統(tǒng)(11172個(gè)韓文字符),而shift-jis.24是對(duì)應(yīng)于Shift-JIS日文字型的編碼系統(tǒng) 。
參閱圖3,顯示的是big5.24字型文件中,BIG5編碼系統(tǒng)下所有繁體漢字字符的邏輯對(duì)應(yīng)表,如圖所示,BIG編碼系統(tǒng)是以起始位置為「A140」(以16進(jìn)制表示)至終止位置為「F9FE」間的位置編排每一繁體漢字字符的內(nèi)碼,然而,其間并非所有的位置都有相對(duì)應(yīng)的漢字字符,可能為特殊符號(hào),或可能是供使用者自行定義的空格符,其中,第一個(gè)漢字字符「一」的內(nèi)碼位置是在「A440」,第二個(gè)漢字字符「乙」的內(nèi)碼位置是在「A441」,第三個(gè)漢字字符「丁」的內(nèi)碼位置是在「A442」,其余類推。
在文件的實(shí)體存放內(nèi)容中,每一個(gè)中文的內(nèi)碼(2個(gè)字節(jié))后方緊接著是一個(gè)以72字節(jié)來表示的繁體漢字字符(72字節(jié)=24bits×24bits,此字符顯示在顯示器300上的大小為24×24),因此必需得知其內(nèi)碼后,才能由該內(nèi)碼來取得相對(duì)應(yīng)的字符。
若存儲(chǔ)介質(zhì)(200,700)選擇為光盤片200,其使用的文件系統(tǒng)是Juliet,因此可以支持文件名為繁體中文的文件。眾所周知,其它諸如Romeo、UDF,以及ISO 9660等,均為光學(xué)存儲(chǔ)介質(zhì)所能應(yīng)用的文件系統(tǒng),其中,ISO 9660文件系統(tǒng)特別可適用于各式的操作系統(tǒng),然其缺點(diǎn)為僅支持8位的文件名,以及3位的擴(kuò)展名。藉由文件系統(tǒng)的讀取,就可以得知存儲(chǔ)介質(zhì)中每個(gè)文件的實(shí)體存放位置、路徑、目錄,以及名稱等信息。此外,上述各字型文件的擴(kuò)展名僅是用來與其它種類的文件來作明顯區(qū)隔,其擴(kuò)展名的指定可依設(shè)計(jì)時(shí)的不同而加以改變,并不僅限于上述的擴(kuò)展名「24」。
圖像聲音譯碼/播放/復(fù)制系統(tǒng)100主要包含了一光學(xué)讀寫頭1、一處理器2、一只讀存儲(chǔ)器3、一動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器4(以下簡稱DRAM)、一控制器5、一視頻信號(hào)處理器6、一音訊處理器7、以及一OSD緩沖存儲(chǔ)器8等等。本發(fā)明還包含一圖像聲音來源及OSD字型文件檢測(cè)模塊9、其是用來檢測(cè)圖像聲音來源文件及OSD字型文件(雙位字集文件)的位置,并在當(dāng)有數(shù)種型式的存儲(chǔ)介質(zhì)記錄圖像聲音來源及OSD字型文件可以獲得時(shí),切換圖像聲音來源文件及OSD字型文件的位置。若是采用光盤片200為記錄圖像聲音來源文件與雙位字集文件的存儲(chǔ)介質(zhì)(200,700),則需通過光學(xué)讀寫頭1讓處理器對(duì)其進(jìn)行數(shù)據(jù)的讀取與寫入。處理器2是數(shù)字譯碼系統(tǒng)100中的控制核心,負(fù)責(zé)協(xié)調(diào)各構(gòu)件間的通訊與數(shù)據(jù)傳輸,亦能受使用者控制而執(zhí)行特定功能,例如開、關(guān)機(jī)、啟動(dòng)OSD功能…。
只讀存儲(chǔ)器3中存儲(chǔ)有多個(gè)計(jì)算機(jī)程序碼,供處理器2讀取至DRAM中,以便能夠快速地執(zhí)行特定功能,依其功能劃分,其具有一文件過濾模塊31以及一字符計(jì)算模塊32,文件過濾模塊31的功能乃在讀取存儲(chǔ)介質(zhì)(200,700)的文件系統(tǒng),并辨別出不同文件的擴(kuò)展名,以便擷取出所需的文件,例如雙位字集文件。字符計(jì)算模塊32則能自雙位字集文件中,計(jì)算出所需的字符在存儲(chǔ)介質(zhì)中的實(shí)體位置,并依此位置取得所需字符,此部分將于下文中再行詳述。
控制器5是受處理器2的控制,并能接收來自于光學(xué)讀寫頭1自存儲(chǔ)介質(zhì)200中讀取出的數(shù)據(jù),例如包含了圖像與聲音的MPEG-2比特流(bitstream),控制器5的功能類似于一去復(fù)用器(demux),能夠?qū)D像數(shù)據(jù)與聲音數(shù)據(jù)分離,并分別交由視頻信號(hào)處理器6與音訊處理器7加以處理后輸出。
視頻信號(hào)處理器6主要在進(jìn)行MPEG-2的譯碼工作,依序進(jìn)行可變長度譯碼(VLD)、反量化運(yùn)算(inverse Quantization)、反離散余弦轉(zhuǎn)換編碼(IDCT)、動(dòng)態(tài)補(bǔ)償(motion compensation)等操作,就能夠?qū)D像比特流轉(zhuǎn)換為原始的圖像數(shù)據(jù),最后再經(jīng)編碼為NTSC或PAL格式的畫面,就能夠輸出至顯示器300上。
音訊處理器7也是進(jìn)行與視頻信號(hào)處理器6相類似的工作,當(dāng)聲音信號(hào)被解壓縮還原后,再經(jīng)過數(shù)字/模擬轉(zhuǎn)換,就能輸出至揚(yáng)聲器400上,進(jìn)行聲音的輸出。
控制器5具有一OSD單元51,其利用OSD緩沖存儲(chǔ)器8來存儲(chǔ)OSD數(shù)據(jù)與相關(guān)的OSD規(guī)格,參閱圖4,OSD數(shù)據(jù)主要包含有標(biāo)題(header)81、色盤(palette)82,以及像素?cái)?shù)據(jù)(pixel data)83等,其中,標(biāo)題81記錄了OSD顯示的區(qū)域坐標(biāo)、功能碼(function code)以及色盤的數(shù)據(jù)輸入(entry),功能碼指定OSD是采取4色、16色或256色哪一種模式顯示,色盤82記錄了每一個(gè)OSD像素的亮度與彩度,像素?cái)?shù)據(jù)83則記錄每一像素的色彩索引值,以便于正確地顯示在顯示器300的特定區(qū)域。
當(dāng)使用者啟動(dòng)OSD功能后,OSD單元51即響應(yīng)處理器2的要求,自O(shè)SD緩沖存儲(chǔ)器8中讀出OSD數(shù)據(jù),并依據(jù)使用者所指定的OSD選項(xiàng)(例如顯示選單)來處理特定的OSD數(shù)據(jù),隨后OSD單元51即把處理完畢的OSD數(shù)據(jù)傳送至視頻信號(hào)處理器6上,使其與解碼后的畫面迭合,并傳送至顯示器300上供使用者觀看。
參閱圖5,圖5示出了本發(fā)明以直接屏幕顯示的方法顯示雙位字集以更新顯示畫面的程序。在步驟501中,在存儲(chǔ)介質(zhì)(200,700)中存儲(chǔ)雙位字集文件及圖像聲音來源文件,此字型文件需與此存儲(chǔ)介質(zhì)(200,700)的文件系統(tǒng)相配合,例如存儲(chǔ)介質(zhì)(200,700是以繁體中文來記錄目錄、文件的名稱,則至少有一字型文件是用來存儲(chǔ)繁體中文的字符,本實(shí)施例中存儲(chǔ)有五種字型文件big5.24、gbk.24、unicode.24、ksc5601.24以及shift-jis.24來支持繁體中文、簡體中文、韓文以及日文等三種語系。至于將字型文件存儲(chǔ)于存儲(chǔ)介質(zhì)(200,700)中的時(shí)機(jī),可以是空白的存儲(chǔ)介質(zhì)出廠時(shí)內(nèi)建于其中,也可以是使用者利用計(jì)算機(jī)(圖未示)將文件燒錄于存儲(chǔ)介質(zhì)(200,700)時(shí)一并寫入,由于字型文件的大小一般僅在400~1MB之間,故僅占存儲(chǔ)介質(zhì)空間的極小部分。
在步驟502與503中,當(dāng)使用者啟動(dòng)OSD后,處理器2即讀取存儲(chǔ)介質(zhì)(200,700)的文件系統(tǒng),因此OSD單元51可以得知存儲(chǔ)于存儲(chǔ)介質(zhì)(200,700)中的目錄名稱及文件名稱并且計(jì)算存儲(chǔ)介質(zhì)中的圖像聲音來源文件的文件名稱的長度。
在步驟504中,由于OSD緩沖存儲(chǔ)器8或只讀存儲(chǔ)器3中并未存儲(chǔ)有繁體漢字字符,因此OSD單元51必需依據(jù)前述文件名稱的內(nèi)碼,由存儲(chǔ)介質(zhì)(200,700)的字型文件中獲取相對(duì)應(yīng)的字符。因?yàn)樘幚砥?已藉由文件過濾模塊31讀取出所有擴(kuò)展名為「24」的文件,故知至少能支持五種不同的內(nèi)碼系統(tǒng)BIG-5(繁體中文)、GBK(簡體中文)、Unicode 2.0(韓文)、ksc5601(韓文)以及Shift-JIS(日文)。
經(jīng)由處理器2自行檢測(cè),或是由使用者加以指定,就能知道目前是要由哪一個(gè)雙位字集文件中獲取相對(duì)應(yīng)的字符。在進(jìn)行相對(duì)應(yīng)的字符讀取前,雖已知所欲字符的內(nèi)碼,但由于雙位字集文件記錄字符的方式是在每一內(nèi)碼后再記錄其相對(duì)應(yīng)字符的數(shù)據(jù)(72字節(jié)),即每一內(nèi)碼的實(shí)體位置會(huì)較前一內(nèi)碼偏移有72個(gè)字節(jié),故在知道此所需字符的內(nèi)碼后,尚需計(jì)算出所需字符的總偏移量,才能由字型文件的實(shí)體位置加上總偏移量,以得到該字符的實(shí)體位置。
由于每一種內(nèi)碼系統(tǒng)所定義的內(nèi)碼不同,因此其計(jì)算總偏移量的程序亦不相同,在此分別列舉本實(shí)施例中各字型文件計(jì)算總偏移量的程序及設(shè)計(jì)說明系列示如下 (1)繁體中文(BIG5) Set Code/*設(shè)定內(nèi)碼值*/Set Code1,Code2/*設(shè)定內(nèi)碼值的高、低字節(jié)*/Set i,j/*設(shè)定暫存變量*/Set Total-Offset/*設(shè)定總偏移量*/If(Code≥0xA140 && Code≤0xF9FE)/*判斷內(nèi)碼值是否在0xA140與0xF9FE的區(qū)間中*/{code1=(Code & 0xFF00)>>8; /*取內(nèi)碼值的高字節(jié)*/code2=(Code & 0xFF); /*取內(nèi)碼值的低字節(jié)*/i=(code1-0xA1);/ *計(jì)算內(nèi)碼值的高字節(jié)與初始內(nèi)碼值高字節(jié)間的差距*/j=(code2-0x40);/*計(jì)算內(nèi)碼值的低字節(jié)與初始內(nèi)碼低字節(jié)間的差距*/if(code2>0XA0)j=j(luò)-34;/*由于內(nèi)碼值的低字節(jié)在0x7F至0xA0間共有34個(gè)位置并未編碼,故需將計(jì)算出來的內(nèi)碼值的低字節(jié)與初始內(nèi)碼低字節(jié)間的差距減去34以便將空白編碼位置忽略不計(jì)*/<!-- SIPO <DP n="8"> --><dp n="d8"/>Total-Offset=2+(i×(12×16-35)×74)+(j×72)+(j×2);)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/*根據(jù)內(nèi)碼值的高字節(jié)與初始內(nèi)碼值的高字節(jié)間的差距,內(nèi)碼值的低字<br/>節(jié)與初始內(nèi)碼值的低字節(jié)間的差距減去空白編碼位置數(shù)量的數(shù)值,以及字<br/>集字節(jié)數(shù)目(2bytes)加上字型數(shù)據(jù)字節(jié)數(shù)目(72bytes)的總和來計(jì)算總偏移<br/>量*/ 舉例來說,Big5繁體中文編碼系統(tǒng)乃是從0xA140至0xF9FF開始編碼,因此其初始內(nèi)碼值設(shè)定為0xA140而終止內(nèi)碼值為0xF9F。該方法的執(zhí)行步驟一開始先設(shè)定所有運(yùn)算參數(shù)以及暫存變量,并且判斷想要的雙位字符的內(nèi)碼值是否落在Big5繁體中文編碼系統(tǒng)的編碼范圍內(nèi)。若是,則分別擷取出內(nèi)碼值的高字節(jié)與低字節(jié),并且分別計(jì)算內(nèi)碼值的高字節(jié)與初始內(nèi)碼值的高字節(jié)間的差距,以及計(jì)算內(nèi)碼值的低字節(jié)與初始內(nèi)碼值的低字節(jié)間的差距。接下來,由于內(nèi)碼值的低字節(jié)在0x7F至0xA0間共有34個(gè)位置并未編碼(null character),故需跳過不計(jì)并將計(jì)算出來的內(nèi)碼值的低字節(jié)與初始內(nèi)碼值的低字節(jié)間的差距再減掉34。最后,根據(jù)想要的雙位字符的內(nèi)碼值的高字節(jié)與初始內(nèi)碼值的高字節(jié)間的差距,想要的雙位字符的內(nèi)碼的內(nèi)碼值的低字節(jié)與初始內(nèi)碼值的低字節(jié)間的差距減去空白編碼位置數(shù)量的數(shù)值,以及雙位字符字節(jié)數(shù)目加上字型數(shù)據(jù)字節(jié)數(shù)目的總和來計(jì)算想要的雙位字符在該存儲(chǔ)介質(zhì)中的實(shí)體位置。以「一」字符為例,其高字節(jié)即是指四個(gè)內(nèi)碼中的前兩個(gè)內(nèi)碼「A4」,低字節(jié)是指后兩個(gè)內(nèi)碼「40」,其計(jì)算方式即是由BIG5的內(nèi)碼系統(tǒng)所定義的起始位置「A140」、終止位置「F9FE」,計(jì)算出其總偏移量,即能得知每一字符儲(chǔ)放的實(shí)體位置,下文中其余數(shù)種內(nèi)碼系統(tǒng)的計(jì)算方式亦大致相同。
(2)簡體中文(GBK) Set CodeSet Code1,Code2Set i,jSet Total-OffsetIf(Code≥0x8140 && Code≤0xFEFF)/*判段內(nèi)碼值是否在0x8140與0xFEFF的區(qū)間中*/<!-- SIPO <DP n="9"> --><dp n="d9"/>{code1=(Code & 0xFF00)>>8;/*取內(nèi)碼值的高字節(jié)*/code2=(Code & 0xFF); /*取內(nèi)碼值的低字節(jié)*/i=(code1-0x81);/*計(jì)算內(nèi)碼值的高字節(jié)與初始內(nèi)碼值高字節(jié)間的差距*/j=(code2-0x40);/*計(jì)算內(nèi)碼值的低字節(jié)與初始內(nèi)碼低字節(jié)間的差距*/if(code2>0x7F)j=j(luò)-1;/*由于內(nèi)碼值的低字節(jié)在0x7F這個(gè)位置并未編碼,故需將計(jì)算出來的內(nèi)碼值的低字節(jié)與初始內(nèi)碼低字節(jié)間的差距減去1以便將這個(gè)空白編碼位置忽略不計(jì)*/Total-Offset=2+(i×(12×(16-2)×74)+(j×72)+(j×2);)))))))))))))。/*根據(jù)內(nèi)碼值的高字節(jié)與初始內(nèi)碼值的高字節(jié)間的差距,內(nèi)碼值的低字節(jié)與初始內(nèi)碼值的低字節(jié)間的差距減去空白編碼位置數(shù)量的數(shù)值,以及字集字節(jié)數(shù)目(2bytes)加上字型數(shù)據(jù)字節(jié)數(shù)目(72bytes)的總和來計(jì)算總偏移量*/ (3)韓文(Unicode 2.0) Set CodeSet Code1,Code2Set i,jSet Total-OffsetIf(Code≥0xAC00 && Code≤0xD7A3)/*判段內(nèi)碼值是否在0xAC00與0xD7A3的區(qū)間中*/{code1=(Code & 0xFF00)>>8;/*取內(nèi)碼值的高字節(jié)*/code2=(Code & 0xFF);/*取內(nèi)碼值的低字節(jié)*/i=(code1-0xAC);/*計(jì)算內(nèi)碼值的高字節(jié)與初始內(nèi)碼值高字節(jié)間的差距*/j=(code2-0x00);/*計(jì)算內(nèi)碼值的低字節(jié)與初始內(nèi)碼低字節(jié)間的差距*/Total-Offset=2+(i×(16×16)×74)+(j×72)+(j×2);}。/*根據(jù)內(nèi)碼值的高字節(jié)與初始內(nèi)碼值的高字節(jié)間的差距,內(nèi)碼值的低字節(jié)與初始內(nèi)碼值的低字節(jié)間的差距減去空白編碼位置數(shù)量的數(shù)值,以及字集字節(jié)數(shù)目(2bytes)加上字型數(shù)據(jù)字節(jié)數(shù)目(72bytes)的總和來計(jì)算總偏移量*/ (4)韓文(Johab/KSC05601-1992) Set CodeSet Code1,Code2Set i,j,k,m,n,pSet Total-OffsetIf(Code≥0x8861 && Code≤0xD3BD){code1=(Code & 0xFF00)>>8;code2=(Code & 0xFF);i=(code1-0x88);m=(i%4);k=(i>>2)j=(code-0x8860)-(k×1024);n=(j+32)-(2×m);p=code2>>4;q=(code2 & 0xf)if((p%2)?。?){if(q>2)Total-Offset=2+[(k×588)+(j-2-(m×64)-(n×4))]×74;elseTotal-Offset=2+[(k×588)+(j-1-(m×64)-(n×4))]×74;}elseTotal-Offset=2+[(k×588)+(j-1-(m×64)-(n×4))]×74;}。
(5)日文(Shift-JIS) (1)If(Code≥0x889F && Code≤0x9872)/*判段內(nèi)碼值是否在0x889F與0x9872的第一區(qū)間中*/{code1=(Code & 0xFF00)>>8;/*取內(nèi)碼值的高字節(jié)*/<!-- SIPO <DP n="11"> --><dp n="d11"/>code2=(Code & 0xFF);/*取內(nèi)碼值的低字節(jié)*/i=(code1-0x88); /*計(jì)算內(nèi)碼值的高字節(jié)與初始內(nèi)碼值高字節(jié)間的差距*/j=(code2-0x40); /*計(jì)算若內(nèi)碼值在0x8940~0x9872的部分區(qū)間時(shí),內(nèi)碼值的低字節(jié)與與此區(qū)間的初始內(nèi)碼值的低字節(jié)間的差距*/if(i==0)/*內(nèi)碼值的范圍在0x889F~0x88FC之間*/{k=(code2-0x9F); /*計(jì)算內(nèi)碼值與初始內(nèi)碼值間的位移*/}else/*內(nèi)碼值的范圍在0x8940~0x9872之間*/{if(code2>0x7F){k=94+(i-1)×(10×16+15+13)+(j-1);/*計(jì)算內(nèi)碼值與初始內(nèi)碼值間的位移*/}else{k=94+(i-1)×(10×16+15+13)+j;/*計(jì)算內(nèi)碼值與初始內(nèi)碼值間的位移*/}}Total-Offset=2+(k×74);/*根據(jù)字集字節(jié)數(shù)目(2bytes)加上字型數(shù)<br/>據(jù)字節(jié)數(shù)目(72bytes)的總和與內(nèi)碼值與初始內(nèi)碼值之間的位移來計(jì)算總<br/>偏移量*/}/*計(jì)算字集范圍從0x989F~0x9FFC*/(2)If(Code≥0x989F && Code≤0x9FFC)/*判段內(nèi)碼值是否在0x989F與0x9FFC的區(qū)間中*/<!-- SIPO <DP n="12"> --><dp n="d12"/>{code1=(Code & 0xFF00)>>8; /*取內(nèi)碼值的高字節(jié)*/code2=(Code & 0xFF); /*取內(nèi)碼值的低字節(jié)*/i=(code1-0x98);/*計(jì)算內(nèi)碼值的高字節(jié)與初始內(nèi)碼值高字節(jié)間的差距*/j=(code2-0x40); /*計(jì)算若內(nèi)碼值在0x9940~0x9FFC的區(qū)間時(shí),內(nèi)碼值的低字節(jié)與與此區(qū)間的初始內(nèi)碼值的低字節(jié)間的差距*/if(i==0) /*內(nèi)碼值的范圍在0x989F~0x98FC之間*/k=2965+(code2-0x9F); /*2965是從(1)式得來的將0x9872的內(nèi)碼值代入(1)式得到從0x889F~0x9872位置的偏移量為2965*/else /*內(nèi)碼值的范圍在0x9940~0x9FFC之間*/{if(code2>0x7F){k=2965+94+(i-1)×(10×16+15+13)+(j-1);/*根據(jù)字集字節(jié)數(shù)目(2bytes)加上字型數(shù)據(jù)字節(jié)數(shù)目(72bytes)的總和與內(nèi)碼值與初始內(nèi)碼值之間的位移來計(jì)算總偏移量*/}else{k=2965+94+(i-1)×(10×16+15+13)+j;} /*計(jì)算內(nèi)碼值與初始內(nèi)碼值間的位移*/}Total-Offset=2+(k×74);/*74表示字集(2bytes)+字型data是72(bytes)=74(bytes)*/} /*根據(jù)字集字節(jié)數(shù)目(2bytes)加上字型數(shù)據(jù)字節(jié)數(shù)目(72bytes)的總和與內(nèi)碼值與初始內(nèi)碼值之間的位移來計(jì)算總偏移量*/(3)/*計(jì)算字集范圍從0xE040~0xEAA2*/If(Code≥0xE040 && Code≤0xEAA2)/*判段內(nèi)碼值是否在0xE040與<!-- SIPO <DP n="13"> --><dp n="d13"/>0xEAA2的區(qū)間中*/{code1=(Code & 0xFF00)>>8;/*取內(nèi)碼值的高字節(jié)*/code2=(Code & 0xFF);/*取內(nèi)碼值的低字節(jié)*/i=(code1-0xE0);/*計(jì)算內(nèi)碼值的高字節(jié)與初始內(nèi)碼值高字節(jié)間的差距*/j=(code2-0x40);/*計(jì)算內(nèi)碼值的低字節(jié)與初始內(nèi)碼值低字節(jié)間的差距*/if(code2>0x7F){k=4375+i×(10×16+15+13)+(j-1);}/*4375是從(2)式得來的將內(nèi)碼值0x9FFC代入(2)式得到從0x889F~0x9FFC的總偏移量為4375*/else{k=4375+i×(10×16+15+13)+j;} /*計(jì)算內(nèi)碼值與初始內(nèi)碼值間的位移*/Total-Offset=2+k×74;/*根據(jù)字集字節(jié)數(shù)目(2bytes)加上字型數(shù)據(jù)字節(jié)<br/>數(shù)目(72bytes)的總和與內(nèi)碼值與初始內(nèi)碼值之間的位移來計(jì)算總偏移量*/} 在步驟505、506中,得知所需字符的實(shí)體位置后,即自字型文件中獲取所需的字符數(shù)據(jù),而在取得此字符數(shù)據(jù)后,OSD單元51即知此字符需在畫面的哪些像素(24×24bits)需以特定顏色來顯示為一字符,因此配合OSD緩沖存儲(chǔ)器8中的OSD數(shù)據(jù),就能夠更新原有的OSD數(shù)據(jù)并將字符顯示在顯示器300上。
綜上所述,本發(fā)明將字型文件存儲(chǔ)在存儲(chǔ)介質(zhì)中,不需要額外的存儲(chǔ)器空間就可以存儲(chǔ)有各式的雙字符字集的字型,因此不論以何種雙字符字集內(nèi)碼系統(tǒng)存儲(chǔ)的文件系統(tǒng),都能夠藉由正確地計(jì)算出每一字符的偏移量,而自存儲(chǔ)介質(zhì)中取得每一內(nèi)碼所相對(duì)應(yīng)的字符,并正確地顯示于顯示器上,故能以屏幕直接顯示方式(OSD)得知存儲(chǔ)介質(zhì)中的文件結(jié)構(gòu),方便使用者進(jìn)行播放、管理,確實(shí)實(shí)現(xiàn)本發(fā)明的目的。
上述實(shí)施例僅為本發(fā)明的較佳實(shí)施例而已,并非以此限定本發(fā)明實(shí)施的范圍,凡依據(jù)本發(fā)明權(quán)利要求及說明書內(nèi)容所作的簡單的等效變化與修飾,均應(yīng)仍屬本發(fā)明專利涵蓋的范圍。
權(quán)利要求
1.一種在一圖像聲音譯碼/播放/復(fù)制系統(tǒng)的一顯示裝置上顯示一雙位字符并藉以更新該顯示裝置的顯示畫面的方法,該方法包含下列步驟
A)存儲(chǔ)一雙位字集文件以及一圖像聲音來源文件于一存儲(chǔ)介質(zhì)中;
B)讀取該存儲(chǔ)介質(zhì)的文件系統(tǒng)的信息并計(jì)算該圖像聲音來源文件的文件名稱的長度;
C)自該雙位字集文件中的取得想要的雙位字符;以及
D)以取得的雙位字符更新原始的直接屏幕顯示數(shù)據(jù),藉此更新該圖像聲音譯碼/播放/復(fù)制系統(tǒng)的該顯示裝置的顯示畫面。
2.如權(quán)利要求1所述的方法,其中,該存儲(chǔ)介質(zhì)為光盤片以及存儲(chǔ)卡中其中一種。
3.如權(quán)利要求1所述的方法,其中,該步驟C)還包含下列次步驟
C1)計(jì)算想要的雙位字符于該存儲(chǔ)介質(zhì)中的實(shí)體位置;以及
C2)由各該實(shí)體位置擷取與想要的雙位字符。
4.如權(quán)利要求3所述的方法,其中,若該雙位字集文件是采用BIG5內(nèi)碼系統(tǒng)或gbk內(nèi)碼系統(tǒng)或Unicode韓文內(nèi)碼系統(tǒng),該步驟(C1)是以下列步驟來完成
計(jì)算想要的雙位字符的內(nèi)碼的高字節(jié)與雙位字集文件的初始內(nèi)碼之間的高字節(jié)差距以及低字節(jié)差距;以及
根據(jù)想要的雙位字符的內(nèi)碼的高字節(jié)與初始內(nèi)碼值的高字節(jié)間的差距,想要的雙位字符的內(nèi)碼的內(nèi)碼的低字節(jié)與初始內(nèi)碼的低字節(jié)間的差距減去空白編碼位置數(shù)量的數(shù)值,以及雙位字符字節(jié)數(shù)目加上字型數(shù)據(jù)字節(jié)數(shù)目的總和來計(jì)算想要的雙位字符于該存儲(chǔ)介質(zhì)中的實(shí)體位置。
5.如權(quán)利要求3所述的方法,其中,若該雙位字集文件是采用Shift-JIS內(nèi)碼系統(tǒng),該步驟(C1)是以下列步驟來完成
若想要的雙位字符的內(nèi)碼落于該內(nèi)碼系統(tǒng)的第一區(qū)間中,計(jì)算想要的雙位字符的內(nèi)碼的高字節(jié)與該第一區(qū)間的初始內(nèi)碼的高字節(jié)間的差距,計(jì)算想要的雙位字符的內(nèi)碼的低字節(jié)與該第一區(qū)間的初始內(nèi)碼的低字節(jié)間的差距,并根據(jù)想要的雙位字符的內(nèi)碼的高字節(jié)與初始內(nèi)碼值的高字節(jié)間的差距,想要的雙位字符的內(nèi)碼的內(nèi)碼的低字節(jié)與初始內(nèi)碼的低字節(jié)間的差距減去空白編碼位置數(shù)量的數(shù)值,以及雙位字符字節(jié)數(shù)目加上字型數(shù)據(jù)字節(jié)數(shù)目的總和來計(jì)算想要的雙位字符于該存儲(chǔ)介質(zhì)中的實(shí)體位置;
若想要的雙位字符的內(nèi)碼落于該內(nèi)碼系統(tǒng)的第二區(qū)間中,計(jì)算想要的雙位字符的內(nèi)碼的高字節(jié)與該第二區(qū)間的初始內(nèi)碼的高字節(jié)間的差距,計(jì)算想要的雙位字符的內(nèi)碼的低字節(jié)與該第二區(qū)間的初始內(nèi)碼的低字節(jié)間的差距,并根據(jù)想要的雙位字符的內(nèi)碼的高字節(jié)與初始內(nèi)碼值的高字節(jié)間的差距,想要的雙位字符的內(nèi)碼的內(nèi)碼的低字節(jié)與初始內(nèi)碼的低字節(jié)間的差距減去空白編碼位置數(shù)量的數(shù)值,第一區(qū)間內(nèi)的編碼位置所占據(jù)的位總數(shù),以及雙位字符字節(jié)數(shù)目加上字型數(shù)據(jù)字節(jié)數(shù)目的總和來計(jì)算想要的雙位字符于該存儲(chǔ)介質(zhì)中的實(shí)體位置;以及
若想要的雙位字符的內(nèi)碼落于該內(nèi)碼系統(tǒng)的第三區(qū)間中,計(jì)算想要的雙位字符的內(nèi)碼的高字節(jié)與該第三區(qū)間的初始內(nèi)碼的高字節(jié)間的差距,計(jì)算想要的雙位字符的內(nèi)碼的低字節(jié)與該第三區(qū)間的初始內(nèi)碼的低字節(jié)間的差距,并根據(jù)想要的雙位字符的內(nèi)碼的高字節(jié)與初始內(nèi)碼值的高字節(jié)間的差距,想要的雙位字符的內(nèi)碼的內(nèi)碼的低字節(jié)與初始內(nèi)碼的低字節(jié)間的差距減去空白編碼位置數(shù)量的數(shù)值,第一區(qū)間與第二區(qū)間內(nèi)的編碼位置所占據(jù)的位總數(shù),以及雙位字符字節(jié)數(shù)目加上字型數(shù)據(jù)字節(jié)數(shù)目的總和來計(jì)算想要的雙位字符于該存儲(chǔ)介質(zhì)中的實(shí)體位置。
6.如權(quán)利要求1所述的方法,其中該圖像聲音來源文件為一MP3文件。
7.一種圖像聲音譯碼/播放/復(fù)制系統(tǒng),其是以直接屏幕顯示方法顯示雙位字符于其一顯示器上,并藉此以更新該顯示器的顯示畫面,該圖像聲音譯碼/播放/復(fù)制系統(tǒng)包含
一存儲(chǔ)介質(zhì),其記錄一圖像聲音來源文件以及至少一種雙位字集文件;
一直接屏幕顯示緩沖存儲(chǔ)器,存儲(chǔ)有直接屏幕顯示數(shù)據(jù);
一存儲(chǔ)器;
一處理器,與該存儲(chǔ)器相耦接,該處理器能讀取該存儲(chǔ)介質(zhì)的該文件系統(tǒng),并將該文件的名稱的內(nèi)碼暫儲(chǔ)至該存儲(chǔ)器中;以及
一直接屏幕顯示單元,與該直接屏幕顯示緩沖存儲(chǔ)器相耦接,該直接屏幕顯示單元能經(jīng)由該處理器自該雙位字集文件中根據(jù)該暫儲(chǔ)的文件名稱的內(nèi)碼擷取出所想要的雙位字符,并配合該直接屏幕顯示數(shù)據(jù),以直接屏幕顯示方式將所想要的雙位字符顯示于該顯示裝置上,藉此更新該顯示裝置的顯示畫面。
8.如權(quán)利要求7所述的圖像聲音譯碼/播放/復(fù)制系統(tǒng),其中,該處理器還具有一文件過濾模塊,能由該存儲(chǔ)介質(zhì)的文件系統(tǒng)中過濾出該雙位字集文件,以便進(jìn)行雙位字符的讀取。
9.如權(quán)利要求7所述的圖像聲音譯碼/播放/復(fù)制系統(tǒng),其中,該處理器還具有一字符計(jì)算模塊,能利用該雙位字集文件所定義的一起始位置與一終止位置間,計(jì)算出各該內(nèi)碼所對(duì)應(yīng)的字符的位置的偏移量,藉此得到各該字符的實(shí)體位置。
10.如權(quán)利要求7所述的圖像聲音譯碼/播放/復(fù)制系統(tǒng),其中,該存儲(chǔ)介質(zhì)為光盤片或存儲(chǔ)卡其中的一。
11.如權(quán)利要求7所述的圖像聲音譯碼/播放/復(fù)制系統(tǒng),還包含一圖像聲音來源及直接屏幕顯示字型文件檢測(cè)模塊,用以檢測(cè)圖像聲音來源文件及雙位字集文件的位置,并在當(dāng)有數(shù)種型式的存儲(chǔ)介質(zhì)記錄圖像聲音來源及雙位字集文件可以獲得時(shí),切換圖像聲音來源文件及雙位字集文件的位置。
12.如權(quán)利要求7所述的圖像聲音譯碼/播放/復(fù)制系統(tǒng),其中,該圖像聲音來源文件為一MP3文件。
全文摘要
本發(fā)明披露了一種以直接屏幕顯示方法在一圖像聲音譯碼/播放/復(fù)制系統(tǒng)的顯示裝置上顯示雙位字集的方法,以及利用此種方法來更新顯示畫面的圖像聲音譯碼/播放/復(fù)制系統(tǒng),其是在該存儲(chǔ)介質(zhì)中存儲(chǔ)至少一種雙位字集文件以及圖像聲音來源文件,讀取該存儲(chǔ)介質(zhì)的文件系統(tǒng)并取得圖像聲音來源文件的文件名稱的長度,由該文件系統(tǒng)取得該存儲(chǔ)介質(zhì)各個(gè)雙位字集文件的內(nèi)碼,并計(jì)算所需顯示字符的內(nèi)碼在該存儲(chǔ)介質(zhì)中的實(shí)體位置,以依據(jù)該實(shí)體位置自相對(duì)應(yīng)的字集文件中獲取相對(duì)應(yīng)該內(nèi)碼的字符,最后以該字符更新原有的OSD數(shù)據(jù)并更新一顯示器的顯示畫面。
文檔編號(hào)H04N5/66GK1592372SQ0315505
公開日2005年3月9日 申請(qǐng)日期2003年8月26日 優(yōu)先權(quán)日2003年8月26日
發(fā)明者金元昌 申請(qǐng)人:揚(yáng)智科技股份有限公司