⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 outputport.cpp

📁 用于解析ts流中的各种业务信息表可以用于dvb中嘛流分析
💻 CPP
字号:
/* Copyright (C) 1995, Tektronix Inc. All Rights Reserved. * *   Usage Restrictions * * License is granted to copy, to use, and to make and to use derivative * works for research and evaluation purposes only. * *   Disclaimer of Warranty * * These software programs are available to the user without any license * fee or royalty on an "as is" basis.  Tektronix Inc. disclaims any and * all warranties, whether express, implied, or statuary, including any * implied warranties or merchantability or of fitness for a particular * purpose.  In no event shall the copyright-holder be liable for any  * incidental, punitive, or consequential damages of any kind whatsoever * arising from the use of these programs. * * This disclaimer of warranty extends to the user of these programs and * user's customers, employees, agents, transferees, successors, and * assigns. * * The Tektronix Inc. does not represent or warrant that the programs * furnished hereunder are free of infringement of any third-party * patents.*//* OutputPort implementation */#include "stdafx.h"#include "Utilities.H"#include "OutputPort.H"extern "C"{#include <stdio.h>}OutputPort::OutputPort (int tf){  textflag = tf;  crc_flag = FALSE;  poly = NULL;}void OutputPort::write_bit (char c){  output_bit(c);  if (crc_flag && poly) poly->push_bit(c);}void OutputPort::write_byte (char c){  for (int i = 7; i >= 0; i--)    output_bit((c & (1 << i)) ? '1' : '0');  if (poly) sys_message("write_byte called with crc on");}void OutputPort::flush (){  output_flush();}void OutputPort::write_pattern (char* pattern){  int n = strlen(pattern);  for (int i = 0; i < n; i++)    {      write_bit(pattern[i]);    }}void OutputPort::write_uimsbf(int value, int nbits){  //char rep[nbits];
  char *rep = new char[nbits];  int i;  for (i = 0; i < nbits; i++)  {      rep[i] = ((((int) value / 2) * 2) == value) ? '0' : '1';      value = value / 2;  }    for (i = nbits-1; i >=0; i--)  {      (rep[i] == '0') ? write_bit('0') : write_bit('1');  }
  delete rep;}void OutputPort::write_tcimsbf(int value, int nbits){  if (value >= 0)  {      write_uimsbf(value, nbits);      return;  }  else  {      int vcomp = - value;      //char rep[nbits];	  char *rep = new char[nbits];
      int i;      // calculate 1's comp of base 2 rep for -value      for (i = 0; i < nbits; i++)	  {		  rep[i] = ((((int) vcomp / 2) * 2) == vcomp) ? '1' : '0';		  vcomp = vcomp / 2;	  }      // add 1      for (i = 0; i < nbits; i++)	  {		  if (rep[i] == '1')		  {			  rep[i] = '0';		  }		  else		  {			  rep[i] = '1';			  break;		  }	  }      // output bits      for (i = nbits-1; i >=0; i--)	  {		  (rep[i] == '0') ? write_bit('0') : write_bit('1');	  }
	  delete rep;    }}void OutputPort::write_markerbit (){  write_bit('1');}void OutputPort::write_reserved_bits (int nbits){  for (int i = 0; i < nbits; i++)    {      write_bit('1');    }}void OutputPort::write_timestamp90 (TimeStamp90* ts){  write_uimsbf(ts->bit32, 1);  write_uimsbf(ts->bits0_31 >> 30, 2);  write_markerbit();  write_uimsbf(ts->bits0_31 >> 15, 15);  write_markerbit();  write_uimsbf(ts->bits0_31, 15);  write_markerbit();  }void OutputPort::write_timestamp27_pes_format (TimeStamp27* ts){  write_uimsbf(ts->bit32, 1);  write_uimsbf(ts->bits0_31 >> 30, 2);  write_markerbit();  write_uimsbf(ts->bits0_31 >> 15, 15);  write_markerbit();  write_uimsbf(ts->bits0_31, 15);  write_markerbit();  write_uimsbf(ts->ext, 9);    write_markerbit();}void OutputPort::write_timestamp27_ts_format (TimeStamp27* ts){  write_uimsbf(ts->bit32, 1);  write_uimsbf(ts->bits0_31, 32);  write_reserved_bits(6);  write_uimsbf(ts->ext, 9);  }void OutputPort::start_crc (){  if (poly) delete poly;  poly = new Poly();  crc_flag = TRUE;}void OutputPort::stop_crc (){  crc_flag = FALSE;}void OutputPort::write_crc (){  // write the complement of the crc  for (int i = 31; i >= 0 ; --i)    {      if (poly->shift_reg[i])	{	  write_bit('0');	}      else	{	  write_bit('1');     	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -