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

📄 cvideodatams.cpp

📁 此程序为wcdma系统当中ftp/video业务模型的c++程序仿真 通过此程序 能得到此两种业务在多种条件下的吞吐量和无码率的性能
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			ofstream outfile1("PacketMessage.txt",std::ios_base::app);
	 		if (!outfile1)
				cerr<<"Unable to save session data!\n";
			else 
				outfile1<<"************* video test data file *************"
						<<"\n"
						<<"VideoPacketSize="<<pFLVideoPacketArrivalMessage->iPacketSize
						<<"\t"
						<<"VideoPacketInterval="<<m_iVideoPacketInterval
						<<"\t"
						<<"TimeOfGeneratePacket="<<pFLVideoPacketArrivalMessage->iTimeOfGeneratePacket
						<<"\n"
						<<"VideoFrameInterval="<<m_iVideoFrameInterval
						<<"\t"
						<<"TotalPacketNumInFrame="<<12
						<<"\t"
// 						<<"GeneratedPacketNumInFrame="<<pFLVideoPacketArrivalMessage->iPacketIndex
// 						<<"\n"
						<<"VideoDataQueueSize="<<m_lDataQueueSize
						<<"\t"
//						<<"IsVideoFrameDataOver="<<m_bIsVideoFrameDataOver
//						<<"\n"
//						<<"VideoFrameSize="<<m_iVideoFrameSize
//						<<"\t"
// 						<<"GeneratedVideoDataPerFrame="<<m_iVideoGeneratedDataPerFrame
					    <<endl;
			///////////////////////////////////////////////////////
			*/


/*-----------------------------------------------------------------*/
		}
		else
		{
			m_iVideoPacketInterval--;
		}
	}
	else 
	{    
		m_iVideoFrameSize=m_iVideoGeneratedDataPerFrame; //得到当前帧的数据量
		if(m_iVideoFrameInterval<=0)
		{
		    VideoFrameSetUp();
/*----------------------------------------------------------------*/
//为了统计packetcall吞吐量及时延特性(即frame吞吐量)增加下面几句
			static FLVIDEOPACKETCALLARRIVALMESSAGE_TYPE m_FLVideoFrame;
			m_FLVideoFrame.iTimeOfGenerateFrame=m_iCurrentSlotNum;
			m_FLVideoFrame.lDataBitsOfFrame=m_iVideoFrameSize;
/*
			///////////////////////////////////////////////////////
			//记录当前Packet消息
			ofstream outfile2("FrameMessage.txt",std::ios_base::app);
	 		if (!outfile2)
				cerr<<"Unable to save session data!\n";
			else 
				outfile2<<"TimeOfGenerateFrame="<<m_FLVideoFrame.iTimeOfGenerateFrame
						<<"\t"
						<<"DataBitsOfFrame="<<m_FLVideoFrame.lDataBitsOfFrame
					    <<endl;
			///////////////////////////////////////////////////////*/


/*-----------------------------------------------------------------*/
		}
		else return;
	}
/******************** for test,to be deleted!! ********************/
//	cout<<"**********************************************"<<endl;
//	cout<<"VideoPacketSize="<<m_iVideoPacketSize<<endl;
//	cout<<"VideoDataQueueSize="<<m_lDataQueueSize<<endl;
}
		
///////////////////////////////////////////////////////////////////////////
//   Title:        CVideoDataMs::VideoFrameSetUp()	
//
//   Function:     Create a new frame and initialize some variables.In addition,
//                 generate the first packet of the new frame.
//                 
//   Calling function: no function
//
//   Called by function: CVideoDataMs::VideoFrameProcess()
//
//   Written by:    Dou Zhongzhao
//
//   Programming date: 08/29/2001
//
//   Revised record:
//
//////////////////////////////////////////////////////////////////////////
		
void CVideoDataMs::VideoFrameSetUp()          //设置新帧的函数
{
	m_iVideoGeneratedPacketNumInFrame=0;     //当前生成的分组数置0
	m_iVideoGeneratedDataPerFrame=0;         //当前帧已经生成的数据量置0
    m_iVideoFrameInterval=80;                //帧间隔初始化为80slot
	m_bIsVideoFrameDataOver=false;           //标志最后一个packet还没有生成
//生成第一个packet的间隔
	VideoPacketIntervalGeneration();
}


// ************  interface functions *****************


int CVideoDataMs::GetVideoBufferSize()				 //得到缓冲器窗口长度
{
	return m_iVideoBufferSize;
}

void CVideoDataMs::SetVideoBufferSize(int ip)			 //设置缓冲器窗口长度
{
	m_iVideoBufferSize=ip;
}

int CVideoDataMs::GetVideoFrameInterval()				 //得到帧间隔
{
	return m_iVideoFrameInterval;
}

void CVideoDataMs::SetVideoFrameInterval(int ip)			 //设置帧间隔
{
	m_iVideoFrameInterval=ip;
}

int CVideoDataMs::GetVideoFrameSize()                     //得到当前帧的数据量
{
	return m_iVideoFrameSize;
}

void CVideoDataMs::SetVideoFrameSize(int ip)              //设置当前帧的数据量
{
	m_iVideoFrameSize=ip;
}

//int GetVideoGeneratedDataPerFrame()               //得到当前帧已经生成的数据量
int CVideoDataMs::GetVideoGeneratedDataPerFrame()
{
	return m_iVideoGeneratedDataPerFrame;	       
}

//void SetVideoGeneratedDataPerFrame(int ip) //设置当前帧已经生成的数据量
void CVideoDataMs::SetVideoGeneratedDataPerFrame(int ip)
{
    m_iVideoGeneratedDataPerFrame=ip;
}




int CVideoDataMs::GetVideoTotalPacketNumInFrame()			 //得到一帧中分组数目
{
	return m_iVideoTotalPacketNumInFrame;
}

void CVideoDataMs::SetVideoTotalPacketNumInFrame(int ip)		 //设置一帧中分组数目
{
	m_iVideoTotalPacketNumInFrame=ip;
}

int CVideoDataMs::GetVideoPacketSize()			 	 //得到分组的大小
{
	return m_iVideoPacketSize;
}

void CVideoDataMs::SetVideoPacketSize(int ip)		 	 //设置分组的大小
{
	m_iVideoPacketSize=ip;
}

int CVideoDataMs::GetVideoPacketSizeK()			 	 //得到参数K
{
	return m_iVideoPacketSizeK;
}

void CVideoDataMs::SetVideoPacketSizeK(int ip)			 //设置参数K
{
	m_iVideoPacketSizeK=ip;
}

float CVideoDataMs::GetVideoPacketSizeAlpha()		     //得到参数α
{
	return m_fVideoPacketSizeAlpha;
}

void CVideoDataMs::SetVideoPacketSizeAlpha(float fp)	     //设置参数α
{
    m_fVideoPacketSizeAlpha=fp;
}

int CVideoDataMs::GetVideoPacketSizeMaximum()		     //得到分组的最大值
{
	return m_iVideoPacketSizeMaximum;
}

void CVideoDataMs::SetVideoPacketSizeMaximum(int ip)		 //设置分组的最大值
{
	m_iVideoPacketSizeMaximum=ip;
}

int CVideoDataMs::GetVideoPacketInterval()			 //得到分组的间隔
{
	return m_iVideoPacketInterval;
}

void CVideoDataMs::SetVideoPacketInterval(int ip)		 //设置分组的间隔
{
	m_iVideoPacketInterval=ip;
}

int CVideoDataMs::GetVideoPacketIntervalMaximum()	 //得到分组间隔最大值
{
	return m_iVideoPacketIntervalMaximum;
}

void CVideoDataMs::SetVideoPacketIntervalMaximum(int ip) //设置分组间隔的最大值
{
	m_iVideoPacketIntervalMaximum=ip;
}

int CVideoDataMs::GetVideoGeneratedPacketNumInFrame()   //得到一帧中已经生成的packet的数量
{
	return m_iVideoGeneratedPacketNumInFrame;
}

void CVideoDataMs::SetVideoGeneratedPacketNumInFrame(int ip)//设置一帧中已经生成的packet的数量
{
	m_iVideoGeneratedPacketNumInFrame=ip;
}

bool CVideoDataMs::GetIsVideoFrameDataOver()			 //判断当前帧是否已经生成最后一个packet
{
	return m_bIsVideoFrameDataOver;
}

void CVideoDataMs::SetIsVideoFrameDataOver(bool bp)		 //设置当前帧是否已经生成最后一个packet
{
	m_bIsVideoFrameDataOver=bp;
}

//20051212
//*********************来自基类CDataMs纯虚函数的实现******************************
////填充数据队列函数
void CVideoDataMs::FillDataQueue()
{
	VideoFrameProcess();
}
////数据移动台业务初始化函数
void CVideoDataMs::DataMsTrafficInitialize()
{
	VideoInitialization();
}

⌨️ 快捷键说明

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