国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
將DSM-CC封裝成MPEG-2 Transport Stream

將DSM-CC封裝成MPEG-2 Transport Stream(一)

本文為對(duì)ISO-IEC 13818-6中9.2節(jié)的翻譯,因?yàn)槔锩嬗行┙?jīng)常用到的概念,為了方便記憶以及留下痕跡,特寫此博。

MPEG-2 Transport Stream在協(xié)議棧(Protocol Stack)中的角色

沒有任何DSM-CC messages或是接口可以在MPEG-2傳輸流中傳輸。然而,如果要用MPEG-2傳輸流傳輸DSM-CC 協(xié)議,那么在這一章節(jié)中提到的section就會(huì)被用到。

MPEG-2系統(tǒng),ISO/IEC13818-1定義了一套private_section(私有表)結(jié)構(gòu),可以將DSM-CC的messages(Download ControlMessage 或 Download DataMessage,例如DII,DSI,DDB)封裝成私有表(private_section)的形式,然后進(jìn)行packet化,這樣就塊可以在MPEG-2的傳輸流中進(jìn)行傳輸。本協(xié)議對(duì)private_section定義了額外的文法來滿足額外的DSM-CC的需求,這種私有表稱為DSM-CCSection,它的文法結(jié)構(gòu)和private_section兼容,所以可以用MPEG-2的解碼器對(duì)其解碼。

DSM-CC Sections

當(dāng)DSM-CC U-N(User-Network)和Downloadmessages需要被封裝成MPEG-2的傳輸流時(shí),就需要用到DSMCCsection的語(yǔ)法結(jié)構(gòu)。其他數(shù)據(jù)凈荷(payload)也許也會(huì)用到這種結(jié)構(gòu)。這種結(jié)構(gòu)繼承自在13818-1中定義的private_section,在對(duì)DSM-CC_section header進(jìn)行編碼的時(shí)候某些字段會(huì)有特殊的語(yǔ)義。如何將DSMCCSection映射成MPEG-2 Packets和DSMCC Section的最大長(zhǎng)度都在ISO/IEC13818-1的Private_section中介紹。

在某寫編碼實(shí)現(xiàn)中,在Private_section中使用CRC_32是比較理想的。由于很多系統(tǒng)對(duì)于CRC_32的計(jì)算很有難度,DSMCC_section語(yǔ)法提供了CRC_32的一個(gè)替代品。為了和13818-1一致,如果section_syntax_indicator被賦為1,就會(huì)使用CRC_32這種方式,但是如果section_syntax_indicator被賦為0,除了CRC32字段被替代為checksum字段外,其他字段在和section_syntax_indicator被賦為1的情況沒下沒有任何差別。所以還是兼容13818-1,因?yàn)榫o跟著section_length字段后面的數(shù)據(jù)都被視為私有數(shù)據(jù)(private data)。

因?yàn)閟ection_syntax_indicator字段可能會(huì)出錯(cuò),private_indicator字段必須設(shè)置為section_syntax_indicator的反碼,如果section_syntax_indicator為0,那么private_indicator必須置為1,如果不是這樣,這個(gè)section就是一個(gè)錯(cuò)誤的section。類似的,如果section_syntax_indicator為1,則private_indicator為0。

當(dāng)section_syntax_indicator被設(shè)為0(不用CRC)并且checksum字段也被設(shè)為0,在其他層會(huì)提供一個(gè)錯(cuò)誤檢測(cè),這種需求是強(qiáng)制的(請(qǐng)參考表9-1和download transport protocol requirements)。

對(duì)于MPEG2 傳輸流更多的與private_section相關(guān)的文法和語(yǔ)義,請(qǐng)參照ISO/IEC 13818-1,第2.4.4節(jié)Program Specificinformation,會(huì)包括設(shè)置payload_unit_start_indicator,TS流凈荷中point_field的設(shè)置,以及packet中填充字段的用法。

除非特別指定,DSM-CC tables(擁有相同table id的一個(gè)或多個(gè)DSM CCsections)會(huì)被相同數(shù)值的PID的packets所承載,這點(diǎn)和其他private_sections(例如,13818-1將它們的stream type指定為0×05)一樣。

DSMCC-CC Section Format

Syntax No. of bits Mnemonic
DSMCC_section(){
table_id 8 uimsbf
section_syntax_indicator 1 bslbf
private_indicator 1 bslbf
reserved 2 bslbf
dsmcc_section_length 2 bslbf
table_id_externsion 16 uimsbf
reserved 2 bslbf
version_number 5 uimsf
current_next_indicator 1 bslbf
section_number 8 uimsf
last_section_number 8 uimsf
if (table_id==0×3A) {
LLCSNAP()
}
else if (table_id==0×3B) {
userNetworkMessage()
}
else if (table_id==0×3C) {
downloadDataMessage()
}
else if (table_id==0×3D) {
DSMCC_descriptor_list()
}
else if (table_id==0×3E) {
for (i ==0;i<dsmcc_section_length-9;i++){
private_data_byte
}
}
if (section_syntax_indicator==’0′) {
checksum 32 uimsf
}
else {
CRC_32 32 uimsf
}
}

DSMCC Section各字段的語(yǔ)義

table_id:占8位,標(biāo)識(shí)了DSMCC Section凈荷中的數(shù)據(jù)的類型,該字段定義了table_id_extension,version_number,section_number和last_section_number這些字段的編碼規(guī)則。

下表包括DSMCC table_id的賦值。

table_id DSMCC Section Type
0×00-0×37 ITU-T Rec.H.222.0|ISO/IEC 13818-1所定義
0×38-0×39 ISO/IEC 13818-1保留
0×3A DSMCC-Section 包括了 multi-protocol 封裝數(shù)據(jù)
0×3B 包括了U-N Messages,除了Download Data Msg外(我們經(jīng)常用到的是Download Control Msg)
0×3C 包括了Download Data Messages
0×3D 包括了Stream Descriptors
0×3E 包括了私有數(shù)據(jù)
0×3F ISO/IEC 18318-1保留
0×40-0xFE 用戶私有
0xFF forbidden

Multi-protocol encapsulated 數(shù)據(jù)也許包括U-U RPCs

section_syntax_indicator:占1bit的字段,當(dāng)設(shè)為‘1’代表校驗(yàn)使用CRC32字段,當(dāng)設(shè)為‘0’代表使用checksum字段。

private_indicator:占1bit的字段,將被設(shè)置為section_syntax_indicator的反碼。

reserved:設(shè)為‘11’

dsmcc_section_length:這個(gè)占位為12bit的字段指示了緊跟在該字段后面的DSMCC Section的剩余的字節(jié)數(shù),該值不能超過4093

table_id_extension:16位的字段,如果table_id的值為0×3B,該字段的值為dsmccMessageHeader中transaction_id字段的低2個(gè)字節(jié);如果table_id的值為0×3C,該字段的值為DownloadDataBlock或DownloadResponse中的moduleId的值。如果既不是0×3C也不是0×3B,則該值由用戶所定義。

version_number:這是個(gè)5bit的字段,如果table_id的值為0×3A或0×3B,該字段設(shè)為0;如果table_id為0×3C并且是DownloadData Message,該字段將會(huì)賦于DDBMessage中moduleVersion字段的低5位的值;如果table_id的值為0×3C并且是DownloadData ResponseMessage,該字段需被設(shè)為0。如果table_id字段不是0×3A到0×3C中的值,該字段的值由用戶所定義。

current_next_indicator:這是一個(gè)1bit的flag,如果table_id的值在0×3A到0×3C范圍內(nèi),該位被設(shè)為‘1’,其他的情況由用戶定義。

section_number:這是一個(gè)8bit的字段,如果table_id的值等于0×3A或0×3B,該字段將為0;如果table_id的值為0×3C,該字段的值將等于DDB或DDR message的moduleNumber字段最低8bit的值。其他的由用戶去定義。

CRC32:在ISO/IEC 13818-1 附錄B中定義。

checksum

DSMCC Stream Types

DSMCC定義了不同的stream_type值,PMT的es_info_loop中有用到stream_type字段,dsmcc section的stream_type描述如下:

下表包括了DSMCC stream type的賦值:

stream_type Description
0×00-0×09 ITU-T Rec.H.220|ISO/IEC 13818-1定義
0×0A 多協(xié)議封裝
0×0B DSMCC U-N Message
0×0C DSMCC Strem Descriptors
0×0D Dsmcc Sections(包括私有數(shù)據(jù)的任何類型)
0×0E-0×7F 保留
0×80-0xFF 用戶私有

下面一些限制:

  • 只有table_id為0×3A的DSMCC Sections包含stream type為0×0A的packets
  • 只有table_id為0×3B和0×3C的DSMCC Section包含stream type為0×0B的TS Packets
  • 只有table_id為0×3D的DSMCC Section包含stream type為0×0C的TS Packets
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MPEG-2復(fù)用器PSI信息分析部分的FPGA實(shí)現(xiàn)-電子電路圖,電子技術(shù)資料網(wǎng)站
數(shù)據(jù)廣播簡(jiǎn)介
Transport Stream碼流解
TS數(shù)據(jù)結(jié)構(gòu)分析
一、TS流概述
TS流分析
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服