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

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

?? getpic.cpp

?? EVC做的Windows Mobile 的H263網(wǎng)絡(luò)視頻
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
////////////////////////////////////////////////////////////////////////////
//
//
//    Project     : VideoNet version 1.1.
//    Description : Peer to Peer Video Conferencing over the LAN.
//	  Author      :	Nagareshwar Y Talekar ( nsry2002@yahoo.co.in)
//    Date        : 15-6-2004.
//
//    This is the modified version of tmndecode (H.263 decoder) 
//    written by Karl & Robert.It was in ANSI C. I have converted into C++
//    so that it can be integrated into any windows application. I have 
//    removed some of the files which had display and file storing 
//    functions.I have removed the unnecessary code and also added some
//    new files..
//	  Original library dealt with files. Input & Output , both were files.
//    I have done some major changes so that it can be used for real time 
//    decoding process. Now one can use this library for decoding H263 frames. 
//
//
//    File description : 
//    Name    : GetPic.cpp
//
/////////////////////////////////////////////////////////////////////////////



/************************************************************************
 *
 *  getpic.c, picture decoding for tmndecode (H.263 decoder)
 *  Copyright (C) 1996  Telenor R&D, Norway
 *        Karl Olav Lillevold <Karl.Lillevold@nta.no>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *  Karl Olav Lillevold               <Karl.Lillevold@nta.no>
 *  Telenor Research and Development
 *  P.O.Box 83                        tel.:   +47 63 84 84 00
 *  N-2007 Kjeller, Norway            fax.:   +47 63 81 00 76
 *
 *  Robert Danielsen                  e-mail: Robert.Danielsen@nta.no
 *  Telenor Research and Development  www:    http://www.nta.no/brukere/DVC/
 *  P.O.Box 83                        tel.:   +47 63 84 84 00
 *  N-2007 Kjeller, Norway            fax.:   +47 63 81 00 76
 *  
 ************************************************************************/

/*
 * modified by Wayne Ellis BT Labs to run Annex E Arithmetic Decoding
 *           <ellis_w_wayne@bt-web.bt.co.uk>
 *
 * based on mpeg2decode, (C) 1994, MPEG Software Simulation Group
 * and mpeg2play, (C) 1994 Stefan Eckart
 *                         <stefan@lis.e-technik.tu-muenchen.de>
 */



#include "stdafx.h"
#include "GetPic.h"

/* decode one frame or field picture */

void getpicture(int *framenum)
{
  int i;
  unsigned char *tmp;

  for (i=0; i<3; i++) {
    tmp = oldrefframe[i];
    oldrefframe[i] = refframe[i];
    refframe[i] = tmp;
    newframe[i] = refframe[i];
  }

  if (mv_outside_frame && *framenum > 0) {
    make_edge_image(oldrefframe[0],edgeframe[0],coded_picture_width,
            coded_picture_height,32);
    make_edge_image(oldrefframe[1],edgeframe[1],chrom_width, chrom_height,16);
    make_edge_image(oldrefframe[2],edgeframe[2],chrom_width, chrom_height,16);
  }
  getMBs(*framenum);

  if (pb_frame) {
    if (expand && outtype == T_X11) {
      interpolate_image(bframe[0], exnewframe[0],
        coded_picture_width, coded_picture_height);
      interpolate_image(bframe[1], exnewframe[1], chrom_width, chrom_height);
      interpolate_image(bframe[2], exnewframe[2], chrom_width, chrom_height);
      
      storeframe(exnewframe, *framenum);
    }
    else
      storeframe(bframe,*framenum);

    *framenum += pb_frame;

  }

  if (expand && outtype == T_X11) {
    interpolate_image(newframe[0], exnewframe[0],
              coded_picture_width, coded_picture_height);
    interpolate_image(newframe[1], exnewframe[1], chrom_width, chrom_height);
    interpolate_image(newframe[2], exnewframe[2], chrom_width, chrom_height);

    storeframe(exnewframe, *framenum);
  }
  else
    storeframe(newframe,*framenum);


}


/**
*   Store the pointer to Y, U , V frames...
*  
*/
void storeframe(unsigned char *src[],int frame)
{
  
  yp=src[0];		// Y component
  up=src[1];        // U component
  vp=src[2];        // V component

}


/* decode all macroblocks of the current picture */

static void getMBs(int framenum)
{
  int comp;
  int MBA, MBAmax;
  int bx, by;

  int COD=0,MCBPC, CBPY, CBP=0, CBPB=0, MODB=0, Mode=0, DQUANT;
  int COD_index, CBPY_index, MODB_index, DQUANT_index, MCBPC_index;
  int INTRADC_index, YCBPB_index, UVCBPB_index, mvdbx_index, mvdby_index;
  int mvx, mvy, mvy_index, mvx_index, pmv0, pmv1, xpos, ypos, gob, i,k;
  int mvdbx=0, mvdby=0, pmvdbx, pmvdby, gfid, YCBPB, UVCBPB, gobheader_read;
  int startmv,stopmv,offset,bsize,last_done=0,pCBP=0,pCBPB=0,pCOD=0;
  int DQ_tab[4] = {-1,-2,1,2};
  short *bp;

  /* number of macroblocks per picture */
  MBAmax = mb_width*mb_height;

  MBA = 0; /* macroblock address */
  newgob = 0;

  /* mark MV's above the picture */
  for (i = 1; i < mb_width+1; i++) {
    for (k = 0; k < 5; k++) {
      MV[0][k][0][i] = NO_VEC;
      MV[1][k][0][i] = NO_VEC;
    }
    modemap[0][i] = MODE_INTRA;
  }
  /* zero MV's on the sides of the picture */
  for (i = 0; i < mb_height+1; i++) {
    for (k = 0; k < 5; k++) {
      MV[0][k][i][0] = 0;
      MV[1][k][i][0] = 0;
      MV[0][k][i][mb_width+1] = 0;
      MV[1][k][i][mb_width+1] = 0;
    }
    modemap[i][0] = MODE_INTRA;
    modemap[i][mb_width+1] = MODE_INTRA;
  }

  fault = 0;
  gobheader_read = 0;
  
  for (;;) {

    //if (trace)
    //  printf("frame %d, MB %d\n",framenum,MBA);
  resync:

    /* This version of the decoder does not resync on every possible
       error, and it does not do all possible error checks. It is not
       difficult to make it much more error robust, but I do not think
       it is necessary to include this in the freely available
       version. */

    if (fault) {
        if(trace)
		fputs("Warning: A Fault Condition Has Occurred - Resyncing \n",dlog);
      startcode();  /* sync on new startcode */
      fault = 0;
    }

    if (!(showbits(22)>>6)) { /* startcode */

      startcode();  
      /* in case of byte aligned start code, ie. PSTUF, GSTUF or ESTUF
         is used */
      
      if (showbits(22) == (32|SE_CODE)) { /* end of sequence */
        if (!(syntax_arith_coding && MBA < MBAmax)) {
          return;
        }
      }
      else if ((showbits(22) == PSC<<5) ) { /* new picture */
        if (!(syntax_arith_coding && MBA < MBAmax)) {
          return;
        }
      }
      else {
        if (!(syntax_arith_coding && MBA%mb_width)) {

          if (syntax_arith_coding) {   /* SAC hack to finish GOBs which   */
            gob = (showbits(22) & 31); /* end with MBs coded with no bits */
            if (gob * mb_width != MBA) 
              goto finish_gob;
          }

          gob = getheader() - 1;
          if (gob > mb_height) {
            if (!quiet)
              fputs("GN out of range\n",dlog);
            return;
          }
          
          /* GFID is not allowed to change unless PTYPE in picture header 
             changes */
          gfid = getbits(2);
          /* NB: in error-prone environments the decoder can use this
             value to determine whether a picture header where the PTYPE
             has changed, has been lost */
          
          quant = getbits(5);
          //if (trace)
          //  printf("GQUANT: %d\n", quant);
          xpos = 0;
          ypos = gob;
          MBA = ypos * mb_width;
          
          newgob = 1;
          gobheader_read = 1;
          if (syntax_arith_coding) 
            decoder_reset();	/* init. arithmetic decoder buffer after gob */
        }
      }
    }

  finish_gob:  /* SAC specific label */

    if (!gobheader_read) {
      xpos = MBA%mb_width;
      ypos = MBA/mb_width;
      if (xpos == 0 && ypos > 0)
        newgob = 0;
    }
    else 
      gobheader_read = 0;

    if (MBA>=MBAmax) 
      return; /* all macroblocks decoded */

  read_cod:
    if (syntax_arith_coding) { 
      if (pict_type == PCT_INTER) {
        COD_index = decode_a_symbol(cumf_COD);
        COD = codtab[COD_index];
        if (trace) {
          fputs("Arithmetic Decoding Debug \n",dlog);
          //printf("COD Index: %d COD: %d \n", COD_index, COD);
        }
      }
      else
        COD = 0;  /* COD not used in I-pictures, set to zero */
    }
    else {
      if (pict_type == PCT_INTER) 
        COD = showbits(1);
      else
        COD = 0; /* Intra picture -> not skipped */
    }

    if (!COD) {  /* COD == 0 --> not skipped */    

      if (syntax_arith_coding)  {
        if (pict_type == PCT_INTER) {
          MCBPC_index = decode_a_symbol(cumf_MCBPC);
          MCBPC = mcbpctab[MCBPC_index];
        }	
        else {
          MCBPC_index = decode_a_symbol(cumf_MCBPC_intra);
          MCBPC = mcbpc_intratab[MCBPC_index];
        }
        //if (trace) 
        //  printf("MCBPC Index: %d MCBPC: %d \n",MCBPC_index, MCBPC);
      }

      else {
        if (pict_type == PCT_INTER)
          flushbits(1); /* flush COD bit */
        if (pict_type == PCT_INTRA) 
          MCBPC = getMCBPCintra();
        else
          MCBPC = getMCBPC();
      }

      if (fault) goto resync;
      
      if (MCBPC == 255) { /* stuffing */
        goto read_cod;   /* read next COD without advancing MB count */
      }

      else {             /* normal MB data */

        Mode = MCBPC & 7;

        /* MODB and CBPB */
        if (pb_frame) {
          CBPB = 0;
          if (syntax_arith_coding)  {
            MODB_index = decode_a_symbol(cumf_MODB);
            MODB = modb_tab[MODB_index];
          }
          else 
            MODB = getMODB();
          //if (trace)
           // printf("MODB: %d\n", MODB);
          if (MODB == PBMODE_CBPB_MVDB) {
            if (syntax_arith_coding)  {
              for(i=0; i<4; i++) {
        YCBPB_index = decode_a_symbol(cumf_YCBPB);
        YCBPB = ycbpb_tab[YCBPB_index];
        CBPB |= (YCBPB << (6-1-i));
              }
 
              for(i=4; i<6; i++) {
        UVCBPB_index = decode_a_symbol(cumf_UVCBPB);
        UVCBPB = uvcbpb_tab[UVCBPB_index];
        CBPB |= (UVCBPB << (6-1-i));
              }
            }
            else
              CBPB = getbits(6);
            //if (trace)
            //  printf("CBPB = %d\n",CBPB);
          }
        }

        if (syntax_arith_coding) {

          if (Mode == MODE_INTRA || Mode == MODE_INTRA_Q) { /* Intra */
            CBPY_index = decode_a_symbol(cumf_CBPY_intra);
            CBPY = cbpy_intratab[CBPY_index];
          }
          else {
            CBPY_index = decode_a_symbol(cumf_CBPY);
            CBPY = cbpytab[CBPY_index];
        
          }
         // if (trace)
         //   printf("CBPY Index: %d CBPY %d \n",CBPY_index, CBPY);

        }
        else 
          CBPY = getCBPY();
 
        /* Decode Mode and CBP */
        
        
        if (Mode == MODE_INTRA || Mode == MODE_INTRA_Q)
          {/* Intra */
            if (!syntax_arith_coding)	

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩国产综合在线| 91啪亚洲精品| 欧美专区亚洲专区| 久久一二三国产| 一区二区三区高清在线| 激情综合亚洲精品| 色综合天天天天做夜夜夜夜做| 色综合天天综合网国产成人综合天 | 欧美午夜不卡视频| 欧美精品一区二区三区在线 | 日韩一区二区三区免费看| 中文字幕精品一区 | 久久精品亚洲乱码伦伦中文| 亚洲视频一二区| 精品一区二区三区不卡| av亚洲产国偷v产偷v自拍| 欧美一区二区福利在线| 亚洲欧美韩国综合色| 国内精品久久久久影院薰衣草 | 国产精品白丝jk黑袜喷水| 欧美日韩一区二区三区免费看| 国产亚洲欧美一级| 亚洲一区二区三区影院| 成人黄页毛片网站| 精品人在线二区三区| 中文字幕第一区| 久久99国产精品尤物| 欧美日韩和欧美的一区二区| 国产精品免费观看视频| 国产一区在线观看视频| 91精品国产一区二区三区蜜臀| 亚洲黄一区二区三区| 国产成人自拍网| 91精品国产福利| 中文字幕一区二区三区在线播放 | 99久久精品一区二区| 国产成人自拍在线| 国产91在线观看| 日韩一区二区视频| 日韩av不卡在线观看| 777奇米成人网| 丝袜美腿亚洲色图| 91麻豆精品国产自产在线观看一区| 香蕉加勒比综合久久| 欧美高清视频不卡网| 日韩电影在线看| 日韩欧美在线观看一区二区三区| 男人操女人的视频在线观看欧美| 欧美精品xxxxbbbb| 麻豆国产一区二区| 2017欧美狠狠色| 国产精品一区在线| 国产精品毛片无遮挡高清| 91在线视频在线| 亚洲一级二级在线| 91精品国产一区二区三区| 精品午夜一区二区三区在线观看| 久久综合久久99| av成人老司机| 亚洲综合视频在线观看| 欧美理论片在线| 精品一区二区三区日韩| 国产三级三级三级精品8ⅰ区| 成人看片黄a免费看在线| 一区二区三区在线视频免费| 91精品在线免费观看| 狠狠色狠狠色合久久伊人| 亚洲国产激情av| 欧洲激情一区二区| 捆绑紧缚一区二区三区视频| 国产日韩欧美在线一区| 色综合久久综合中文综合网| 日韩电影在线观看网站| 久久久一区二区三区捆绑**| 91免费在线视频观看| 日韩电影在线观看一区| 国产亚洲欧洲997久久综合| 色综合一区二区三区| 免费在线看成人av| 国产精品入口麻豆原神| 欧美日韩一区 二区 三区 久久精品 | 色综合久久久网| 日本不卡中文字幕| 中文成人av在线| 欧美日韩一区成人| 国产一区999| 亚洲国产精品一区二区尤物区| 欧美mv和日韩mv国产网站| 91在线观看高清| 久久精工是国产品牌吗| 亚洲蜜桃精久久久久久久| 日韩免费一区二区| 色综合咪咪久久| 国产一区二区在线视频| 一区二区国产视频| 久久久亚洲精品一区二区三区| 在线视频一区二区免费| 国产精一区二区三区| 亚洲高清不卡在线| 国产精品狼人久久影院观看方式| 这里只有精品视频在线观看| av亚洲产国偷v产偷v自拍| 蜜臀久久99精品久久久画质超高清| 国产精品初高中害羞小美女文| 欧美一区二区视频在线观看| 99久久99精品久久久久久 | 成人免费小视频| 日韩三级视频在线观看| 91亚洲午夜精品久久久久久| 国产一区二区调教| 香蕉久久夜色精品国产使用方法| 国产精品国产三级国产a| 精品成人在线观看| 色老汉av一区二区三区| 国产aⅴ综合色| 精品亚洲成a人| 日韩av在线发布| 亚洲一区中文日韩| 亚洲同性gay激情无套| 国产午夜一区二区三区| 欧美一区二区三区喷汁尤物| 在线观看免费视频综合| 成人激情视频网站| 国产麻豆视频一区| 青青草91视频| 视频在线观看国产精品| 亚洲一区二区三区不卡国产欧美| 国产精品欧美一区喷水| 亚洲精品一区二区精华| 欧美一区二区三区在| 欧美亚洲一区二区在线观看| hitomi一区二区三区精品| 国产成人午夜99999| 韩国精品主播一区二区在线观看 | 99久久精品国产毛片| 国产精品一区2区| 国产专区欧美精品| 美女在线视频一区| 日韩电影在线观看电影| 天堂久久一区二区三区| 性做久久久久久| 午夜精品aaa| 亚洲国产一区二区在线播放| 亚洲最大的成人av| 亚洲精品国产无天堂网2021| 亚洲视频在线观看三级| 日韩一区有码在线| 亚洲视频在线一区| 亚洲精品国久久99热| 亚洲另类在线一区| 亚洲精品日日夜夜| 夜夜精品浪潮av一区二区三区| 亚洲激情综合网| 一区二区三区四区亚洲| 亚洲自拍都市欧美小说| 亚洲国产精品久久久久婷婷884| 亚洲国产日韩a在线播放| 亚洲图片自拍偷拍| 午夜a成v人精品| 欧美aaa在线| 激情深爱一区二区| 国产资源在线一区| 国产99精品国产| 99综合电影在线视频| 91在线观看一区二区| www.日韩精品| 色婷婷av久久久久久久| 欧美日韩一卡二卡三卡| 9191久久久久久久久久久| 51精品秘密在线观看| 精品国产麻豆免费人成网站| 久久精品一区蜜桃臀影院| 国产精品美女久久久久久久久久久 | 中文字幕一区二区三区在线播放 | 视频一区二区中文字幕| 玖玖九九国产精品| 国产精品888| 色婷婷亚洲综合| 这里只有精品视频在线观看| 久久综合久久久久88| 一色桃子久久精品亚洲| 亚洲女爱视频在线| 日韩电影一区二区三区| 国产自产高清不卡| 91啪九色porn原创视频在线观看| 欧美日韩一区二区在线视频| 精品久久久久香蕉网| 中文字幕欧美激情| 亚洲一区在线免费观看| 另类小说欧美激情| 不卡一区中文字幕| 欧美日韩第一区日日骚| 精品福利视频一区二区三区| 成人欧美一区二区三区白人 | 美女国产一区二区三区| 丁香天五香天堂综合| 欧美在线999| 精品国产乱码91久久久久久网站| 日韩一区欧美一区| 青草av.久久免费一区|