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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fake_decoder.cpp

?? Intel開發(fā)的IPP庫(kù)的應(yīng)用實(shí)例
?? CPP
字號(hào):
/*
//
//                  INTEL CORPORATION PROPRIETARY INFORMATION
//     This software is supplied under the terms of a license agreement or
//     nondisclosure agreement with Intel Corporation and may not be copied
//     or disclosed except in accordance with the terms of that agreement.
//          Copyright(c) 1999-2006 Intel Corporation. All Rights Reserved.
//
//     Intel(R) Integrated Performance Primitives Gaussian Mixture Sample for Windows*
//
//  By downloading and installing this sample, you hereby agree that the
//  accompanying Materials are being provided to you under the terms and
//  conditions of the End User License Agreement for the Intel(R) Integrated
//  Performance Primitives product previously accepted by you. Please refer
//  to the file ippEULA.rtf located in the root directory of your Intel(R) IPP
//  product installation for more information.
//
//
//
//     Decoder Imitation Class
//
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ipps.h>
#include <ippsr.h>

#include "fake_decoder.h"
#include "prob_cache.h"

#define MAX_RAND (0x7fff)

Fake_Decoder::Fake_Decoder(int N, int L) {
   state_number = N;
   avr_active   = N/5;
   max_live     = L;
   live_len     = 256;
   frame_num    = 256+max_live;
   shift        = 0;
   all_prob     = 0;
   rept_prob    = 0;
   t            = 0;
   sum          = 0.0;
   sumsq        = 0.0;
   cache        = NULL;
   last_act     = NULL;
   state_weight = NULL;
   last_len     = NULL;
   act_num      = NULL;
   sum_inact    = NULL;
   sumsq_inact  = NULL;
   live_stat    = NULL;
   if_calc      = NULL;
   flog         = NULL;
   ready        = -2;
}

int Fake_Decoder::Init_LogFile(char *prob_log) {

   if (ready!=0)                return -10;

   if (!prob_log) {
      flog=NULL;
   } else if (!prob_log[0]) {
      flog=NULL;
   } else {
      if (!(flog=fopen(prob_log, "wb")))                          return -3;
   }
   return 0;
}

int Fake_Decoder::Init_Decoder(void) {

   if (ready!=-2)               return -10;

   if (state_number<=0)         return -1;
   if (avr_active<=0)           return -1;
   if (max_live<=0)             return -1;
   if (frame_num<=0)            return -1;
   if (avr_active>state_number)
      avr_active=state_number;

   if (!(last_act     = ippsMalloc_32s(state_number)))            return -2;
   if (!(state_weight = ippsMalloc_32f(state_number)))            return -2;
   if (!(last_len     = ippsMalloc_32s(state_number)))            return -2;
   if (!(if_calc      = ippsMalloc_8u(state_number)))             return -2;
   if (!(act_num      = ippsMalloc_32s(frame_num+max_live)))      return -2;
   if (!(sum_inact    = ippsMalloc_64f(frame_num+max_live)))      return -2;
   if (!(sumsq_inact  = ippsMalloc_64f(frame_num+max_live)))      return -2;
   if (!(live_stat    = ippsMalloc_32s(live_len)))                return -2;

   int i;
   int *q=(int*)state_weight;

   sum=0.0;
   for (i=0; i<state_number; i++) {
      q[i]=rand()&MAX_RAND;
      sum+=(double)q[i];
   }
   sum=1.0/sum;
   for (i=0; i<state_number; i++) {
      state_weight[i]=(float)(q[i]*sum);
   }
   sum=0.0;
   sumsq=0.0;
   for (i=0; i<state_number; i++) {
      sum+=state_weight[i];
      sumsq+=state_weight[i]*state_weight[i];
   }
   ippsSet_32s(-1,last_act,state_number);
   ippsZero_32f((float*)last_len,state_number);
   ippsSet_64f(sum,sum_inact,frame_num);
   ippsSet_64f(sumsq,sumsq_inact,frame_num);
   ippsZero_32f((float*)act_num,frame_num);
   ippsZero_32f((float*)live_stat,live_len);
   ippsZero_8u(if_calc,state_number);

   rept_prob=0;
   all_prob=0;
   t=0;

   ready=-1;
   return 0;
}

Fake_Decoder::~Fake_Decoder(void) {
   state_number = 0;
   avr_active   = 0;
   max_live     = 0;
   live_len     = 0;
   frame_num    = 0;
   shift        = 0;
   all_prob     = 0;
   rept_prob    = 0;
   t            = 0;
   sum          = 0.0;
   sumsq        = 0.0;
   if (live_stat)    ippsFree(live_stat);
   if (sumsq_inact)  ippsFree(sumsq_inact);
   if (sum_inact)    ippsFree(sum_inact);
   if (act_num)      ippsFree(act_num);
   if (last_len)     ippsFree(last_len);
   if (state_weight) ippsFree(state_weight);
   if (last_act)     ippsFree(last_act);
   if (flog)         fclose(flog);
   cache        = NULL;
   last_act     = NULL;
   state_weight = NULL;
   last_len     = NULL;
   act_num      = NULL;
   sum_inact    = NULL;
   sumsq_inact  = NULL;
   live_stat    = NULL;
   if_calc      = NULL;
   flog         = NULL;
   ready        = -2;

}

void Fake_Decoder::Get_Statistics(Len_Stat *stat) {
// all     -  all probabilities calculated
// lost    -  repeated probabilities
// nums[i] -  number of intervals of length i+1
   ippsCopy_32f((float*)live_stat,(float*)(stat->nums),stat->len);
   stat->lost=rept_prob;
   stat->all=all_prob;
}

bool Fake_Decoder::Attach_Cache(Prob_Cache *c) {
   if (ready!=-1)                          return false;
   cache=c;
   if (!cache)                             return false;
   if (!cache->Ready())                    return false;
   if (cache->State_Number()<state_number) return false;

   ready=0;
   return true;
}

int Fake_Decoder::Activity_Interval(int max_len) {
   int l;
   float p=(float)(rand()&MAX_RAND)/(float)MAX_RAND;
   l=(int)(p*max_len+1.0);
//   l=(int)(exp(-8*(p-0.5)*(p-0.5))*max_len+0.5);
   if (l<1) l=1;
   return l;
}

int Fake_Decoder::Get_Probability(int state, float *prob) {
   rept_prob+=if_calc[state];
   if_calc[state]=1;
   return cache->Get_Probability(state,prob);
}

int Fake_Decoder::Use_Probability(int state, float *prob) {
   if (flog)
      fwrite((void*)prob, sizeof(float), 1, flog);
   *prob=(float)exp(log(*prob+1.0));
   return 0;
}

void Fake_Decoder::Close_Decoder(void) {
   int i;
      for (i=0; i<state_number; i++) {
         if (last_len[i]>=live_len) last_len[i]=live_len;
         if (last_len[i])           live_stat[last_len[i]-1]++;
         last_len[i]=0;
      }
}

bool Fake_Decoder::Decode_Frame(int M) {

   // tends to M different states calculated once

   int i,j,MM,live;
   float prand,plim,prob,act_prob;
   float pp=(float)(1.0/sum_inact[t-shift]);
   bool all=false;

   if (ready!=0)                           return false;

   if (M>0) avr_active=M;
   if (avr_active>state_number) avr_active=state_number;

   if (avr_active<=act_num[t-shift]) {

      for (i=0; i<state_number; i++) {
         if (last_act[i]>=t) {
            if (Get_Probability(i,&prob))
               Use_Probability(i,&prob);
         }
      }

   } else {

      if ((sum_inact[t-shift]<=0)||(avr_active>=state_number)) {
         MM=avr_active-act_num[t-shift];
         all=true;
      } else {
         MM=(int)((double)(avr_active-act_num[t-shift])/
            (1.0-(avr_active-act_num[t-shift])*sumsq_inact[t-shift]*pp*pp*0.5));
         MM=(int)((double)(avr_active-act_num[t-shift])/(1.0-MM*sumsq_inact[t-shift]*pp*pp*0.5));
         all=false;
      }

      for (i=0; i<state_number; i++) {
         if (last_act[i]>=t) {
            if (Get_Probability(i,&prob))
               Use_Probability(i,&prob);
         } else {
            if (all)    act_prob=1.0f;
            else        act_prob=(float)(1.0-exp(MM*log(1.0-state_weight[i]*pp)));
            prand=(float)(rand()&MAX_RAND);
            plim=(float)(act_prob*MAX_RAND);
            if (prand<=plim) {
               if (Get_Probability(i,&prob))
                  Use_Probability(i,&prob);
               live=Activity_Interval(max_live);
               last_act[i]=t+live;
               last_len[i]+=live;
               for (j=t; j<=last_act[i]; j++) {
                  act_num[j-shift]++;
                  sum_inact[j-shift]-=state_weight[i];
                  sumsq_inact[j-shift]-=state_weight[i]*state_weight[i];
               }
            } else {
               if (last_len[i]) {
                  if (last_len[i]>=live_len) last_len[i]=live_len;
                  live_stat[last_len[i]-1]++;
               }
               last_len[i]=0;
            }
         }
      }
   }

   ippsZero_8u(if_calc,state_number);
   all_prob+=act_num[t-shift];
   if (++t>=frame_num-max_live+shift) {
      shift+=frame_num-max_live;
      ippsCopy_32f((float*)act_num+frame_num-max_live,(float*)act_num,max_live);
      ippsZero_32f((float*)act_num+max_live,frame_num-max_live);
      ippsCopy_64f(sum_inact+frame_num-max_live,sum_inact,max_live);
      ippsSet_64f(sum,sum_inact+max_live,frame_num-max_live);
      ippsCopy_64f(sumsq_inact+frame_num-max_live,sumsq_inact,max_live);
      ippsSet_64f(sumsq,sumsq_inact+max_live,frame_num-max_live);
   }

   return cache->Step_Forward();
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲1区2区3区4区| 欧美国产亚洲另类动漫| 国产精品久久久久久久蜜臀| 日韩福利视频网| 91免费看片在线观看| xvideos.蜜桃一区二区| 日韩美女啊v在线免费观看| 精久久久久久久久久久| 欧美日韩视频一区二区| 1区2区3区国产精品| 久久精品999| 91 com成人网| 亚洲一级二级三级| 91在线视频18| 中文字幕av免费专区久久| 久久成人羞羞网站| 91精品国产欧美日韩| 亚洲自拍与偷拍| 色一区在线观看| 欧美经典一区二区| 国产麻豆午夜三级精品| 精品国内二区三区| 麻豆精品视频在线观看视频| 7777精品伊人久久久大香线蕉 | 欧美视频一区二区三区在线观看| 日本一区二区在线不卡| 国产呦精品一区二区三区网站| 日韩一区二区在线看片| 日韩电影在线一区二区| 在线观看不卡一区| 亚洲视频一二区| 99re成人精品视频| 亚洲人吸女人奶水| 波多野结衣亚洲| 国产精品视频你懂的| 成人午夜视频在线观看| 国产欧美日韩激情| 国产成人在线看| 国产精品视频看| 国产成人综合自拍| 中文字幕欧美激情| 成人黄色a**站在线观看| 中文字幕av资源一区| www.66久久| 亚洲三级小视频| 色婷婷综合五月| 亚洲高清免费视频| 欧美精品一二三区| 日本亚洲天堂网| 精品日韩在线观看| 国产九九视频一区二区三区| 国产亚洲福利社区一区| 成人av资源网站| 亚洲天堂av一区| 日本韩国欧美一区| 五月综合激情网| 欧美一级国产精品| 国产尤物一区二区在线| 国产精品丝袜黑色高跟| 91丝袜国产在线播放| 午夜影院久久久| 日韩精品一区二区在线观看| 国产精品自产自拍| 亚洲日本护士毛茸茸| 欧美视频第二页| 久久精品国产99国产精品| 久久久精品综合| 99视频热这里只有精品免费| 亚洲一区在线观看视频| 91精品婷婷国产综合久久| 狠狠色狠狠色综合系列| 中文字幕中文字幕在线一区| 欧美在线小视频| 美腿丝袜亚洲综合| 欧美精彩视频一区二区三区| 91黄色在线观看| 人人精品人人爱| 欧美激情一区二区三区| 色噜噜狠狠成人中文综合| 日韩电影网1区2区| 日本一区二区三区电影| 欧美性淫爽ww久久久久无| 精品一区二区免费视频| 中文字幕亚洲精品在线观看 | 国产九色精品成人porny| 亚洲视频免费观看| 日韩女优av电影| 91在线丨porny丨国产| 男男视频亚洲欧美| 国产精品水嫩水嫩| 欧美肥妇bbw| 成人午夜免费视频| 日韩中文字幕av电影| 国产日韩欧美激情| 欧美日韩dvd在线观看| 国产激情视频一区二区三区欧美 | 亚洲精品视频免费观看| 日韩久久免费av| 色吧成人激情小说| 精品一区二区三区影院在线午夜 | 国产亚洲福利社区一区| 欧美色男人天堂| 成人一区在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品久久久久久久岛一牛影视 | 亚洲人成亚洲人成在线观看图片| 日韩一区二区三区电影在线观看 | 国产一区欧美二区| 亚洲与欧洲av电影| 国产农村妇女毛片精品久久麻豆| 欧美日韩免费高清一区色橹橹| 国产成人av影院| 蜜臀av一级做a爰片久久| 亚洲精品大片www| 国产欧美一区二区三区鸳鸯浴 | 精品国产乱码久久久久久图片| 91久久精品一区二区| 国产宾馆实践打屁股91| 久久精品国产99| 视频一区视频二区中文| 一区二区三区日韩精品| 国产女人18水真多18精品一级做| 91精品国产入口| 欧美日韩高清不卡| 色香蕉久久蜜桃| 成人a级免费电影| 国产成人免费视频网站| 精品一区精品二区高清| 香蕉成人啪国产精品视频综合网 | 国产精品麻豆99久久久久久| 亚洲精品一区二区三区在线观看| 欧美美女黄视频| 色综合天天性综合| av网站免费线看精品| 国产精品资源网站| 精品无码三级在线观看视频| 日本欧美一区二区| 日日嗨av一区二区三区四区| 亚洲电影在线播放| 亚洲制服丝袜一区| 伊人一区二区三区| 自拍偷自拍亚洲精品播放| 国产精品毛片a∨一区二区三区| 欧美精品一区二区高清在线观看| 欧美一区二区在线不卡| 欧美日韩国产免费一区二区| 欧美视频一区二区| 欧美日韩综合在线| 欧美在线高清视频| 欧美性猛交xxxx黑人交| 欧美在线观看禁18| 欧美欧美欧美欧美| 欧美日本在线播放| 欧美乱熟臀69xxxxxx| 欧美日韩国产另类一区| 精品视频在线视频| 欧美少妇bbb| 欧美肥妇free| 欧美mv日韩mv| 国产亚洲午夜高清国产拍精品| 久久老女人爱爱| 亚洲国产高清在线观看视频| 国产精品免费久久| 中文字幕一区视频| 亚洲精选在线视频| 亚洲福利视频一区二区| 日本亚洲三级在线| 精品一区二区三区久久| 国产成人午夜视频| 不卡一二三区首页| 欧美中文字幕一区| 3atv在线一区二区三区| 日韩精品一区在线| 欧美激情资源网| 亚洲视频一区在线| 一区二区三区色| 免费看精品久久片| 国产精品亚洲午夜一区二区三区 | 日本网站在线观看一区二区三区| 日本成人在线电影网| 精品亚洲aⅴ乱码一区二区三区| 国产麻豆成人传媒免费观看| 成人激情动漫在线观看| 在线观看一区二区精品视频| 777色狠狠一区二区三区| 久久综合色8888| 日韩一区有码在线| 天天色 色综合| 国产在线精品国自产拍免费| 92国产精品观看| 欧美一级在线视频| 国产日韩精品一区二区三区| 亚洲精品高清在线观看| 麻豆国产精品视频| 国产91丝袜在线观看| 色婷婷久久综合| 日韩精品一区二区三区在线播放 | 一二三区精品视频| 蜜桃免费网站一区二区三区| 成人av免费在线观看|