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

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

?? fake_decoder.cpp

?? Intel開發的IPP庫的應用實例
?? CPP
字號:
/*
//
//                  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);
   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();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
337p粉嫩大胆噜噜噜噜噜91av| 欧美aaaaaa午夜精品| 一区二区三区中文免费| 日韩精品每日更新| 福利一区福利二区| 欧美偷拍一区二区| 亚洲色图清纯唯美| 蜜桃一区二区三区在线观看| 99久久久久久99| 国内国产精品久久| 日韩一区二区不卡| 尤物av一区二区| 国产精品1024| 久久99久久精品欧美| 欧美一区中文字幕| 国产精品乱子久久久久| 久草中文综合在线| 日韩精品中文字幕在线不卡尤物| 国产精品免费视频观看| 秋霞电影一区二区| 欧美在线短视频| 亚洲免费电影在线| 国产成人精品影视| 日韩免费看网站| 亚洲欧洲性图库| 国产一区二区三区高清播放| 欧美日韩国产三级| 亚洲日韩欧美一区二区在线| 大白屁股一区二区视频| 亚洲精品在线电影| 美脚の诱脚舐め脚责91 | 丝袜美腿亚洲一区二区图片| 成人精品小蝌蚪| 精品国产凹凸成av人导航| 国模无码大尺度一区二区三区| 91精品国产综合久久久久久漫画 | 日日噜噜夜夜狠狠视频欧美人| 亚洲一区二区三区视频在线 | 一区二区在线观看av| 国产成人自拍高清视频在线免费播放| 91麻豆精品国产| 日日摸夜夜添夜夜添亚洲女人| 欧美在线制服丝袜| 亚洲国产日韩精品| 欧美日韩精品欧美日韩精品| 午夜久久久影院| 欧美高清一级片在线| 麻豆视频一区二区| 亚洲精品一区二区三区影院| 国产一区二区三区黄视频 | 国产精品99久久久久久久vr| 欧美不卡123| 激情六月婷婷久久| 国产精品美女久久福利网站| 成人午夜在线免费| 国产精品初高中害羞小美女文| av一区二区三区在线| 亚洲第一成年网| 日韩一区二区免费在线观看| 麻豆久久久久久| 日韩视频一区二区三区在线播放| 日本欧洲一区二区| 26uuu精品一区二区三区四区在线| 国产精品中文有码| 亚洲精品一区二区三区蜜桃下载| av亚洲精华国产精华| 亚洲精选视频在线| 欧美一区二区三区人| 日本怡春院一区二区| 成人免费在线播放视频| 欧美日韩电影一区| 国产一区二区三区在线观看精品 | 国产精品久久久久久久久免费樱桃| gogo大胆日本视频一区| 五月激情综合色| 久久久久久电影| 91国偷自产一区二区三区成为亚洲经典 | 日本精品一级二级| 青椒成人免费视频| 国产日韩精品一区二区浪潮av| 91女人视频在线观看| 日韩不卡一区二区三区| 国产精品无遮挡| 6080国产精品一区二区| 人人爽香蕉精品| 亚洲人成精品久久久久| 精品对白一区国产伦| 欧美一区二区三区在线电影| 激情综合亚洲精品| 日韩福利视频导航| 国产精品久久久久精k8| 欧美一区在线视频| 国产91丝袜在线播放九色| 亚洲国产日韩a在线播放| 国产亚洲人成网站| 91丝袜呻吟高潮美腿白嫩在线观看| 久久草av在线| 亚洲第四色夜色| 国产精品无圣光一区二区| 日韩一区二区在线观看视频| 在线亚洲欧美专区二区| 国产成人在线视频免费播放| 日日夜夜免费精品| 亚洲精品欧美激情| 国产欧美精品国产国产专区| 日韩午夜激情电影| 99久久久精品免费观看国产蜜| 久久精品国产精品亚洲综合| 性做久久久久久| 中文一区在线播放| 国产精品国产三级国产| 久久久久久久久久美女| 欧美日免费三级在线| 日本韩国一区二区三区| 欧美艳星brazzers| 欧美电影一区二区三区| 欧美一级免费大片| 欧美mv日韩mv国产网站| 日韩精品在线网站| 国产午夜精品久久久久久久| 国产欧美日韩另类一区| 亚洲丝袜美腿综合| 一二三四区精品视频| 午夜精品久久久久久久久久| 午夜亚洲福利老司机| 视频一区国产视频| 黄色精品一二区| 东方欧美亚洲色图在线| 色婷婷av一区二区| 欧美日韩成人一区| 欧美精品一区二区高清在线观看| 2020国产精品| 成人免费在线观看入口| 亚洲国产欧美在线人成| 日本亚洲欧美天堂免费| 国产麻豆91精品| av高清不卡在线| 欧美日韩一区二区在线视频| 日韩欧美国产1| 国产精品素人一区二区| 亚洲一区二区四区蜜桃| 激情图片小说一区| 欧美一区二区久久久| 国产三级一区二区| 一区二区欧美在线观看| 麻豆91免费观看| 成人黄色a**站在线观看| 欧美日韩午夜精品| 久久精品水蜜桃av综合天堂| 亚洲女人的天堂| 精品亚洲aⅴ乱码一区二区三区| aaa亚洲精品一二三区| 欧美日韩精品综合在线| 欧美国产乱子伦 | 国产在线精品一区二区| 在线免费不卡视频| 久久久影院官网| 日韩精品福利网| 91色porny在线视频| 欧美大片在线观看一区二区| 亚洲激情图片一区| 国产黄色精品网站| 91精品国产综合久久香蕉麻豆| 久久九九99视频| 日本女优在线视频一区二区| 91在线国产观看| 国产亚洲婷婷免费| 日本成人在线不卡视频| 日本精品一区二区三区高清| 中文幕一区二区三区久久蜜桃| 日韩精品成人一区二区三区| 91精彩视频在线| 国产精品久久久爽爽爽麻豆色哟哟 | 精品国内二区三区| 亚洲成av人片一区二区梦乃| 91丨九色丨国产丨porny| 久久伊人中文字幕| 久久精品久久99精品久久| 欧美日韩国产综合视频在线观看 | 久久九九久久九九| 美女爽到高潮91| 777色狠狠一区二区三区| 亚洲婷婷综合色高清在线| 国产成人精品www牛牛影视| 精品美女一区二区三区| 视频一区二区三区在线| 欧美三级电影在线观看| 亚洲综合丁香婷婷六月香| 不卡一区二区三区四区| 欧美韩日一区二区三区| 国产一区视频导航| www成人在线观看| 精品在线视频一区| 久久综合狠狠综合久久综合88 | 亚洲国产视频一区| 欧美日韩亚洲综合| 亚洲成人av在线电影| 欧美久久久一区| 美女视频黄频大全不卡视频在线播放| 欧美精品一区二区三区蜜臀|