packet_data_agent.h

来自「各种视频压缩格式的网络传输的模拟信道分析」· C头文件 代码 · 共 103 行

H
103
字号
/*
 ==========================================================================================
 ITU-T Telecommunications Standardization Sector      Document:   VCEG-M77
 Study Group 16 Question 6                            Filename:   packet_data_agent.h
 Video Coding Experts Group (VCEG)                    Generated:  29 June, 2001
 ----------------------------------------
 Thirteenth meeting: Austin, Texas, 2-4 April, 2001


 Intention: 
 ~~~~~~~~~~~~
 Simple offline software simulator for RTP/IP over 3GPP/3GPP2 bearers


 Source:
 ~~~~~~~
 Thomas Stockhammer, Guenther Liebl                  Tel:   +49 89 28923473
 Institute for Communications Engineering            Fax:   +49 89 28923490
 Munich University of Technology                     Email: {stockhammer,liebl}@ei.tum.de
 80290 Munich, Germany
 ==========================================================================================
*/


#ifndef PACKET_DATA_AGENT_H
#define PACKET_DATA_AGENT_H


#include "global.h"


// size of the data buffer
#define PACKET_BUFFER_SIZE 20


// minimal RTP header size (in bytes)
#define MIN_RTP_HEADER_SIZE 12


// storage type for RTP packets that are read or written to file
typedef struct rtp_packet
{
  int32 size;
  int32 timestamp;
  byte *data;
} RTP_PACKET;



// simulator-internal storage type for packet data agent PDUs
typedef struct virtual_pdu
{
  int32 internal_identifier;
  int32 size;
} VIRTUAL_PDU;



class PACKET_DATA_AGENT
{
 public:
  PACKET_DATA_AGENT();
  ~PACKET_DATA_AGENT();
  void initialize(FILE *ParameterFile_ptr, FILE *CommonLogFile_ptr);
  int32 get_PDU(int32 current_time, VIRTUAL_PDU *PDU_in);
  void put_PDU(int32 current_time, VIRTUAL_PDU *PDU_out);
  void discard_PDU(int32 current_time, VIRTUAL_PDU *PDU_out);
  void write_statistics(FILE *StatisticsFile_ptr); 

 private:
  int32 compress_Internet_header(RTP_PACKET *Uncompressed_RTP_Packet);

  char *ModuleName;

  FILE *LogFile_ptr;

  char InputFile[100], OutputFile[100];
  FILE *InputFile_ptr, *OutputFile_ptr;

  int32 agent_header_size;
  int32 compressed_Internet_header_size;

  RTP_PACKET RTP_Buffer[PACKET_BUFFER_SIZE];
  int32 RTP_buffer_read_position;
  int32 RTP_buffer_write_position;
  int32 RTP_buffer_length;

  int32 total_packets_counter;
  int32 total_lost_packets_counter;
  double packet_loss_rate;
  int32 total_correct_bits_counter;
  int32 total_correct_payload_bits_counter;
  double effective_bitrate;
  double effective_net_bitrate;

  int32 simulation_time;
};


#endif // PACKET_DATA_AGENT_H


⌨️ 快捷键说明

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