1、psi/si都採用表的形式來儲存相關資訊,通常乙個表又包含子表,段,描述子等元素構成。
(1)表(table)
表最初由mpeg-2標準定義的一種儲存資訊的結構,通常由乙個或者多個子表(sub_table)組成,不同的表通過表的標識(table_id)進行區分,例如pmt的table_id=0x02,nit的table_id=0x40;
(2)段(section)
段用於完成psi/si資訊到傳輸流包的對映,表或者子表通常由乙個或者多個段組成,乙個表允許被分成不多於256個段,每個段攜帶表的一部分;
section段的通用結構如下:
(3)描述子(descriptor)
描述子也叫做描述符,語意上比較完整的語法結構,用於提供特定的資訊。所有描述子都是乙個8位標識的「descripor_tag」開始後面緊跟乙個8位的數表示描述子資料區的位元組長度,從描述子第三個位元組開始的資料則是各個描述子的具體內容。
其語法結構如下:
2、nit表:
網路資訊表(nit)
nit表語法結構:
nit表c**,解析了通用表頭部分資訊:
static void parsenit_sectionhead(ts_nit *pstts_nit, unsigned char *pucsectionbuffer)
3、pat表:
節目關聯表(pat)
關聯了節目編號(program number)與pmt所使用的pid以及給出nit所用pid,它是psi資訊的根目錄,只要找到pid為0的表,機頂盒就能獲知pmt的pid,從而找到pmt表。
節目關聯表語法結構:
pat表c**解析資料,只解析section頭:
static void parsepat_sectionhead(ts_pat *pstts_pat, unsigned char *pucsectionbuffer)
4、pmt表:
節目對映表(pmt)
節目對映表語法結構:
pmt表c語言解析表頭資料資訊:
static void parsepmt_sectionhead(ts_pmt *pstts_pmt, unsigned char *pucsectionbuffer)
ipmt_length = pstts_pmt->section_length + 3;
pstts_pmt->crc_32 = (pucsectionbuffer[ipmt_length - 4] << 24) | (pucsectionbuffer[ipmt_length - 3] << 16)
| (pucsectionbuffer[ipmt_length - 2] << 8) | pucsectionbuffer[ipmt_length - 1];
} 當然不止這些表,這些僅僅只是羅列出了dvb開發中常見的幾種表!
DVB開發之節目搜尋
結合自己在相關專案中實現他人介面,對整個流程的理解給出下面流程圖,可能存在缺陷,總體思路是這樣實現的 symbol rate 6875000 delivery cable modulation qam64 frequency freq 頻點相關資訊 private string prominfo p...
重點掌握 快速排序
快速排序是氣泡排序的改進版,也是最好的一種內排序,在很多面試題中都會出現,也是作為程式設計師必須掌握的一種排序方法。思想 1.在待排序的元素任取乙個元素作為基準 通常選第乙個元素,但最的選擇方法是從待排序元素中隨機選取乙個作為基準 稱為基準元素 2.將待排序的元素進行分割槽,比基準元素大的元素放在它...
多執行緒 android 開發之重點
執行緒不是什麼時髦的技術,它是最基本的技術 執行緒 就是程式執行的一條線索,如圖 一 建立執行緒的兩種方式 1 在thread 子類覆蓋的 run 方法中編寫 2 在傳遞給thread 物件的runnable 物件的run方法中編寫 以下乙個示例 乙個傳統的執行緒類 public class tra...