亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 視頻編解碼器view.cpp

?? h.263壓縮標準的源代碼。 這些代碼都是經過試驗的
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// 視頻編解碼器View.cpp : implementation of the CMyView class
//

#include "stdafx.h"
#include <math.h>                   
#include "視頻編解碼器.h"

#include "視頻編解碼器Doc.h"
#include "視頻編解碼器View.h"
#include "OpenFiles.h"
#include "Global.h"
#include "ProgressBar.h"
#include "Display.h"
#include "PropertyDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

int pels,lines,mv_outside_frame,long_vectors,cpels;
CFile streamfile,psnrfile;
static void SeekPsnr(PictImage *curr,PictImage *recon,int width,int height,double psnr[3]);

#define OFFLINE_RATE_CONTROL//jwp
/////////////////////////////////////////////////////////////////////////////
// CMyView

IMPLEMENT_DYNCREATE(CMyView, CView)

BEGIN_MESSAGE_MAP(CMyView, CView)
	//{{AFX_MSG_MAP(CMyView)
	ON_COMMAND(ID_Encode, OnEncode)
	ON_COMMAND(ID_Decode, OnDecode)
	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
	ON_COMMAND(ID_Encode, OnEncode)
	ON_COMMAND(ID_Decode, OnDecode)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// CMyView construction/destruction

CMyView::CMyView()

{
	m_font.CreateFont(20,0,0,0,FW_THIN,FALSE,FALSE,FALSE,GB2312_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH|FF_MODERN,"宋體");
	bFlag=0;
}

CMyView::~CMyView()
{
	m_font.DeleteObject();

}

BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMyView drawing

void CMyView::OnDraw(CDC* pDC)
{
	CBitmap bitmap;
	CDC dcMemory;
	bitmap.LoadBitmap(IDB_car);
	dcMemory.CreateCompatibleDC(pDC);
	dcMemory.SelectObject(&bitmap);
	pDC->SetTextColor(0x64e896);

	if(bFlag==1)//編碼
	{	
	   CFont *pOldFont;
	   pOldFont=pDC->SelectObject(&m_font);
	   pDC->SetBkMode(TRANSPARENT);

		pDC->StretchBlt(0,0,1024*3/4,768*3/4,&dcMemory,0,0,1024,768,SRCCOPY);
        CString kk;
		kk.Format("正在編碼!共%d幀",MaxFrame);
		pDC->TextOut(60,60,kk);
		
		kk.Format("每%d幀進行一次幀內編碼,進度情況請看狀態欄!",Pbetween);
	    pDC->TextOut(60,100,kk);
	}
    else if(bFlag==2)//解碼
	{
	CBrush Brush(RGB(100,200,150));//190,190,190
	CBrush* oldBrush=pDC->SelectObject(&Brush);
    CPen pen(0,2,RGB(100,200,150));
	CPen *oldPen=pDC->SelectObject(&pen);
	pDC->Rectangle(40,40,440,370);//畫矩形
	pDC->MoveTo(40,370); // (wide,height)
	pDC->LineTo(620,370);
	pDC->MoveTo(620,40);        
	pDC->LineTo(620,370);
	pDC->MoveTo(40,40);        
	pDC->LineTo(620,40);	
	pDC->SelectObject(oldPen);
	pDC->SelectObject(oldBrush);

	//顯示解碼圖象
	CDisplay m_display;
	m_display.play_movie(pDC,DecfileName);
	conclusion=m_display.conclusion;

	//輸出解碼結果
	pDC->SetTextColor(RGB(200,100,150));
	int dd=conclusion.Find(",",0);
	CString kk=conclusion.Right(conclusion.GetLength()-dd-1);
	int zz=kk.Find(",",0);
	pDC->TextOut(470,180,conclusion.Left(dd));
	pDC->TextOut(470,200,kk.Left(zz));
	pDC->TextOut(500,220,kk.Right(kk.GetLength()-zz-1));
	}
}

/////////////////////////////////////////////////////////////////////////////
// CMyView printing

BOOL CMyView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CMyView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CMyView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CMyView diagnostics

#ifdef _DEBUG
void CMyView::AssertValid() const
{
	CView::AssertValid();
}

void CMyView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CMyDoc* CMyView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));
	return (CMyDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMyView message handlers

void CMyView::OnEncode() 
{

	CPropertyDlg properties("編碼屬性設置",this,0);
	int ff;
	CString dd;
	if(properties.DoModal()==IDOK)
	{
		m_szFilePathName=properties.encodeDlg.m_InitDir;
		m_szFileName=m_szFilePathName;
		m_Type=properties.encodeDlg.typeindex;
		MaxFrame=properties.encodeDlg.m_MaxFrame;
        QP=properties.encodeDlg.m_QP;
		QPI=properties.encodeDlg.m_QPI;
		ifPsnr=properties.encodeDlg.m_ifPsnr;
		Pbetween=properties.encodeDlg.m_Pbetween+1;
        
		ratecontrol=properties.m_page1.m_ifratecontrol;
		targetrate=properties.m_page1.m_bitrate;
		switch(properties.m_page1.m_framerate)
		{
		case 1:
            ref_frame_rate=30.0;break;
		case 0:
            ref_frame_rate=25.0;break;
		case 2:
			ref_frame_rate=10.0;break;
		default:
			ref_frame_rate=25.0;
		}
		
		int kk=targetrate;
		ff=properties.m_page1.m_ifratecontrol;
		dd.Format("采用率控制,碼率是%d,幀率是%f。",kk,ref_frame_rate);
        if(ff)
		MessageBox(dd);	

	if(m_Type==2)
		CodeYUV();
    else
		CodeBmps();
	}
	else
		return;

  
	
}

void CMyView::CodeYUV()
{ 
	//率控制
  #ifndef OFFLINE_RATE_CONTROL
    float DelayBetweenFramesInSeconds;
    int CommBacklog;
  #else
    PictImage *stored_image = NULL;
    int start_rate_control;
  #endif

	CMyDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	//初始化
	CProgressBar bar(_T("Encode Progress"), 50, MaxFrame);
    m_pImageData=new unsigned char[352*288*3/2];
	CFile file;
	if((file.Open(m_szFilePathName,CFile::modeRead|CFile::shareDenyNone))==NULL)
	{
		AfxMessageBox("Can not open the yuv file!");
		return;
	}

	PictImage *prev_image = NULL;
    PictImage *curr_image = NULL;
    PictImage *curr_recon = NULL;
    PictImage *prev_recon = NULL;

	int frame_no,first_frameskip=0;  
    int start=1;//從第1幀到第MaxFrame幀
    int orig_frameskip=1;//輸入圖像原始偏移
    int frameskip=1;//非發送幀

	long_vectors =0;//幀間編碼的參數
	mv_outside_frame=0;

	Pict *pic = (Pict *)malloc(sizeof(Pict));
	Bits *bits = (Bits *)malloc(sizeof(Bits));
	//率控制
	Bits *total_bits = (Bits *)malloc(sizeof(Bits));
    Bits *intra_bits = (Bits *)malloc(sizeof(Bits));

	pic->BQUANT = DEF_BQUANT;
    pic->seek_dist = DEF_SEEK_DIST;
    pic->use_gobsync = DEF_INSERT_SYNC;//=0
    pic->PB = 0;
    pic->TR = 0;
    pic->QP_mean = (float)0.0;
    pic->unrestricted_mv_mode = 0;
	pic->picture_coding_type =0; // PCT_INTRA;
	m_orgHeight=288;
	m_orgWidth=352;
    pic->source_format = SF_CIF;
	switch (pic->source_format) {
    case (SF_SQCIF):
      fprintf(stdout, "Encoding format: SQCIF (128x96)\n");
      pels = 128;
      lines = 96;
      break;
    case (SF_QCIF):
      fprintf(stdout, "Encoding format: QCIF (176x144)\n");
      pels = 176;
      lines = 144;
      break;
    case (SF_CIF):
      fprintf(stdout, "Encoding format: CIF (352x288)\n");
      pels = 352;
      lines = 288;
      break;
    case (SF_4CIF):
      fprintf(stdout, "Encoding format: 4CIF (704x576)\n");
      pels = 704;
      lines = 576;
      break;
    case (SF_16CIF):
      fprintf(stdout, "Encoding format: 16CIF (1408x1152)\n");
      pels = 1408;
      lines = 1152;
      break;
    default:
      fprintf(stderr,"Illegal coding format\n");
      exit(-1);
	}
    cpels = pels/2;
	curr_recon = InitImage(pels*lines);

//率控制
  #ifndef OFFLINE_RATE_CONTROL
  // rate control variables 
  pic->bit_rate = targetrate;
  pic->src_frame_rate = (int)(ref_frame_rate / orig_frameskip);
  DelayBetweenFramesInSeconds = (float) 1.0/(float)pic->src_frame_rate;
  InitializeRateControl();
  #endif
  #ifdef OFFLINE_RATE_CONTROL
  start_rate_control = 0;//DEF_START_RATE_CONTROL;
  #else
  pic->target_frame_rate = (float)DEF_TARGET_FRAME_RATE;
  #endif

	//建立輸出文件
	CString outfilename=m_szFileName.Left(m_szFileName.GetLength()-4);
	CFileDialog dlg(FALSE,".263",outfilename,OFN_OVERWRITEPROMPT,"263 Files(*.263)|*.263|",NULL);
	if (dlg.DoModal()==IDOK)
	{
		bFlag=1;
		pDoc->UpdateAllViews(NULL);
 
		CString tempname;
		tempname=dlg.GetPathName();
		outfilename=tempname.Left(tempname.GetLength()-4);
	    if((streamfile.Open(tempname,CFile::modeWrite|CFile::modeCreate))==FALSE)
			AfxMessageBox("Can't create file!"); 
		streamfile.SeekToBegin();
     	initbits ();
		

		CTime StartTime=CTime::GetCurrentTime();
        CTimeSpan ElapsedTime;

    file.Read(m_pImageData,sizeof(BYTE)*352*288*3/2);
	pic->QUANT=QPI;
	curr_image = FillImage(m_pImageData);
	curr_recon = CodeOneIntra(curr_image, QPI, bits, pic);
	bits->header += alignbits (); // pictures shall be byte aligned 

	//率控制
  AddBitsPicture(bits);
  memcpy(intra_bits,bits,sizeof(Bits));
  ZeroBits(total_bits);
    //* number of seconds to encode *
  int chosen_frameskip=1;//jwp
    //* compute first frameskip *
  #ifdef OFFLINE_RATE_CONTROL
   float seconds = (MaxFrame - start + chosen_frameskip) * orig_frameskip/ ref_frame_rate;
   first_frameskip = chosen_frameskip;
   frameskip = chosen_frameskip;
  #else
  CommBacklog = intra_bits->total -(int)(DelayBetweenFramesInSeconds * pic->bit_rate);

  if (pic->bit_rate == 0) {
    frameskip = chosen_frameskip;
  }
  else {  //* rate control is used *
    frameskip = 1;
    while ( (int)(DelayBetweenFramesInSeconds*pic->bit_rate) <= CommBacklog) {
      CommBacklog -= (int) ( DelayBetweenFramesInSeconds * pic->bit_rate );
      frameskip += 1;
    }
  }
  first_frameskip = frameskip;
  #endif

	CString kk,m_Spsnr;
    if(ifPsnr)
	{
	if(psnrfile.Open(outfilename+".doc",CFile::modeWrite|CFile::modeCreate)==FALSE)
    MessageBox("Cannot create the output psnr file!", "Error",MB_ICONERROR | MB_OK);
	SeekPsnr(curr_image,curr_recon,352,288,psnrs);
	frame_no=1;
	kk.Format("第%d幀的lum峰值信噪比為%6.4fdB\n",frame_no,psnrs[0]);
	m_Spsnr=kk;
	kk.Format("第%d幀的Cb峰值信噪比為%6.4fdB\n",frame_no,psnrs[1]);
	m_Spsnr+=kk;
	kk.Format("第%d幀的Cr峰值信噪比為%6.4fdB\n",frame_no,psnrs[2]);
	m_Spsnr+=kk;
	MessageBox(m_Spsnr);
	psnrfile.SeekToBegin();
	psnrfile.Write(m_Spsnr,m_Spsnr.GetLength());
	}
 //第二幀 
pic->QUANT=QP;
   for(frame_no=start+first_frameskip;frame_no<=MaxFrame;frame_no+=frameskip)
	{
	file.Seek((frame_no-1)*352*288*3/2,SEEK_SET);
    file.Read(m_pImageData,sizeof(BYTE)*352*288*3/2);
	if(m_pImageData==NULL)
		  return;
	   
  	  pic->picture_coding_type =1; // PCT_INTER;

	  if(!ratecontrol)
	  pic->QUANT=QP;
	  
      prev_image=curr_image;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re66热这里只有精品3直播 | 欧美日韩在线精品一区二区三区激情 | 亚洲欧洲综合另类| 欧美一区二区三区婷婷月色| 成人免费高清视频在线观看| 欧美aaaaaa午夜精品| 亚洲综合区在线| 国产丝袜在线精品| 日韩欧美三级在线| 欧美日韩精品电影| 一本久道中文字幕精品亚洲嫩| 韩国成人在线视频| 青青草国产成人99久久| 亚洲国产欧美在线| 亚洲免费av观看| 国产精品久久久一本精品| 精品国产成人系列| 制服丝袜成人动漫| 欧美日韩精品电影| 欧美综合一区二区三区| 99精品国产91久久久久久| 国产精品亚洲一区二区三区在线 | 久久久久久久久久久久久夜| 91精品欧美久久久久久动漫| 一本到不卡精品视频在线观看| 国产麻豆9l精品三级站| 捆绑紧缚一区二区三区视频| 免费高清在线一区| 蜜臂av日日欢夜夜爽一区| 视频一区在线视频| 石原莉奈在线亚洲二区| 午夜视频一区二区| 亚洲在线视频一区| 亚洲国产成人tv| 亚洲综合区在线| 亚洲h动漫在线| 亚洲一区精品在线| 亚洲18影院在线观看| 视频在线观看国产精品| 免费三级欧美电影| 美女脱光内衣内裤视频久久影院| 成人高清视频在线观看| 成人久久18免费网站麻豆| 成人综合在线观看| 色诱视频网站一区| 欧洲国产伦久久久久久久| 欧美性极品少妇| 7777精品伊人久久久大香线蕉 | 国产精品久久国产精麻豆99网站| 国产亚洲欧美色| 欧美激情中文字幕一区二区| 中日韩av电影| 有码一区二区三区| 午夜电影网亚洲视频| 美女一区二区三区| 国产+成+人+亚洲欧洲自线| 9人人澡人人爽人人精品| 91一区在线观看| 欧美日韩国产小视频| 欧美一区二区三区系列电影| 久久综合九色综合97婷婷| 国产精品久久午夜夜伦鲁鲁| 亚洲精品乱码久久久久久久久 | 欧美影院精品一区| 日韩一区二区三区观看| 久久久亚洲精华液精华液精华液| 国产精品久久久久久久岛一牛影视 | 国产成人在线观看免费网站| 成人综合激情网| 欧美一a一片一级一片| 日韩女优av电影| 国产精品狼人久久影院观看方式| 中文字幕一区二区日韩精品绯色| 亚洲成人免费看| 国产成人精品免费网站| 色94色欧美sute亚洲线路一久 | 国内精品久久久久影院薰衣草 | 国产一区二区美女| 色婷婷综合久久久中文一区二区| 欧美精品99久久久**| 久久精品一区二区三区av| 一区二区三区在线看| 美腿丝袜在线亚洲一区| 不卡的av网站| 日韩三级视频中文字幕| 亚洲欧美一区二区三区孕妇| 男男成人高潮片免费网站| 成人app软件下载大全免费| 欧美一区二区视频网站| 亚洲欧美怡红院| 在线观看日韩高清av| 欧美va亚洲va国产综合| 一区二区高清视频在线观看| 韩国av一区二区三区四区| 欧美在线一区二区| 国产精品人成在线观看免费 | 日本vs亚洲vs韩国一区三区| 99精品在线观看视频| 欧美成va人片在线观看| 一区二区三区精品在线| 国产一区二区不卡老阿姨| 在线中文字幕不卡| 国产精品久久久久四虎| 久久99精品久久久久久 | 国产精品素人视频| 老汉av免费一区二区三区| 欧美影院午夜播放| 亚洲色图19p| 成人性生交大片免费看中文| 欧美一区二区三区不卡| 一区二区三区四区蜜桃| 成人性生交大片| 久久久久高清精品| 奇米影视在线99精品| 欧美日韩另类国产亚洲欧美一级| 欧美国产日韩亚洲一区| 国产综合久久久久久久久久久久| 欧美乱妇15p| 亚洲成人午夜影院| 欧美在线视频全部完| 一区二区三区在线不卡| 99精品久久99久久久久| 中文字幕一区在线| 99九九99九九九视频精品| 国产精品精品国产色婷婷| 丁香六月综合激情| 国产亲近乱来精品视频| 国产大陆a不卡| 久久久精品国产99久久精品芒果| 久久99精品国产| 久久综合久久综合九色| 国产精品一区二区在线观看网站| ww亚洲ww在线观看国产| 国模少妇一区二区三区| 精品国产91洋老外米糕| 国产精品一卡二卡在线观看| 久久久精品黄色| 成人18视频日本| 亚洲人成网站在线| 欧美三级三级三级爽爽爽| 丝袜亚洲精品中文字幕一区| 91精品国产91久久久久久最新毛片 | 在线观看免费成人| 亚洲一区二区三区在线播放| 欧美日韩第一区日日骚| 日本美女一区二区三区视频| 欧美videossexotv100| 国产精品自在在线| 国产精品久久久久久久第一福利| 99re这里只有精品6| 亚洲精品高清在线| 欧美一区国产二区| 国产又黄又大久久| 国产精品久久久久久久久果冻传媒| 99久久精品国产一区二区三区| 亚洲精品ww久久久久久p站| 欧美午夜影院一区| 奇米精品一区二区三区在线观看| 欧美成人a视频| 99久久婷婷国产| 午夜电影网亚洲视频| 久久伊99综合婷婷久久伊| 99久久久精品| 日一区二区三区| 中文字幕高清不卡| 欧美日韩综合在线免费观看| 激情小说欧美图片| 亚洲欧美另类久久久精品2019| 91精品免费观看| 91精品国产91综合久久蜜臀| 国产伦精品一区二区三区在线观看| 一区二区中文字幕在线| 91精品国产欧美日韩| 成人动漫一区二区三区| 三级在线观看一区二区| 中文字幕欧美日韩一区| 欧美剧在线免费观看网站 | www.亚洲人| 午夜久久久影院| 久久综合久久99| 亚洲激情成人在线| 亚洲成年人影院| 99精品视频在线播放观看| 亚洲人123区| 精品日韩99亚洲| 色噜噜狠狠一区二区三区果冻| 美国三级日本三级久久99| 色婷婷综合久久久久中文一区二区| 青青青爽久久午夜综合久久午夜| 国产欧美日韩亚州综合 | 国产成人激情av| 久久99日本精品| 另类调教123区| 全国精品久久少妇| 日韩精品免费视频人成| 日韩国产精品久久久久久亚洲| 一区二区三区产品免费精品久久75| 国产精品拍天天在线| 国产精品色一区二区三区| 中文字幕的久久|