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

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

?? rdopt_coding_state.c

?? h264標準的VC實現
?? C
字號:

/*!
 ***************************************************************************
 * \file rdopt_coding_state.c
 *
 * \brief
 *    Storing/restoring coding state for
 *    Rate-Distortion optimized mode decision
 *
 * \author
 *    Heiko Schwarz
 *
 * \date
 *    17. April 2001
 **************************************************************************/

#include <stdlib.h>
#include <memory.h>

#include "global.h"

#include "rdopt_coding_state.h"
#include "cabac.h"



/*!
 ************************************************************************
 * \brief
 *    delete structure for storing coding state
 ************************************************************************
 */
void
delete_coding_state (CSptr cs)
{
  if (cs != NULL)
  {
    //=== structures of data partition array ===
    if (cs->encenv    != NULL)   free (cs->encenv);
    if (cs->bitstream != NULL)   free (cs->bitstream);

    //=== contexts for binary arithmetic coding ===
    delete_contexts_MotionInfo  (cs->mot_ctx);
    delete_contexts_TextureInfo (cs->tex_ctx);

    //=== coding state structure ===
    free (cs);
    cs=NULL;
  }
}


/*!
 ************************************************************************
 * \brief
 *    create structure for storing coding state
 ************************************************************************
 */
CSptr
create_coding_state ()
{
  CSptr cs;

  //=== coding state structure ===
  if ((cs = (CSptr) calloc (1, sizeof(CSobj))) == NULL)
    no_mem_exit("init_coding_state: cs");

  //=== important variables of data partition array ===
  cs->no_part = input->partition_mode==0?1:3;
  if (input->symbol_mode == CABAC)
  {
    if ((cs->encenv = (EncodingEnvironment*) calloc (cs->no_part, sizeof(EncodingEnvironment))) == NULL)
      no_mem_exit("init_coding_state: cs->encenv");
  }
  else
  {
    cs->encenv = NULL;
  }
  if ((cs->bitstream = (Bitstream*) calloc (cs->no_part, sizeof(Bitstream))) == NULL)
    no_mem_exit("init_coding_state: cs->bitstream");

  //=== context for binary arithmetic coding ===
  cs->symbol_mode = input->symbol_mode;
  if (cs->symbol_mode == CABAC)
  {
    cs->mot_ctx = create_contexts_MotionInfo ();
    cs->tex_ctx = create_contexts_TextureInfo();
  }
  else
  {
    cs->mot_ctx = NULL;
    cs->tex_ctx = NULL;
  }

  return cs;
}


/*!
 ************************************************************************
 * \brief
 *    store coding state (for rd-optimized mode decision)
 ************************************************************************
 */
void
store_coding_state (CSptr cs)
{
  int  i;

  EncodingEnvironment  *ee_src, *ee_dest;
  Bitstream            *bs_src, *bs_dest;

  MotionInfoContexts   *mc_src  = img->currentSlice->mot_ctx;
  TextureInfoContexts  *tc_src  = img->currentSlice->tex_ctx;
  MotionInfoContexts   *mc_dest = cs->mot_ctx;
  TextureInfoContexts  *tc_dest = cs->tex_ctx;
  Macroblock           *currMB  = &(img->mb_data [img->current_mb_nr]);


  if (!input->rdopt)  return;

  if (cs->symbol_mode==CABAC)
  {
  //=== important variables of data partition array ===
	//only one partition for IDR img
  for (i = 0; i <(img->currentPicture->idr_flag? 1:cs->no_part); i++)
  {
    ee_src  = &(img->currentSlice->partArr[i].ee_cabac);
    bs_src  =   img->currentSlice->partArr[i].bitstream;
    ee_dest = &(cs->encenv   [i]);
    bs_dest = &(cs->bitstream[i]);

    memcpy (ee_dest, ee_src, sizeof(EncodingEnvironment));
    memcpy (bs_dest, bs_src, sizeof(Bitstream));
  }

  //=== contexts for binary arithmetic coding ===
    memcpy (mc_dest, mc_src, sizeof(MotionInfoContexts));
    memcpy (tc_dest, tc_src, sizeof(TextureInfoContexts));
  
  }
  else
  {
    //=== important variables of data partition array ===
  for (i = 0; i <(img->currentPicture->idr_flag? 1:cs->no_part); i++)
  {    
    bs_src  =   img->currentSlice->partArr[i].bitstream;   
    bs_dest = &(cs->bitstream[i]);
      memcpy (bs_dest, bs_src, sizeof(Bitstream));
    }
  }
  //=== syntax element number and bitcounters ===
  cs->currSEnr = currMB->currSEnr;
  memcpy (cs->bitcounter, currMB->bitcounter, MAX_BITCOUNTER_MB*sizeof(int));

  //=== elements of current macroblock ===
  memcpy (cs->mvd, currMB->mvd, 2*2*BLOCK_MULTIPLE*BLOCK_MULTIPLE*sizeof(int));
  cs->cbp_bits = currMB->cbp_bits;
}


/*!
 ************************************************************************
 * \brief
 *    restore coding state (for rd-optimized mode decision)
 ************************************************************************
 */
void
reset_coding_state (CSptr cs)
{
  int  i;

  EncodingEnvironment  *ee_src, *ee_dest;
  Bitstream            *bs_src, *bs_dest;

  MotionInfoContexts   *mc_dest = img->currentSlice->mot_ctx;
  TextureInfoContexts  *tc_dest = img->currentSlice->tex_ctx;
  MotionInfoContexts   *mc_src  = cs->mot_ctx;
  TextureInfoContexts  *tc_src  = cs->tex_ctx;
  Macroblock           *currMB  = &(img->mb_data [img->current_mb_nr]);


  if (!input->rdopt)  return;

  if (cs->symbol_mode==CABAC) 
  {
  //=== important variables of data partition array ===
  //only one partition for IDR img
  for (i = 0; i <(img->currentPicture->idr_flag? 1:cs->no_part); i++)
  {
    ee_dest = &(img->currentSlice->partArr[i].ee_cabac);
    bs_dest =   img->currentSlice->partArr[i].bitstream;
    ee_src  = &(cs->encenv   [i]);
    bs_src  = &(cs->bitstream[i]);

    //--- parameters of encoding environments ---
    memcpy (ee_dest, ee_src, sizeof(EncodingEnvironment));
    memcpy (bs_dest, bs_src, sizeof(Bitstream));
  }


  //=== contexts for binary arithmetic coding ===
    memcpy (mc_dest, mc_src, sizeof(MotionInfoContexts));
    memcpy (tc_dest, tc_src, sizeof(TextureInfoContexts));
    
  }
  else
  {
    //=== important variables of data partition array ===
	//only one partition for IDR img
  for (i = 0; i <(img->currentPicture->idr_flag? 1:cs->no_part); i++)

    {
      bs_dest =   img->currentSlice->partArr[i].bitstream;
      bs_src  = &(cs->bitstream[i]);

      //--- parameters of encoding environments ---   
      memcpy (bs_dest, bs_src, sizeof(Bitstream));
    }
  }

  //=== syntax element number and bitcounters ===
  currMB->currSEnr = cs->currSEnr;
  memcpy (currMB->bitcounter, cs->bitcounter, MAX_BITCOUNTER_MB*sizeof(int));

  //=== elements of current macroblock ===
  memcpy (currMB->mvd, cs->mvd, 2*2*BLOCK_MULTIPLE*BLOCK_MULTIPLE*sizeof(int));
  currMB->cbp_bits = cs->cbp_bits;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品少妇一区二区三区在线播放| 波多野结衣中文字幕一区 | 国产精品久线观看视频| 日韩久久久久久| 精品日韩一区二区三区| 精品va天堂亚洲国产| 日韩免费电影一区| 国产欧美日韩在线观看| 国产精品美女一区二区| 亚洲视频小说图片| 亚洲精品免费视频| 午夜精品一区二区三区免费视频| 午夜精品久久久久久久蜜桃app | 久久99精品久久久久| 麻豆91精品视频| 日本一区中文字幕| 国产美女精品一区二区三区| 粉嫩aⅴ一区二区三区四区五区| 成人小视频在线观看| 色吧成人激情小说| 9191久久久久久久久久久| 欧美电影免费观看高清完整版在线 | 国产在线日韩欧美| 成人永久aaa| 欧美在线观看一二区| 日韩精品专区在线影院重磅| 国产午夜亚洲精品羞羞网站| 亚洲三级在线播放| 日韩av中文在线观看| 国产999精品久久| 欧美亚洲国产bt| 久久蜜桃av一区二区天堂| 综合色中文字幕| 日韩在线一二三区| 成人免费毛片app| 欧美精品日韩一区| 中文字幕精品三区| 日韩不卡免费视频| 91欧美一区二区| 欧美大片在线观看一区| 亚洲婷婷在线视频| 另类欧美日韩国产在线| 91影视在线播放| 久久久亚洲精华液精华液精华液| 最新热久久免费视频| 麻豆91免费看| 欧美精品精品一区| 综合色中文字幕| 国产99久久久国产精品潘金网站| 欧美日韩国产一级片| 国产精品久久久久久户外露出 | 日韩专区在线视频| 99re在线精品| 国产人妖乱国产精品人妖| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲精品国产a| 国产高清不卡二三区| 日韩欧美精品三级| 三级精品在线观看| 欧美性色欧美a在线播放| 国产精品电影院| 国产精品一级片| 精品福利在线导航| 久久超碰97中文字幕| 在线播放中文字幕一区| 亚洲香肠在线观看| 欧美三区在线观看| 亚洲成在人线在线播放| 在线视频你懂得一区二区三区| 国产精品人成在线观看免费| 国产乱淫av一区二区三区| 精品少妇一区二区三区日产乱码| 日本不卡免费在线视频| 日韩亚洲欧美高清| 美女视频黄频大全不卡视频在线播放| 欧美军同video69gay| 三级一区在线视频先锋 | 99精品久久只有精品| 国产精品久久看| 99国产精品一区| 亚洲色图都市小说| 在线观看日韩一区| 午夜精品一区二区三区免费视频| 欧美肥胖老妇做爰| 激情图区综合网| 国产女人aaa级久久久级| 成人深夜福利app| 亚洲精品国产精品乱码不99| 欧美日韩免费视频| 蜜乳av一区二区| 国产肉丝袜一区二区| 成人av在线观| 午夜视频一区二区| 精品第一国产综合精品aⅴ| 国产a视频精品免费观看| ㊣最新国产の精品bt伙计久久| 色香色香欲天天天影视综合网| 亚洲成人你懂的| 欧美精品一区二区三区视频| 懂色av中文一区二区三区| 成人欧美一区二区三区小说| 欧美日韩一区不卡| 国产一区二区伦理| 夜夜亚洲天天久久| 欧美成人国产一区二区| 波多野结衣在线aⅴ中文字幕不卡| 亚洲精选视频免费看| 日韩免费视频线观看| 99re热这里只有精品视频| 久久综合九色综合97_久久久| 亚洲精品国产品国语在线app| 欧美日本高清视频在线观看| 久久新电视剧免费观看| 色拍拍在线精品视频8848| 亚洲国产综合色| 亚洲国产精品久久人人爱| 精品在线亚洲视频| 视频一区欧美日韩| 男女男精品视频| 麻豆91免费观看| 国产高清精品网站| 成人国产精品免费网站| 成人午夜免费视频| 91在线观看高清| 色综合久久综合| 欧美午夜不卡在线观看免费| 欧美久久一区二区| 欧美一区二区三区日韩| 日韩一区二区三区四区五区六区| 欧美一区二区三区白人| 精品国产一区a| 国产精品无遮挡| 亚洲精品视频在线看| 亚洲福中文字幕伊人影院| 日韩激情一二三区| 国产精品一区二区久久精品爱涩| 国产成人免费在线观看不卡| 99国产精品视频免费观看| 欧美人与z0zoxxxx视频| 精品国产伦理网| 中文字幕亚洲一区二区av在线 | 91浏览器在线视频| 欧美高清视频在线高清观看mv色露露十八 | 欧美一区二区视频在线观看| 日韩欧美视频一区| 中文字幕一区二区三区四区不卡 | 免费成人av在线| 国产成人午夜精品5599| 91成人免费网站| 久久品道一品道久久精品| 成人欧美一区二区三区视频网页| 午夜精品爽啪视频| 国产精品一区二区不卡| 欧美日韩免费在线视频| 日本一区二区三区dvd视频在线| 亚洲欧美精品午睡沙发| 男人的天堂亚洲一区| 波波电影院一区二区三区| 欧美一级久久久| 亚洲视频一区二区在线观看| 久久国产精品色婷婷| 91论坛在线播放| 久久天堂av综合合色蜜桃网| 一区二区三区成人在线视频| 国产一区二区不卡在线| 欧美在线观看18| 中文天堂在线一区| 久久精品国产澳门| 91国偷自产一区二区开放时间 | 国产成人综合网| 欧美精品久久久久久久多人混战 | 欧美国产精品劲爆| 蜜桃视频一区二区三区在线观看| 91亚洲精品一区二区乱码| 精品国产免费视频| 日韩av在线发布| 欧美三级电影网站| 亚洲欧美日韩中文播放| 国产精品系列在线播放| 日韩亚洲欧美在线观看| 五月天亚洲婷婷| 欧美亚洲综合网| 亚洲日本韩国一区| 成人在线视频首页| 国产日韩欧美a| 国内精品久久久久影院色| 在线综合视频播放| 亚洲二区在线观看| 欧美日韩在线播放三区| 亚洲一区在线电影| 色拍拍在线精品视频8848| 亚洲欧美激情插 | 69久久夜色精品国产69蝌蚪网| 自拍偷拍亚洲激情| av男人天堂一区| 国产精品美女久久久久久久久久久| 国内精品伊人久久久久av影院| 欧美一区二区免费观在线| 日本最新不卡在线| 日韩三级免费观看|