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