DVB開發之重點掌握

2021-07-03 05:48:43 字數 1472 閱讀 1406

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...