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

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

?? 視頻編解碼器view.cpp

?? H.263編碼與解碼程序,能將YUV文件壓縮成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一区二区三区免费野_久草精品视频
日韩免费观看2025年上映的电影| 亚洲国产精品ⅴa在线观看| 日韩一区二区在线看片| 久久久影视传媒| 亚洲小说欧美激情另类| 久久精品99国产精品| 91免费在线看| 日韩免费高清视频| 一区二区三区中文字幕精品精品 | 欧美网站一区二区| 久久久五月婷婷| 热久久久久久久| 91精彩视频在线观看| 中文字幕精品综合| 国产精品一区不卡| 日韩精品中文字幕在线不卡尤物 | 中国色在线观看另类| 午夜av一区二区三区| 色诱亚洲精品久久久久久| 欧美精彩视频一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 在线观看国产一区二区| 成人欧美一区二区三区视频网页| 欧美日本视频在线| 成人免费一区二区三区视频| 成人精品免费视频| 久久久久99精品一区| 韩国理伦片一区二区三区在线播放| 在线播放/欧美激情| 亚洲成人免费观看| 精品视频一区二区不卡| 亚洲精品一卡二卡| 欧美制服丝袜第一页| 亚洲影视在线观看| 欧美色图在线观看| 日日夜夜精品视频天天综合网| 欧美亚洲另类激情小说| 亚洲高清在线精品| 在线不卡一区二区| 日韩国产高清影视| 在线综合亚洲欧美在线视频| 久久精品国产亚洲高清剧情介绍 | 日韩免费在线观看| 久久爱另类一区二区小说| 欧美一级电影网站| 精品综合免费视频观看| 亚洲精品一线二线三线无人区| 激情综合五月天| 国产欧美精品一区| 色噜噜狠狠成人中文综合| 一区二区三区日韩精品视频| 欧美精品在线观看播放| 美国精品在线观看| 久久久国产午夜精品| 成人动漫精品一区二区| 一级做a爱片久久| 欧美猛男超大videosgay| 午夜精品久久久| 欧美va在线播放| 丰满少妇久久久久久久| 伊人一区二区三区| 欧美一卡二卡在线观看| 国产成人精品三级| 亚洲最大色网站| 精品国产露脸精彩对白| 97aⅴ精品视频一二三区| 成人永久免费视频| 亚洲卡通欧美制服中文| 欧美一激情一区二区三区| 国产福利精品导航| 亚洲综合一区二区精品导航| 欧美成va人片在线观看| 99视频在线精品| 美国av一区二区| 亚洲乱码国产乱码精品精小说| 欧美一区二区三区日韩| www.99精品| 久久99蜜桃精品| 一区二区三区高清不卡| 久久亚洲精华国产精华液 | 日韩国产在线观看一区| 国产视频在线观看一区二区三区| 欧美亚洲一区二区三区四区| 国内久久婷婷综合| 亚洲国产精品一区二区久久恐怖片 | 色网站国产精品| 久88久久88久久久| 亚洲大片精品永久免费| 国产精品卡一卡二卡三| 欧美成人精品3d动漫h| 在线免费观看日韩欧美| 成人免费电影视频| 久久国内精品自在自线400部| 亚洲一区二区不卡免费| 美女一区二区三区在线观看| 亚洲视频免费观看| 国产日韩欧美精品电影三级在线| 欧美日韩高清一区二区不卡| 91日韩精品一区| 成人国产亚洲欧美成人综合网 | 欧美电影影音先锋| 色呦呦一区二区三区| 成人午夜免费电影| 国产精品一区二区三区乱码 | 国产一区二区三区av电影| 日韩影院精彩在线| 亚洲在线视频免费观看| 一区二区三区中文字幕在线观看| 国产视频一区二区在线| 精品美女在线播放| 日韩免费视频一区二区| 精品人在线二区三区| 日韩欧美高清一区| 8v天堂国产在线一区二区| 欧美日韩一级视频| 欧美日韩精品久久久| 欧美日韩精品高清| 欧美女孩性生活视频| 欧美日韩亚洲丝袜制服| 欧美美女网站色| 欧美片在线播放| 日韩一区二区在线看| 精品日韩欧美在线| 久久亚洲精品小早川怜子| 久久久久久久精| 国产精品乱码久久久久久| 中文字幕精品一区| 亚洲天堂福利av| 亚洲在线视频网站| 奇米影视7777精品一区二区| 久久99精品国产麻豆婷婷| 韩国中文字幕2020精品| 国产91在线|亚洲| 色综合天天天天做夜夜夜夜做| 欧美女孩性生活视频| 在线综合+亚洲+欧美中文字幕| 樱桃视频在线观看一区| 亚洲一卡二卡三卡四卡无卡久久| 天堂久久一区二区三区| 美女脱光内衣内裤视频久久网站| 国产成人啪午夜精品网站男同| 99精品欧美一区二区三区小说 | 欧美福利一区二区| 2017欧美狠狠色| 国产精品短视频| 午夜精品久久久久久久蜜桃app| 蜜臀精品一区二区三区在线观看 | 国产精品高潮久久久久无| 一区二区三区四区不卡在线 | 国产一区二区在线电影| av不卡免费电影| 欧美三级电影精品| 欧美xxxxxxxxx| 亚洲欧洲韩国日本视频| 日韩福利视频导航| 成人黄色大片在线观看| 欧美日韩成人激情| 中文字幕国产一区二区| 亚洲gay无套男同| 国产999精品久久久久久| 欧美性极品少妇| 久久精品一区蜜桃臀影院| 亚洲影院理伦片| 成人午夜视频福利| 欧美一级专区免费大片| 亚洲欧美日韩国产手机在线 | 国产成人精品免费一区二区| 久久久久国色av免费看影院| 一区二区三区.www| 国产99久久精品| 欧美精品久久99| 1024成人网| 国产精品一区二区三区99| 欧美精品一二三| 最新成人av在线| 国产激情偷乱视频一区二区三区 | av资源站一区| 精品国偷自产国产一区| 亚洲第四色夜色| 91老师国产黑色丝袜在线| 久久影视一区二区| 日韩电影免费在线观看网站| 91视频观看视频| 日本一区二区三区高清不卡| 蜜臀av亚洲一区中文字幕| 欧美视频一区在线| 亚洲日本免费电影| 成人晚上爱看视频| 久久亚洲欧美国产精品乐播 | 精品蜜桃在线看| 日韩成人伦理电影在线观看| 欧美在线高清视频| 亚洲欧美日韩国产综合| av一区二区不卡| 日韩一区中文字幕| 91色.com| 亚洲综合免费观看高清在线观看| 欧美亚洲国产一区在线观看网站| 日韩毛片一二三区| 91麻豆文化传媒在线观看|