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

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

?? vqmcalc.cpp

?? This program is an implementation of a part of one or more MPEG-4 Video tools as specified in ISO/IE
?? CPP
字號:
#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <windows.h>
#include <crtdbg.h>
#include "avisynth.h"
#include <string.h>
#include "VqmCalc.h"
#include "math.h"

VqmCalc::VqmCalc(PClip _child1, PClip _child2, const char *fname, IScriptEnvironment* env) :
  GenericVideoFilter(_child1), child2(_child2), log(NULL) {

  const VideoInfo& vi2 = child2->GetVideoInfo();

  notdone=true;
  VqmFrame= 0;

  blockA= new short[64];
  blockB= new short[64];
  blockA2= new float[64];
  blockB2= new float[64];
  fdct = fdct_mmx;

  if (fname[0] != 0) {
    log = fopen(fname, "wt");
    if (log && notdone) {
      fprintf(log,"VqmCalc: Video Quality Metric 0.1\n");
    } else
      env->ThrowError("VQMcalc: unable to create file %s", fname);
  }
  
  if (!vi.IsYV12()) 
    env->ThrowError("Compare: YV12 colorspace required");

 
  
  width = vi.width;
  widthUV = width/2;
  height = vi.height;
  heightUV = height/2;
  
}

VqmCalc::~VqmCalc() {
  if (log && notdone) {
    fprintf(log,"Average Vqm= %f\n",(VqmFrame/((float)vi.num_frames)));
    fclose(log);
    notdone=false;
  }
  delete [] blockA;
  delete [] blockB;
  delete [] blockA2;
  delete [] blockB2;
} 

void VqmCalc::FillBlocks(const BYTE* ref,short* outref,int pitchref,const BYTE* alt,short* outalt,int pitchalt) {
  const BYTE* y;
  const BYTE* z;
  int i,j;
  
  y=ref;
  z=alt;
  j=0;
  for(i=0;i<64;i++){
    if(j==8){
      j=0;y+=pitchref;z+=pitchalt;}
    outref[i]=(short) y[j];
    outalt[i]=(short) z[j];
    j++;
  }  
}

void VqmCalc::LocalContrasts(float* ref, float* alt) {
  float dcref,dcalt;
  int i;
  dcref= powf((ref[0]/1024),0.65f)/ref[0];
  dcalt= powf((alt[0]/1024),0.65f)/alt[0];
  for(i=0;i<64;i++) {
    ref[i] *= dcref;
    alt[i] *= dcalt;
  }
}

void VqmCalc::ApplySCSFMatrix(float* ref, float* alt) {
  int i;
  for(i=0;i<64;i++){
    ref[i]/=((float)mpegmatrix[i]);
    alt[i]/=((float)mpegmatrix[i]);
  }
}

void VqmCalc::DiffBlocks(float* ref, float* alt) {
  int i;
  for(i=0;i<64;i++)
    ref[i]=fabsf(ref[i]-alt[i]);
}

float VqmCalc::MeanBlock(float* block) {
  float z= block[0];
  int i;
  for(i=1;i<64;i++) 
    z+=block[i];
  return z/64.0f;  
}

float VqmCalc::MaxBlock(float* block) {
  float z= block[0];
  int i;
  for(i=1;i<64;i++) 
    if(z<block[i]) 
      z=block[i];
  return z;
}

void VqmCalc::ConvertTo(short* ref, float* fref, short* alt, float* falt){
  int i;
  for(i=0;i<64;i++){
    fref[i]=(float) ref[i];
    falt[i]=(float) alt[i];
  }
}

PVideoFrame __stdcall VqmCalc::GetFrame(int n, IScriptEnvironment* env) {
  
  PVideoFrame refP = child->GetFrame(n, env);
  PVideoFrame altP = child2->GetFrame(n, env);
  
  const BYTE* refY = refP->GetReadPtr();
  const BYTE* altY = altP->GetReadPtr();
  const BYTE* refU = refP->GetReadPtr(PLANAR_U);
  const BYTE* altU = altP->GetReadPtr(PLANAR_U);
  const BYTE* refV = refP->GetReadPtr(PLANAR_V);
  const BYTE* altV = altP->GetReadPtr(PLANAR_V);
  
  const int refPitch = refP->GetPitch();
  const int refPitchUV = refP->GetPitch(PLANAR_U);
  const int altPitch = altP->GetPitch();
  const int altPitchUV = altP->GetPitch(PLANAR_U);

  int i,j;
  float a,b,c,d;
  int xiu;

  if(log && notdone){    
    fprintf(log,"n=%d",n);
  }

  imagm=0;
  imagM=0;
 
  for(i=0;i<height;i+=8) {
    //fprintf(log,"\nheight=%d\n",i);
    for(j=0;j<width;j+=8) {
      //fprintf(log,"\nwidth=%d\n",j);
	FillBlocks(refY+j,blockA,refPitch,altY+j,blockB,altPitch);
	//for(xiu=0;xiu<64;xiu++)
	//fprintf(log," i[%d]=%d ",xiu,blockA[xiu]-blockB[xiu]);
	//fprintf(log,"\n");
	fdct(blockA);
	fdct(blockB);
	ConvertTo(blockA,blockA2,blockB,blockB2);
	LocalContrasts(blockA2,blockB2);
  	ApplySCSFMatrix(blockA2,blockB2);
 	DiffBlocks(blockA2,blockB2);
	imagm+=MeanBlock(blockA2);
	imagM=max(imagM,MaxBlock(blockA2));
	//fprintf(log,"\timagm=%f imagM=%f\n",imagm,imagM);
    }
    refY+=(8*refPitch);
    altY+=(8*altPitch);
  }
  
  a=10*((64000*imagm/((float)(height*width)))+5*imagM);
  //fprintf(log,"\timagm=%f imagM=%f\n",imagm,imagM);
  if(log && notdone) {
    fprintf(log,"\tY=%f",a);
  }
  
  imagm=0;
  imagM=0;
  for(i=0;i<heightUV;i+=8) {
    for(j=0;j<widthUV;j+=8) {
      FillBlocks(refU+j, blockA, refPitchUV, altU+j, blockB, altPitchUV);
      fdct(blockA);
      fdct(blockB);
      ConvertTo(blockA,blockA2,blockB,blockB2);
      LocalContrasts(blockA2,blockB2);
      ApplySCSFMatrix(blockA2,blockB2);
      DiffBlocks(blockA2,blockB2);
      imagm+=MeanBlock(blockA2);
      imagM=max(imagM,MaxBlock(blockA2));
    }
    refU+=(8*refPitchUV);
    altU+=(8*altPitchUV);
  }
  b=10*((64000*imagm/((float)(heightUV*widthUV)))+5*imagM);
  if(log && notdone) {
    fprintf(log,"\tU=%f",b);
  }
  
  imagm=0;
  imagM=0;
  for(i=0;i<heightUV;i+=8) {
    for(j=0;j<widthUV;j+=8) {
      FillBlocks(refV, blockA, refPitchUV, altV, blockB, altPitchUV);
      fdct(blockA);
      fdct(blockB);
      ConvertTo(blockA,blockA2,blockB,blockB2);
      LocalContrasts(blockA2,blockB2);
      ApplySCSFMatrix(blockA2,blockB2);
      DiffBlocks(blockA2,blockB2);
      imagm+=MeanBlock(blockA2);
      imagM=max(imagM,MaxBlock(blockA2));
    }
    refV+=(8*refPitchUV);
    altV+=(8*altPitchUV);
  }
  c=10*((64000*imagm/((float)(heightUV*widthUV)))+5*imagM);
  if(log && notdone) {
    fprintf(log,"\tV=%f\n",c);
  }
  
  d=((0.8f*a)+(0.1f*b)+(0.1f*c));
  VqmFrame+=d;
  if(log && notdone) {
    fprintf(log,"VQM=%f\n",d);
  }
  
  return altP;
} 

AVSValue __cdecl Create_VqmCalc(AVSValue args, void* user_data, IScriptEnvironment* env) {
  return new VqmCalc(args[0].AsClip(), args[1].AsClip(), args[2].AsString(""), env);  
}

extern "C" __declspec(dllexport) const char* __stdcall AvisynthPluginInit2(IScriptEnvironment* env) {
  env->AddFunction("VqmCalc", "ccs", Create_VqmCalc, 0);
  return "`VqmCalc' VqmCalc plugin";
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区欧美日韩| 久久久综合九色合综国产精品| 国产精品中文字幕一区二区三区| 亚洲永久免费av| 亚洲综合免费观看高清完整版在线 | 日本欧美在线观看| 亚洲3atv精品一区二区三区| 亚洲成av人片观看| 日韩激情视频在线观看| 日本伊人精品一区二区三区观看方式| 亚洲成av人片在线| 久久福利资源站| 国产高清精品网站| 不卡的av电影| 欧洲精品一区二区| 91.com在线观看| 久久伊人中文字幕| 国产精品乱码人人做人人爱| 亚洲日本在线看| 婷婷成人激情在线网| 蜜臀久久99精品久久久画质超高清| 久久精品噜噜噜成人88aⅴ| 国产精品资源在线看| 成人黄色免费短视频| 欧美亚洲自拍偷拍| 精品国一区二区三区| 国产精品久久久久婷婷二区次 | 成人app在线| 欧美性生交片4| 亚洲精品在线免费观看视频| 国产性色一区二区| 亚洲无人区一区| 精品一区精品二区高清| 99视频超级精品| 欧美精品日日鲁夜夜添| 久久久美女毛片| 亚洲一区二区不卡免费| 国产综合一区二区| 欧美日韩综合在线免费观看| 久久视频一区二区| 午夜精品久久一牛影视| 成人亚洲一区二区一| 3d成人动漫网站| 国产精品美女久久久久av爽李琼 | 国产精品人妖ts系列视频| 日韩一区二区免费视频| 亚洲国产精品成人久久综合一区| 亚洲成人高清在线| 成人免费观看av| 欧美一区二区不卡视频| 亚洲视频一区二区在线观看| 国产乱人伦精品一区二区在线观看| 东方欧美亚洲色图在线| 欧美精品亚洲二区| 亚洲色图制服诱惑 | 不卡视频在线观看| 欧美大肚乱孕交hd孕妇| 亚洲一区二三区| 99精品国产一区二区三区不卡| 日韩天堂在线观看| 五月天婷婷综合| 色就色 综合激情| 中文字幕视频一区| 成人性生交大片免费看中文| 日韩一区二区三区三四区视频在线观看 | 欧美亚洲国产一卡| 亚洲视频在线观看一区| 99免费精品在线| 日本一区二区三区视频视频| 激情久久久久久久久久久久久久久久| 欧美日韩一级二级三级| 亚洲最色的网站| 欧美在线啊v一区| 亚洲精品日产精品乱码不卡| 91影院在线观看| 亚洲美女屁股眼交| 91国产精品成人| 亚洲最新视频在线播放| 欧美三级韩国三级日本一级| 亚洲影视资源网| 欧美日韩国产不卡| 日本三级韩国三级欧美三级| 欧美刺激午夜性久久久久久久 | 久久一二三国产| 精品一区二区免费在线观看| 欧美成人福利视频| 韩国av一区二区三区| 国产亚洲欧美一级| 成人av综合在线| 亚洲精品国产a| 91麻豆精品国产自产在线| 青青国产91久久久久久| 欧美精品一区二区三区高清aⅴ| 国产精品69久久久久水密桃| 欧美国产国产综合| 在线观看网站黄不卡| 日日噜噜夜夜狠狠视频欧美人| 欧美大片顶级少妇| 成人在线综合网| 艳妇臀荡乳欲伦亚洲一区| 日韩欧美一卡二卡| 成人夜色视频网站在线观看| 亚洲尤物在线视频观看| 精品久久久久久无| 99久久精品免费| 日本伊人午夜精品| 国产精品三级视频| 欧美日韩精品一区二区| 国产制服丝袜一区| 亚洲精品乱码久久久久久日本蜜臀| 欧美美女直播网站| 成人一区在线观看| 亚洲mv大片欧洲mv大片精品| 欧美极品少妇xxxxⅹ高跟鞋| 在线视频一区二区三| 国产在线一区二区综合免费视频| 1024成人网色www| 精品黑人一区二区三区久久| 色婷婷久久99综合精品jk白丝| 麻豆中文一区二区| 亚洲激情第一区| 久久久久亚洲蜜桃| 在线电影院国产精品| 成人av在线电影| 国产在线播精品第三| 亚洲一二三级电影| 中文字幕一区二区三区色视频| 91精品久久久久久久久99蜜臂| 99在线精品一区二区三区| 久久99精品久久久久久国产越南| 亚洲另类中文字| 日本一区二区高清| 精品久久久久久久久久久院品网 | 91超碰这里只有精品国产| 成人激情免费网站| 韩国欧美国产1区| 日韩有码一区二区三区| 亚洲在线一区二区三区| 1024精品合集| 国产精品高清亚洲| 国产无一区二区| 久久综合久色欧美综合狠狠| 91精品久久久久久久99蜜桃| 欧美三级日韩三级| 91国模大尺度私拍在线视频| 91美女片黄在线观看| av成人动漫在线观看| 成人精品电影在线观看| 成人综合在线网站| av一本久道久久综合久久鬼色| 国产成人在线影院| 国产成人精品一区二| 国产精品白丝av| 粉嫩aⅴ一区二区三区四区| 国产一区二区三区在线看麻豆| 麻豆成人久久精品二区三区红 | 国产日韩成人精品| 国产亚洲精品中文字幕| 久久久九九九九| 国产欧美一区二区三区在线看蜜臀| 精品电影一区二区| 久久久国产午夜精品| 欧美极品美女视频| 亚洲日本在线天堂| 亚洲成国产人片在线观看| 亚洲第一成人在线| 美国十次综合导航| 国产成都精品91一区二区三| 懂色av中文字幕一区二区三区| 白白色 亚洲乱淫| 欧美在线免费播放| 日韩一级免费一区| 久久先锋资源网| 中文字幕在线观看一区| 亚洲综合视频在线| 久久精品国产**网站演员| 国产精品一区二区在线观看网站| 粉嫩av亚洲一区二区图片| 色噜噜偷拍精品综合在线| 91精品国产福利在线观看| 久久欧美一区二区| 一区二区三区在线视频观看| 日本最新不卡在线| 99这里只有精品| 91精品国产日韩91久久久久久| 久久久国产精品不卡| 亚洲婷婷综合久久一本伊一区 | 国产精品视频一二| 亚洲激情六月丁香| 韩国av一区二区| 日本道在线观看一区二区| 日韩精品综合一本久道在线视频| 国产午夜精品一区二区三区嫩草 | 9i看片成人免费高清| 91超碰这里只有精品国产| 中文无字幕一区二区三区 | 国产成人午夜精品影院观看视频 | 欧美r级在线观看| 亚洲精品免费看| 国产精品香蕉一区二区三区|