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

📄 cvideodatams.h

📁 此程序为wcdma系统当中ftp/video业务模型的c++程序仿真 通过此程序 能得到此两种业务在多种条件下的吞吐量和无码率的性能
💻 H
字号:
/////////////////////////////////////////////////////////////////////////
//  Title:      CVideoDataMs.h
//
//  Comment:    In this program,we have created a near-time video traffic
//              model.
//
//  Reference:  1xEV-DV evaluation methodology Strawman V26
//
//  Written by: Dou Zhongzhao
//
//  Date:       08/28/2001
//
//  Revised record:
//
/////////////////////////////////////////////////////////////////////////

#if!defined(_CVIDEODATAMS_INCLUDED_H_)
#define _CVIDEODATAMS_INCLUDED_H_

#include<iostream.h>
#include "Afxtempl.h"
#include "systemsim.h"
#include "sys_random.h"
#include "CDataMs.h"
//-------- for compile -----------------
// to be deleted!!
//#include "VideoCompile.h"


class CVideoDataMs:public CDataMs
{
//----------------attribute--------------------------------

private:
	int m_iVideoBufferSize;        //缓冲器窗口的长度,定为5s,相当于最大时延,化为ms
	int m_iVideoFrameInterval;     //帧间隔,定为100ms,换算成时隙为80slot
	int m_iVideoFrameSize;         //每帧的数据量,根据每帧的分组的数量和分组的大小确定
	int m_iVideoGeneratedDataPerFrame;//当前帧已经生成的数据量
	int m_iVideoTotalPacketNumInFrame; //每帧的分组数,定为12
	int m_iVideoPacketSize;        //数据包的大小,服从截短的pareto分布
	int m_iVideoPacketSizeK;       //数据包大小服从的pareto分布的参数K
	float m_fVideoPacketSizeAlpha; //数据包大小服从的pareto分布的参数Alpha
	int m_iVideoPacketSizeMaximum; //数据包大小的最大值
	int m_iVideoPacketInterval;    //数据包到达的时间间隔,服从截短的pareto分布
	float m_fVideoPacketIntervalK; //数据包间隔分布参数K
	float m_fVideoPacketIntervalAlpha;//数据包间隔分布参数Alpha
	int m_iVideoPacketIntervalMaximum;//数据包间隔最大值
	int m_iVideoGeneratedPacketNumInFrame; //每帧中已经生成的packet的数量
	bool m_bIsVideoFrameDataOver;      //当前帧最后一个packet是否已经生成
//---------------------operation--------------------------------

public:
	CVideoDataMs();
	~CVideoDataMs();
	void VideoInitialization();      //初始化视频业务模型参数,给变量赋值,完成第一个帧的设置,并且在仿真开始时,在数据
	                                 //缓冲器中放置一定的数据量
	void VideoPacketGeneration();    //根据packet的pareto分布生成一个packet的数据量,同时加入到数据队列中,
	                                 //用m_bIsVideo FrameOver判断当前的帧是否结束,将packet编号, 
	                                  //并调用VideoPacketIntervalGenerator()函数生成packet的间隔,
                                     //并把已经生成的packet数量加1,同时调用IsVideoFrameDataOver()函数。
	void VideoPacketIntervalGeneration(); //根据pareto分布产生数据包间隔,生成的结果以秒为单位,然后换算成时隙。
    void IsVideoDataOver();          //判断当前帧的最后一个packet是否已经生成的函数
	void VideoFrameProcess();        //帧处理函数
	void VideoFrameSetUp();          //设置新帧的函数
	void IsVideoFrameDataOver();     //判断当前帧的最后一个packet是否已经生成的函数

	int  m_iCurrentSlotNum;           //仿真中当前时隙  by zl
	int  m_iVideoPacketPointer;       //zl 20060329

	

    

	

    
//**************** to call private variables,define the following functions ******************
/* interface functions */
	int GetVideoBufferSize();               //得到缓冲器窗口长度
	void SetVideoBufferSize(int);			//设置缓冲器窗口长度
    int GetVideoFrameInterval();            //得到帧间隔
	void SetVideoFrameInterval(int);		//设置帧间隔
	int GetVideoFrameSize();                //得到当前帧的数据量
	void SetVideoFrameSize(int);            //设置当前帧的数据量
	int GetVideoGeneratedDataPerFrame();    //得到当前帧已经生成的数据量
	void SetVideoGeneratedDataPerFrame(int);//设置当前帧已经生成的数据量

	int GetVideoTotalPacketNumInFrame();	//得到一帧中分组数目
	void SetVideoTotalPacketNumInFrame(int);//设置一帧中分组数目
	int GetVideoPacketSize();				//得到分组的大小
	void SetVideoPacketSize(int);			//设置分组的大小
	int GetVideoPacketSizeK();				//得到参数K
	void SetVideoPacketSizeK(int);			//设置参数K
	float GetVideoPacketSizeAlpha();		//得到参数α
	void SetVideoPacketSizeAlpha(float);	//设置参数α
	int GetVideoPacketSizeMaximum();		//得到分组的最大值
	void SetVideoPacketSizeMaximum(int);	//设置分组的最大值
	int GetVideoPacketInterval();			//得到分组的间隔
	void SetVideoPacketInterval(int);		//设置分组的间隔
	int GetVideoPacketIntervalMaximum();	//得到分组间隔最大值
	void SetVideoPacketIntervalMaximum(int); //设置分组间隔的最大值
	int GetVideoGeneratedPacketNumInFrame();   //得到一帧中已经生成的packet的数量
	void SetVideoGeneratedPacketNumInFrame(int);//设置一帧中已经生成的packet的数量
    bool GetIsVideoFrameDataOver();			//判断当前帧是否已经生成最后一个packet
	void SetIsVideoFrameDataOver(bool);		//设置当前帧是否已经生成最后一个packet

	//20051212 by zl
	void FillDataQueue();						//填充数据队列函数
	void DataMsTrafficInitialize();				//数据移动台业务模型初始化函数

};

#endif




⌨️ 快捷键说明

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