關於DVB同步位元組反轉及加擾原理及流程圖 (轉)
:namespace prefix = v ns = "urn:schemas--com:vml" />
同步反轉及擾碼:
1、原理:
圖1中,PN碼發生器的暫存器初始值為:100101010000000。MPEG2資料流中,每8個資料幀組成一個資料組。PN碼發生器的暫存器在傳輸每一個資料組的開始時初始化一次,為了提供該初始化訊號,每一組資料中的第一個MPEG2資料幀的同步位元組按位元反轉,即47H反轉為B8H。而MPEG2資料流中所有同步位元組不參與擾碼。
時,首先用一矩陣radata來模擬PN碼發生器的暫存器,並給予與PN碼發生器的暫存器相同的初始值。然後對輸入的資料進行判斷,識別其是同步位元組還是資訊位元組。當輸入的資料是資訊位元組時,資訊位與PN碼發生器的暫存器矩陣的第14個元素radata(14)
和第15個元素redata(15)進行模2加碼即進行擾碼,其中結果存入輸出矩陣randout。當輸入的資料為同步位元組時,同步位元組不參與擾碼,且當該同步位元組為每一組資料中的第一個MPEG2資料幀的同步位元組時,該同步位元組反轉。
注:1、PN碼發生器的暫存器初始值置為:100101010000000
2、PN碼發生器在傳輸每一個資料組(8個資料幀)時初始化一次
3、每一組資料中的第一個MPEG2資料幀的同步位元組按位元反轉
4、MPEG2資料流中所有同步位元組不參與擾碼
5、解碼部分和譯碼原理完全相同
以下為實現的源:
//初始化變數
// int temp1[8],temp2[8];
int enable,_redata,enabledata;
int inputdata[8],outputdata[8];
int redata[15];//暫存器
BYTE output[8][204]={0};
Office:office" />
for(int m=0;m<=7;m++)
{
for( int n=0;n<=187;n++)
{
//m=0並且n=15表示初始化暫存器和進行同步位元組反轉的標誌
if(m==0&&n==0)
{
//初始化暫存器redata
for(int i=0;i<=14;i++)
{
if(i==0||i==3||i==5||i==7)
{
redata[i]=1;
}
else
{
redata[i]=0;
}
}
//同步位元組按位元反轉
output[m][16+n]=~Input[m][16+n];
}
//其餘的同步位元組不參於加擾,按照原始位元組輸出
else if(m!=0&&n==0)
{
output[m][16+n]=Input[m][16+n];
}
//資訊位(非同步位元組)進行加擾
else
{
for(int j=0;j<=7;j++)
{
//讀取位元組Input裡面的資訊位元
inputdata[j]=Input[m][16+n]%2;
//位元組Input右移一位
Input[m][16+n]>>=1;
}
//加擾運算
for (int i=0;i<=7;i++)
{
_redata=redata[13]^redata[14];
for(int j=14;j>=1;j--)
{
redata[j]=redata[j-1];
}
redata[0]=_redata;
enabledata=enable&_redata;
outputdata[i]=enabledata^inputdata[i];
}
//加擾後的位元賦給位元組output
for ( i=0;i<=7;i++)
{
output[m][16+n]=output[m][16+n]|((BYTE)outputdata[i]<<1);
}
}
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990262/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LVM原理及PV、VG、LV、PE、LE關係圖【轉】LVM
- c# 主機和網路位元組序的轉換 關於網路位元組序和主機位元組序的轉換C#
- [轉]SSH原理及應用
- 三維圖形及動畫軟體開發流程 (轉)動畫
- 彼得反轉原理(轉載)
- nodejs圖片轉換位元組儲存NodeJS
- 轉_Buffer Cache的原理及使用
- expdp/impdp的原理及使用(轉)
- 位元組編碼轉換
- 轉換協議位元組協議
- js 富文字轉義及反轉義(包含vue版本的)JSVue
- ORACLE優化器工作原理及及執行方式《轉》Oracle優化
- x-window字型原理及美化(轉)
- Java的魔力:位元組碼(轉)Java
- 關於位元組陣列QByteArray陣列
- 網路通訊時位元組序轉換原理與網路位元組序、大端和小端模式模式
- 瀏覽器渲染原理及流程瀏覽器
- 【轉】跳躍表-原理及Java實現Java
- 網橋原理及原始碼詳解(轉)原始碼
- 關於SVN伺服器的環境搭建及使用(轉)伺服器
- Java中關於OOM的場景及解決方法(轉)JavaOOM
- 流程圖(轉載)流程圖
- 16進位制字串轉位元組字串
- 關於字元 位元組 python3字元Python
- Oracle Freelist和HWM原理探討及相關效能優化(轉)Oracle優化
- Android UI繪製流程及原理AndroidUI
- 風險評估框架流程及分析原理框架
- 關於Basic程式直譯器及編譯原理的簡單化(1)---Basic器的語法分析及主要程式碼 (轉)C程式編譯原理語法分析
- 位元組陣列轉浮點數線上轉換器陣列
- 轉_oracle的字符集_源於多位元組字符集Oracle
- 個人防火牆的原理及選擇(轉)防火牆
- 專案招投標流程及管理:招標(轉)
- 關於LiLo--原理篇(轉)
- Linux下關於互斥鎖及同步的移植(一)Linux
- Linux下關於互斥鎖及同步的移植(二)Linux
- phpescapeshellcmd多位元組編碼漏洞解析及延伸PHP
- 從 unicode 到位元組的轉換Unicode
- 位元組流轉16進位制字串字串