显示双位字集方法以及图像声音 译码/播放/复制系统 【技术领域】
本发明涉及一种具备能显示双位字集(double byte character set,DBCS)的直接屏幕显示(on screen display,OSD)功能的图像声音译码/播放/复制系统及利用直接屏幕显示技术显示双位字集以更新图像声音译码/播放/复制系统的显示画面的的方法,特别是指一种不需要增加光学译码系统中的存储器大小,即能显示双位字集的光学系统及其方法。
背景技术
直接屏幕显示(以下简称OSD)在消费性电子产品中占据相当重要的地位,一般常用来提供互动信息,例如系统设定、导引目录等,供使用者直接进行系统组态的设定与控制。常见的OSD应用例是在个人计算机、电视机上,用来提供画面信息,并能供使用者对画面显示的相关参数进行直接调整。
如图1所示,为一视频信号处理系统500,主要包含有一处理器10、一OSD单元20、一视频信号译码器30、一混合器(mixer)40、一只读存储器50、一动态随机存取存储器60(以下简称DRAM),以及一OSD缓冲存储器70。
处理器10可以读取一存储介质(图未示)中所存储的数据,例如经压缩后的视频信号数据,当处理器10接收到视频信号数据的比特流(bistreams)后,即会传送至视频信号译码器30上,由视频信号译码器30进行译码的操作,译码后的画面(frame)会暂储在DRAM 60中,以便于重建出原始地画面后传送至显示器80上供使用者观看。
只读存储器50中存储有多个计算机程序码,用来进行此视频信号处理系统500开机时的初始化,以及视频信号译码等逻辑演算。OSD缓冲存储器70中则存储有包含OSD标题(OSD header)、OSD bitmap以及图示等等所构成的OSD数据,其中已指定了OSD数据出现在显示器80上的坐标位置、明亮度,以及每一像素的色彩索引值(index)等等。
当使用者启动OSD功能时,是以一OSD启动键(图未示)来控制处理器10,进而使OSD单元20去存取OSD信息,以建构出OSD画面,并当OSD画面被传送至混合器40后,藉由混合器40来迭加OSD画面与经视频信号译码器30译码后的原始图像画面,就能够产生一包含有OSD信息的画面。
一般显示在显示器80画面上的OSD信息,除了用图标来表达其意义以外,文字的辅助说明也甚为重要,故会在只读存储器50中存储相关字型来供OSD单元20通过处理器10进行读取,以作为显示时文字的来源依据。由于只读存储器50的造价不菲,故为降低整体成本起见,均仅存储特定的文字或字符(26个英文字母,以及某些特定文字、符号…),以避免需要采用高容量的只读存储器50。
上述的视频信号译码系统500,其OSD的另一种应用是以只读存储器50中的程序代码来读出存储介质中的目录名称与文件名称,以便使用者无需通过个人计算机,仅需利用OSD就能观看到存储介质中所存储的文件,然而因为只读存储器50中的字型有限,故往往仅能见到特定字符所建置的文件名称,若是以非拼音语系的内码系统,例如中文、韩文、日文…等等需要超过一个的字节来表示字符的双位字集语言系统所构成的文件名称,则因只读存储器50中并未存储有该内码系统中所定义的全部字符,往往造成文件名中的某些字符无法正确显示。
【发明内容】
有鉴于以往的缺点,本发明的目的是提供一种无需额外的存储器空间,即能以直接屏幕显示(OSD)方式来显示双位字集方法以及图像声音译码/播放/复制系统。
为了实现本发明的上述目的,在一较佳实施例中,本发明的图像声音译码/播放/复制系统具有一直接屏幕显示控制装置,此控制装置能读取一存储介质中的双位字集文件,并以直接屏幕显示方式将双位字集显示该文件结构于一显示器上以更新显示器的显示画面,其中该控制装置包含一OSD缓冲存储器、一存储器,以及一OSD单元。
该OSD缓冲存储器中存储有OSD数据,该图像声音译码/播放/复制系统的处理器是与该存储器相耦接,该处理器能读取该存储介质的该文件系统,并且计算存储介质中的图像声音来源文件的名称的长度。该OSD单元是与该OSD缓冲存储器相耦接,该OSD单元能经由该处理器,依据该内码自该字型文件中撷取出与该内码相对应的字符后,配合该OSD数据,以直接屏幕显示方式将该文件名称显示于该显示器上并更新该显示器的显示画面。
在该较佳实施例中,依据上述架构,本发明还提供一种利用以直接屏幕显示方式来显示出该文件系统的方法,其包含步骤:读取该存储介质的一文件系统并计算该存储介质的图像声音来源文件的文件名称的长度,接着由该文件系统取得构成该文件的名称的内码,并计算各该内码于该存储介质中的的双位字集文件的实体位置后,由各该实体位置撷取与各该内码相对应的字符,最后依据所述内码自该双位字集文件文件中取得相对应的字符,使得构成该名称的所述字符显示在一显示器上。
本发明的图像声音译码/播放/复制系统将双位字集文件存储于存储介质中,不需要额外的存储器空间就可以存储有各式的字型,因此不论以何种内码系统存储的文件系统,都能够藉由正确地计算出每一字符的实体位置后,自存储介质中取得每一内码所相对应的字符后显示在显示器上,因此不论以何种内码系统所建置的文件名都能够被正确地显示。
【附图说明】
图1是一示意图,说明以往视频信号处理系统中完成直接屏幕(OSD)显示功能的系统;
图2是一示意图,说明本发明利用直接屏幕显示方法来显示双位字集(DBCS)于的一较佳实施例
图3是一示意图,说明繁体中文BIG5内码系统的内码对照表;
图4是一示意图,说明OSD数据结构;以及
图5是一流程图,说明本发明以直接屏幕显示(OSD)方法显示双位字集(DBCS)以更新在一图像声音译码/播放/复制系统的显示画面的程序。
附图标号说明
100 数字译码系统
(200,700)存储介质
300 显示器
400 扬声器
1 光学读写头
2 处理器
3 只读存储器
4 动态随机存取存储器
5 控制器
6 视频信号处理器
7 音讯处理器
8 OSD缓冲存储器
9 图像声音来源及OSD字型文件检测模块
31 文件过滤模块
32 字符计算模块
51 OSD单元
81 OSD标题
82 色盘
83 像素数据
【具体实施方式】
有关本发明的前述及其它技术内容、特点与效果,在以下结合附图的一较佳实施例的详细说明中,将可更为清楚。
参阅图2,本发明图像声音译码/播放/复制系统100是能将一存储介质的文件结构,例如目录名称、文件名称等,以直接屏幕显示(以下简称OSD)方式显示在一显示器300上。
本实施例中,存储介质是一光盘片200,例如CD-R、CD-RW、DVD、DVD-R、DVD+R、DVD RAM、DVD-RW、DVD-RW…等等各式的光学存储介质。此存储介质中并存储有依据MPEG标准规范所压缩的图像或声音文件,例如扩展名为mpg的图像声音文件,或如扩展名为mp3的声音文件,但并不仅以此为限,例如为一般图像声音播放装置所支持的其它图像声音文件(*.wmv,*.wma,*.wav,*jpg,*.mid,…..)。需说明的是,本实施例中的文件是以繁体中文来作为其文件名的编码方式,因此其文件名无法在以往的译码系统中通过OSD方式来显示。另外,运用于光学存储介质上的MPEG标准通常可分为MPEG-1(ISO/IEC 11172),以及MPEG-2(ISO/IEC13818)两种,前者是用在一般VCD光盘片上,后者则是用在DVD或SVCD光盘片上。此外,存储介质亦可由存储卡700来实现,两种存储装置均可用来实施本发明的技术。
此外,存储介质(200,700)中并存储有多种双位字集(DBCS)字型文件,每个字型文件是对应着不同的内码系统,并具有该内码系统所指定的所有字符,本实施例中,仅以五种字型文件来作说明,但不应以此作为本实施例的限制。五种字型文件的文件名分别为:big5.24、gbk.24、unicode.24,ksc5601.24,以及shift-jis.24,其中,big5.24是对应BIG5的内码系统,约有一万三千个繁体汉字字符,gbk.24是对应GBK的内码系统(简体中文),unicode.24是对应于Unicode 2.0的内码系统(11172个韩文字符),ksc5601.24是对应于ksc5601的内码系统(11172个韩文字符),而shift-jis.24是对应于Shift-JIS日文字型的编码系统 。
参阅图3,显示的是big5.24字型文件中,BIG5编码系统下所有繁体汉字字符的逻辑对应表,如图所示,BIG编码系统是以起始位置为「A140」(以16进制表示)至终止位置为「F9FE」间的位置编排每一繁体汉字字符的内码,然而,其间并非所有的位置都有相对应的汉字字符,可能为特殊符号,或可能是供使用者自行定义的空格符,其中,第一个汉字字符「一」的内码位置是在「A440」,第二个汉字字符「乙」的内码位置是在「A441」,第三个汉字字符「丁」的内码位置是在「A442」,其余类推。
在文件的实体存放内容中,每一个中文的内码(2个字节)后方紧接着是一个以72字节来表示的繁体汉字字符(72字节=24bits×24bits,此字符显示在显示器300上的大小为24×24),因此必需得知其内码后,才能由该内码来取得相对应的字符。
若存储介质(200,700)选择为光盘片200,其使用的文件系统是Juliet,因此可以支持文件名为繁体中文的文件。众所周知,其它诸如Romeo、UDF,以及ISO 9660等,均为光学存储介质所能应用的文件系统,其中,ISO 9660文件系统特别可适用于各式的操作系统,然其缺点为仅支持8位的文件名,以及3位的扩展名。藉由文件系统的读取,就可以得知存储介质中每个文件的实体存放位置、路径、目录,以及名称等信息。此外,上述各字型文件的扩展名仅是用来与其它种类的文件来作明显区隔,其扩展名的指定可依设计时的不同而加以改变,并不仅限于上述的扩展名「24」。
图像声音译码/播放/复制系统100主要包含了一光学读写头1、一处理器2、一只读存储器3、一动态随机存取存储器4(以下简称DRAM)、一控制器5、一视频信号处理器6、一音讯处理器7、以及一OSD缓冲存储器8等等。本发明还包含一图像声音来源及OSD字型文件检测模块9、其是用来检测图像声音来源文件及OSD字型文件(双位字集文件)的位置,并在当有数种型式的存储介质记录图像声音来源及OSD字型文件可以获得时,切换图像声音来源文件及OSD字型文件的位置。若是采用光盘片200为记录图像声音来源文件与双位字集文件的存储介质(200,700),则需通过光学读写头1让处理器对其进行数据的读取与写入。处理器2是数字译码系统100中的控制核心,负责协调各构件间的通讯与数据传输,亦能受使用者控制而执行特定功能,例如开、关机、启动OSD功能…。
只读存储器3中存储有多个计算机程序码,供处理器2读取至DRAM中,以便能够快速地执行特定功能,依其功能划分,其具有一文件过滤模块31以及一字符计算模块32,文件过滤模块31的功能乃在读取存储介质(200,700)的文件系统,并辨别出不同文件的扩展名,以便撷取出所需的文件,例如双位字集文件。字符计算模块32则能自双位字集文件中,计算出所需的字符在存储介质中的实体位置,并依此位置取得所需字符,此部分将于下文中再行详述。
控制器5是受处理器2的控制,并能接收来自于光学读写头1自存储介质200中读取出的数据,例如包含了图像与声音的MPEG-2比特流(bitstream),控制器5的功能类似于一去复用器(demux),能够将图像数据与声音数据分离,并分别交由视频信号处理器6与音讯处理器7加以处理后输出。
视频信号处理器6主要在进行MPEG-2的译码工作,依序进行可变长度译码(VLD)、反量化运算(inverse Quantization)、反离散余弦转换编码(IDCT)、动态补偿(motion compensation)等操作,就能够将图像比特流转换为原始的图像数据,最后再经编码为NTSC或PAL格式的画面,就能够输出至显示器300上。
音讯处理器7也是进行与视频信号处理器6相类似的工作,当声音信号被解压缩还原后,再经过数字/模拟转换,就能输出至扬声器400上,进行声音的输出。
控制器5具有一OSD单元51,其利用OSD缓冲存储器8来存储OSD数据与相关的OSD规格,参阅图4,OSD数据主要包含有标题(header)81、色盘(palette)82,以及像素数据(pixel data)83等,其中,标题81记录了OSD显示的区域坐标、功能码(function code)以及色盘的数据输入(entry),功能码指定OSD是采取4色、16色或256色哪一种模式显示,色盘82记录了每一个OSD像素的亮度与彩度,像素数据83则记录每一像素的色彩索引值,以便于正确地显示在显示器300的特定区域。
当使用者启动OSD功能后,OSD单元51即响应处理器2的要求,自OSD缓冲存储器8中读出OSD数据,并依据使用者所指定的OSD选项(例如显示选单)来处理特定的OSD数据,随后OSD单元51即把处理完毕的OSD数据传送至视频信号处理器6上,使其与解碼后的画面迭合,并传送至显示器300上供使用者观看。
参阅图5,图5示出了本发明以直接屏幕显示的方法显示双位字集以更新显示画面的程序。在步骤501中,在存储介质(200,700)中存储双位字集文件及图像声音来源文件,此字型文件需与此存储介质(200,700)的文件系统相配合,例如存储介质(200,700是以繁体中文来记录目录、文件的名称,则至少有一字型文件是用来存储繁体中文的字符,本实施例中存储有五种字型文件:big5.24、gbk.24、unicode.24、ksc5601.24以及shift-jis.24来支持繁体中文、简体中文、韩文以及日文等三种语系。至于将字型文件存储于存储介质(200,700)中的时机,可以是空白的存储介质出厂时内建于其中,也可以是使用者利用计算机(图未示)将文件烧录于存储介质(200,700)时一并写入,由于字型文件的大小一般仅在400~1MB之间,故仅占存储介质空间的极小部分。
在步骤502与503中,当使用者启动OSD后,处理器2即读取存储介质(200,700)的文件系统,因此OSD单元51可以得知存储于存储介质(200,700)中的目录名称及文件名称并且计算存储介质中的图像声音来源文件的文件名称的长度。
在步骤504中,由于OSD缓冲存储器8或只读存储器3中并未存储有繁体汉字字符,因此OSD单元51必需依据前述文件名称的内码,由存储介质(200,700)的字型文件中获取相对应的字符。因为处理器2已藉由文件过滤模块31读取出所有扩展名为「24」的文件,故知至少能支持五种不同的内码系统:BIG-5(繁体中文)、GBK(简体中文)、Unicode 2.0(韩文)、ksc5601(韩文)以及Shift-JIS(日文)。
经由处理器2自行检测,或是由使用者加以指定,就能知道目前是要由哪一个双位字集文件中获取相对应的字符。在进行相对应的字符读取前,虽已知所欲字符的内码,但由于双位字集文件记录字符的方式是在每一内码后再记录其相对应字符的数据(72字节),即每一内码的实体位置会较前一内码偏移有72个字节,故在知道此所需字符的内码后,尚需计算出所需字符的总偏移量,才能由字型文件的实体位置加上总偏移量,以得到该字符的实体位置。
由于每一种内码系统所定义的内码不同,因此其计算总偏移量的程序亦不相同,在此分别列举本实施例中各字型文件计算总偏移量的程序及设计说明系列示如下:
(1)繁体中文(BIG5):
-->Total-Offset=2+(i×(12×16-35)×74)+(j×72)+(j×2) ;))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) )) /*根据内码值的高字节与初始内码值的高字节间的差距,内码值的低字节与初始内码值的低字节间的差距减去空白编码位置数量的数值,以及字集字节数目(2bytes)加上字型数据字节数目(72bytes)的总和来计算总偏移量*/]]>
举例来说,Big5繁体中文编码系统乃是从0xA140至0xF9FF开始编码,因此其初始内码值设定为0xA140而终止内码值为0xF9F。该方法的执行步骤一开始先设定所有运算参数以及暂存变量,并且判断想要的双位字符的内码值是否落在Big5繁体中文编码系统的编码范围内。若是,则分别撷取出内码值的高字节与低字节,并且分别计算内码值的高字节与初始内码值的高字节间的差距,以及计算内码值的低字节与初始内码值的低字节间的差距。接下来,由于内码值的低字节在0x7F至0xA0间共有34个位置并未编码(null character),故需跳过不计并将计算出来的内码值的低字节与初始内码值的低字节间的差距再减掉34。最后,根据想要的双位字符的内码值的高字节与初始内码值的高字节间的差距,想要的双位字符的内码的内码值的低字节与初始内码值的低字节间的差距减去空白编码位置数量的数值,以及双位字符字节数目加上字型数据字节数目的总和来计算想要的双位字符在该存储介质中的实体位置。以「一」字符为例,其高字节即是指四个内码中的前两个内码「A4」,低字节是指后两个内码「40」,其计算方式即是由BIG5的内码系统所定义的起始位置「A140」、终止位置「F9FE」,计算出其总偏移量,即能得知每一字符储放的实体位置,下文中其余数种内码系统的计算方式亦大致相同。
(2)简体中文(GBK):
-->{ code1=(Code & 0xFF00)>>8;/*取内码值的高字节*/ code2=(Code & 0xFF); /*取内码值的低字节*/ i=(code1-0x81);/*计算内码值的高字节与初始内码值高字节间的差距*/ j=(code2-0x40);/*计算内码值的低字节与初始内码低字节间的差距*/ if(code2>0x7F) j=j-1;/*由于内码值的低字节在0x7F这个位置并未编码,故需将计算出来的内码值的低字节与初始内码低字节间的差距减去1以便将这个空白编码位置忽略不计*/ Total-Offset=2+(i×(12×(16-2)×74)+(j×72)+(j×2);)))))))))))))。 /*根据内码值的高字节与初始内码值的高字节间的差距,内码值的低字节与初始内码值的低字节间的差距减去空白编码位置数量的数值,以及字集字节数目(2bytes)加上字型数据字节数目(72bytes)的总和来计算总偏移量*/]]>
(3)韩文(Unicode 2.0):
(4)韩文(Johab/KSC05601-1992):
(5)日文(Shift-JIS):
-->code2=(Code & 0xFF); /*取内码值的低字节*/ i=(code1-0x88); /*计算内码值的高字节与初始内码值高字节间的差 距*/ j=(code2-0x40); /*计算若内码值在0x8940~0x9872的部分区间时,内码值的低字节与与此区间的初始内码值的低字节间的差距*/if(i==0) /*内码值的范围在0x889F~0x88FC之间*/ { k=(code2-0x9F); /*计算内码值与初始内码值间的位移*/ } else/*内码值的范围在0x8940~0x9872之间*/ { if(code2>0x7F) { k=94+(i-1)×(10×16+15+13)+(j-1);/*计算内码 值与初始内码值间的位移*/ } else { k=94+(i-1)×(10×16+15+13)+j; /*计算内码值与初始内码值间的位移*/ } } Total-Offset=2+(k×74);/*根据字集字节数目(2bytes)加上字型数据字节数目(72bytes)的总和与内码值与初始内码值之间的位移来计算总偏移量*/ } /*计算字集范围从0x989F~0x9FFC*/ (2)If(Code≥0x989F && Code≤0x9FFC)/*判段内码值是否在 0x989F与0x9FFC的区间中*/{ code1=(Code & 0xFF00)>>8; /*取内码值的高字节*/ code2=(Code & 0xFF); /*取内码值的低字节*/ i=(code1-0x98); /*计算内码值的高字节与初始内码值高字节间的差 距*/ j=(code2-0x40); /*计算若内码值在0x9940~0x9FFC的区间时,内码 值的低字节与与此区间的初始内码值的低字节间的差距*/ if(i==0) /*内码值的范围在0x989F~0x98FC之间*/ k=2965+(code2-0x9F); /*2965是从(1)式得来的:将0x9872的 内码值代入(1)式得到从0x889F~0x9872位置的偏移量为2965*/ else /*内码值的范围在0x9940~0x9FFC之间*/ { if(code2>0x7F) { k=2965+94+(i-1)×(10×16+15+13)+(j-1);/*根 据字集字节数目(2bytes)加上字型数据字节数目(72bytes)的总和与内码值 与初始内码值之间的位移来计算总偏移量*/ } else { k=2965+94+(i-1)×(10×16+15+13)+j;} /*计算内 码值与初始内码值间的位移*/ } Total-Offset=2+(k×74);/*74表示字集(2bytes)+字型data是72 (bytes)=74(bytes)*/ } /*根据字集字节数目(2bytes)加上字型数据字节数目(72bytes)的总和与内码值与初始内码值之间的位移来计算总偏移量*/ (3) /*计算字集范围从0xE040~0xEAA2*/ If(Code≥0xE040 && Code≤0xEAA2)/*判段内码值是否在0xE040与0xEAA2的区间中*/ { code1=(Code & 0xFF00)>>8;/*取内码值的高字节*/ code2=(Code & 0xFF); /*取内码值的低字节*/ i=(code1-0xE0);/*计算内码值的高字节与初始内码值高字节间的差距*/ j=(code2-0x40);/*计算内码值的低字节与初始内码值低字节间的差距*/ if(code2>0x7F) { k=4375+i×(10×16+15+13)+(j-1); } /*4375是从(2)式得来的:将内码值0x9FFC代入(2)式得到从0x889F~0x9FFC的总偏移量为4375*/ else { k=4375+i×(10×16+15+13)+j; } /*计算内码值与初始内码值间的位移*/ Total-Offset=2+k×74;/*根据字集字节数目(2bytes)加上字型数据字节数目(72bytes)的总和与内码值与初始内码值之间的位移来计算总偏移量 */ }]]>
在步骤505、506中,得知所需字符的实体位置后,即自字型文件中获取所需的字符数据,而在取得此字符数据后,OSD单元51即知此字符需在画面的哪些像素(24×24bits)需以特定颜色来显示为一字符,因此配合OSD缓冲存储器8中的OSD数据,就能够更新原有的OSD数据并将字符显示在显示器300上。
综上所述,本发明将字型文件存储在存储介质中,不需要额外的存储器空间就可以存储有各式的双字符字集的字型,因此不论以何种双字符字集内码系统存储的文件系统,都能够藉由正确地计算出每一字符的偏移量,而自存储介质中取得每一内码所相对应的字符,并正确地显示于显示器上,故能以屏幕直接显示方式(OSD)得知存储介质中的文件结构,方便使用者进行播放、管理,确实实现本发明的目的。
上述实施例仅为本发明的较佳实施例而已,并非以此限定本发明实施的范围,凡依据本发明权利要求及说明书内容所作的简单的等效变化与修饰,均应仍属本发明专利涵盖的范围。