小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

MPEG-2系統(tǒng)原理之:Teletext原理

 lao_pan 2010-02-24
MPEG-2系統(tǒng)原理之:Teletext原理
2009-09-07 10:15
歐洲采用的Teletext 標準叫做"ITU-R System B Teletext",標準文檔是EN300472和EN300706.該標準支持以下特性:
(1) 24X40的文本字符顯示,也支持簡單的圖象信息的顯示.
(2) 支持多頁碼,應(yīng)用程序可以自由切換到任意選定的頁.
(3) 支持多語言,可以在teletext中指定所使用的語言.
(4) 文本支持自定義背景色,自定義前景色.支持長度,寬度加倍(double width,double height)
(5) 所有數(shù)據(jù)采用了奇偶校驗和漢明碼編碼,具有比較強的錯誤處理功能.
(6) 格式基本兼容模擬TTX,支持VBI插入teletext數(shù)據(jù).
Teletext數(shù)據(jù)是在TS流中和Video,Audio數(shù)據(jù)一起傳送的.EN300472規(guī)定采用以下方法識別teletext數(shù)據(jù)的PID:如果 PMT段中的stream_type==0xbd(private_stream_1),那么這個數(shù)據(jù)流就是teletext或者subtitle數(shù)據(jù) (統(tǒng)稱為VBI數(shù)據(jù),具體區(qū)分還需要在teletext分析中處理),VBI數(shù)據(jù)開始于PES包的數(shù)據(jù)部分.
Teletext在PES包中的格式如下:
各字段含義:
data_identifier:數(shù)據(jù)標志符,如果是teletext必須等于0x10~0x1f.
data_unit_id:用來標志是teletext數(shù)據(jù)還是subtitle數(shù)據(jù).0x02表示是teletext,0x03表示是subtitle.
data_field()是標準的teletext格式的數(shù)據(jù)包,參考下圖.實際上,一個data_field就是teletext的一行數(shù)據(jù).
data_field()的格式如下:
各字段含義如下:
reserved_future_use:2bits保留未來使用
field_parity:1bit的奇偶標志,'1'表示是偶數(shù)場(下半場),'0'表示奇數(shù)場(上半場)
line_offset:5bits,在VBI插入時指定的場線數(shù)據(jù).(以上兩個參數(shù)在使用VBI硬件插入才需要使用)
framing_code:8bits的幀同步代碼,必須是0xe4.
magazine_and_packet_address:16bits,指定當前傳送的雜志號碼和包號碼,采用的是漢明8/4編碼.
其中的包號碼(Packet address)實際上代表的是TTX頁面的行號碼(0-24).
data_block:320bits,40Bytes的數(shù)據(jù)塊,全部采用奇偶校驗,對應(yīng)TTX頁面的40列,范圍是0x00-0x7f(最高位是奇偶校驗位).把這部分的數(shù)據(jù)全部提取出來,就可以獲得一個行的全部數(shù)據(jù)(TTX是24行X40列).
因此,解teletext的軟件一般采用這樣的流程:
(1) 分析PMT表,獲取代表teletext的PID,標注為TTX_pid;
(2) 在解復用程序中過濾PID==TTX_pid的數(shù)據(jù),解出PES的數(shù)據(jù)部分.
(3) 把第二步得到的數(shù)據(jù)部分全部保存到一個緩沖區(qū),直到所有的數(shù)據(jù)全部緩沖完畢.
(4) 解出packet address,該數(shù)據(jù)代表當前的行號(0-24).如果是0,則本個data block包含的是主頁面代碼和子頁面代碼.如果不是0(1-24),則說明data block是對應(yīng)頁的列數(shù)據(jù)(40個字節(jié)的ASCII),把這些數(shù)據(jù)解出保存到緩沖區(qū).(這里必須和PID過濾一樣,過濾主頁面號碼和子頁面號碼,即沒有選擇的頁面忽略掉)
(5) 循環(huán)第(4)步直到所有的列數(shù)據(jù)全部解出.
(6) 把緩沖區(qū)中的24X40的數(shù)據(jù)顯示出來.一般是在RAM中定義一個unsigned char TTX_DATA[24][40]數(shù)組保存.
Teletext是如何支持自定義前景色和背景色等特性的呢?實際上非常簡單,就包含在每一行數(shù)據(jù)的40個字節(jié)中.我們知道可顯示ASCII的范圍是0x20~0x7f,小于0x20的代碼在teletext中做為控制字符(需要在顯示程序中處理),具體規(guī)定如下:
0x00-0x07:設(shè)置前景色,顏色分別是黑,紅,綠,黃,藍,洋青,洋藍,白(設(shè)置后生效,也就是說,顯示程序遇到這些代碼,在隨后的顯示中必須改變前景色到對應(yīng)的顏色)
0x08:開始閃爍功能,設(shè)置后生效.
0x09:結(jié)束閃爍功能,設(shè)置后生效
0x0a:BOX結(jié)束,設(shè)置后生效.
0x0b:BOX開始,設(shè)置后生效.
0x0c:正常象素大小,設(shè)置后生效.
0x0d:寬度加倍,設(shè)置后生效.
0x0e:長度加倍,設(shè)置后生效.
0x0f:寬度和長度都加倍,設(shè)置后生效.
0x10-0x17:設(shè)置馬塞克顏色,顏色代碼同0x00-0x07,設(shè)置后生效.
0x18:以后固定是顯示空,直到遇到其他顏色屬性.設(shè)置后生效.
0x19-0x1b:請參考EN300706標準.
0x1c:設(shè)置黑背景色.設(shè)置后馬上生效.
0x1d:設(shè)置新的背景色,下一個字符指定背景顏色,代碼同0x0-0x07.
0x1e:保持馬塞克功能,設(shè)置后生效.
0x1f:取消馬塞克功能,設(shè)置后生效.
以上所描述的控制字符作用范圍僅僅是一行.也就是說如果遇到新行,則設(shè)置全部恢復默認設(shè)置,EBU teletext的默認設(shè)置是:黑背景色,白前景色,無閃爍,無BOX,正常的象素大小,無任何馬塞克功能.因此,teletext的顯示程序必須一個字 符一個字符的分析數(shù)據(jù),直到所有的數(shù)據(jù)全部顯示完畢.
實際上,EBU teletext使用了4個規(guī)格,包括V1.0,V1.5,V2.5,V3.5.V1.0只支持ASCII文本和基本屬性,其他規(guī)格還支持簡單圖象和Objects,請參考EN300706獲取更多的信息.
EBU teletext格式使用了漢明編碼方法,具體編碼格式請參考EN300706.
下面可以參考一下<<Seekfor MPEG-2 decoder>>中處理teletext的效果:
(1) 菜單上的數(shù)字是主頁面,下一級菜單是子頁面:
(2)teletext文字疊加在Video上的透明顯示效果:
(3)teletext文字疊加在Video上不透明的顯示效果:
(4)切換到其他頁面的顯示效果:

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多