如何使用自定义值创建原始 mpeg header
how to create raw mpeg header , with custom values
我正在尝试使用 C++ 创建 mpeg header:
Header 十六进制值:0X4700311d
所以同步字节是:0x47
泰 : 0
普斯 : 0
优先级:0
进程号:0x0031
技术监督委员会:0x0
亚足联:0x1
抄送:13
mpeg header 的结构应该是什么样的?
有没有办法创建一个 4 字节的 char 数组,然后根据 header 赋值,如果我想稍后修改 pid?
我试过用这个header:
unsigned char _syncByte;
unsigned char _tei : 1;
unsigned char _payloadStart : 1;
unsigned char _priority : 1;
int16_t _pid;
unsigned char _scramblingCtl : 2;
unsigned char _adaptationField : 2;
unsigned char _counter;
但在 visual studio 2015 内存面板中,值不同。
uint32_t header = 0;
header |= 0x47 << 24;
header |= (TransportErrorIndicator & 1) << 23;
header |= (PayloadUnitStartIndicator & 1) << 22;
header |= (TransportPriority & 1) << 21;
header |= (PacketIdentifier & 8191) << 8;
header |= (TransportScrambling & 3) << 6;
header |= (AdaptationFieldControl & 3) << 4;
header |= (ContinuityCounter & 15);
注意字节顺序。
我正在尝试使用 C++ 创建 mpeg header: Header 十六进制值:0X4700311d 所以同步字节是:0x47 泰 : 0 普斯 : 0 优先级:0 进程号:0x0031 技术监督委员会:0x0 亚足联:0x1 抄送:13
mpeg header 的结构应该是什么样的?
有没有办法创建一个 4 字节的 char 数组,然后根据 header 赋值,如果我想稍后修改 pid?
我试过用这个header:
unsigned char _syncByte;
unsigned char _tei : 1;
unsigned char _payloadStart : 1;
unsigned char _priority : 1;
int16_t _pid;
unsigned char _scramblingCtl : 2;
unsigned char _adaptationField : 2;
unsigned char _counter;
但在 visual studio 2015 内存面板中,值不同。
uint32_t header = 0;
header |= 0x47 << 24;
header |= (TransportErrorIndicator & 1) << 23;
header |= (PayloadUnitStartIndicator & 1) << 22;
header |= (TransportPriority & 1) << 21;
header |= (PacketIdentifier & 8191) << 8;
header |= (TransportScrambling & 3) << 6;
header |= (AdaptationFieldControl & 3) << 4;
header |= (ContinuityCounter & 15);
注意字节顺序。