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

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

?? image.c

?? 一個(gè)簡(jiǎn)單的視頻會(huì)議VC++MFC工程文件
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):

/*!
 *************************************************************************************
 * \file image.c
 *
 * \brief
 *    Code one image/slice
 *
 * \author
 *    Main contributors (see contributors.h for copyright, address and affiliation details)
 *     - Inge Lille-Langoy               <inge.lille-langoy@telenor.com>
 *     - Rickard Sjoberg                 <rickard.sjoberg@era.ericsson.se>
 *     - Jani Lainema                    <jani.lainema@nokia.com>
 *     - Sebastian Purreiter             <sebastian.purreiter@mch.siemens.de>
 *     - Byeong-Moon Jeon                <jeonbm@lge.com>
 *     - Yoon-Seong Soh                  <yunsung@lge.com>
 *     - Thomas Stockhammer              <stockhammer@ei.tum.de>
 *     - Detlev Marpe                    <marpe@hhi.de>
 *     - Guido Heising                   <heising@hhi.de>
 *     - Thomas Wedi                     <wedi@tnt.uni-hannover.de>
 *     - Ragip Kurceren                  <ragip.kurceren@nokia.com>
 *     - Antti Hallapuro                 <antti.hallapuro@nokia.com>
 *     - Alexis Michael Tourapis         <alexismt@ieee.org> 
 *************************************************************************************
 */
#include "contributors.h"

#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <sys/timeb.h>
#include <string.h>
#include <assert.h>

#ifdef WIN32
#include <io.h>
#else
#include <unistd.h>
#endif

#include "global.h"

#include "refbuf.h"
#include "mbuffer.h"
#include "intrarefresh.h"
#include "fmo.h"
#include "sei.h"
#include "memalloc.h"
#include "nalu.h"
#include "ratectl.h"
#include "mb_access.h"
#include "output.h"

extern pic_parameter_set_rbsp_t PicParSet[MAXPPS];

void code_a_picture(Picture *pic);
void frame_picture (Picture *frame, int method);
void field_picture(Picture *top, Picture *bottom);

static int  writeout_picture(Picture *pic);

static int  picture_structure_decision(Picture *frame, Picture *top, Picture *bot);
static void distortion_fld (float *dis_fld_y, float *dis_fld_u, float *dis_fld_v);
static void find_snr();
static void find_distortion();

static void field_mode_buffer(int bit_field, float snr_field_y, float snr_field_u, float snr_field_v);
static void frame_mode_buffer (int bit_frame, float snr_frame_y, float snr_frame_u, float snr_frame_v);

static void init_frame();
static void init_field();

static void put_buffer_frame();
static void put_buffer_top();
static void put_buffer_bot();

static void copy_motion_vectors_MB();

static void PaddAutoCropBorders (int org_size_x, int org_size_y, int img_size_x, int img_size_y,
                                 int org_size_x_cr, int org_size_y_cr, int img_size_x_cr, int img_size_y_cr);

static void ReadOneFrame (int FrameNoInFile, int HeaderSize, int xs, int ys, int xs_cr, int ys_cr);

static void writeUnit(Bitstream* currStream ,int partition);

#ifdef _ADAPT_LAST_GROUP_
int *last_P_no;
int *last_P_no_frm;
int *last_P_no_fld;
#endif

static void ReportFirstframe(int tmp_time, int me_time);
static void ReportIntra(int tmp_time, int me_time);
static void ReportSP(int tmp_time, int me_time);
static void ReportRB(int tmp_time, int me_time);
static void ReportP(int tmp_time, int me_time);
static void ReportB(int tmp_time, int me_time);
static void ReportNALNonVLCBits(int tmp_time, int me_time);

static int CalculateFrameNumber();  // Calculates the next frame number

StorablePicture *enc_picture;
StorablePicture *enc_frame_picture;
StorablePicture *enc_frame_picture2;
StorablePicture *enc_frame_picture3;
StorablePicture *enc_top_picture;
StorablePicture *enc_bottom_picture;
//Rate control
int    QP;

const int ONE_FOURTH_TAP[3][2] =
{
  {20,20},
  {-5,-4},
  { 1, 0},
};


void MbAffPostProc()
{
  imgpel temp[16][32];

  imgpel ** imgY  = enc_picture->imgY;
  imgpel ***imgUV = enc_picture->imgUV;
  int i, x, y, x0, y0, uv;

  if (img->yuv_format != YUV400)
  {
    for (i=0; i<(int)img->PicSizeInMbs; i+=2)
    {
      if (enc_picture->mb_field[i])
      {
        get_mb_pos(i, &x0, &y0);
        for (y=0; y<(2*MB_BLOCK_SIZE);y++)
          for (x=0; x<MB_BLOCK_SIZE; x++)
            temp[x][y] = imgY[y0+y][x0+x];

        for (y=0; y<MB_BLOCK_SIZE;y++)
          for (x=0; x<MB_BLOCK_SIZE; x++)
          {
            imgY[y0+(2*y)][x0+x]   = temp[x][y];
            imgY[y0+(2*y+1)][x0+x] = temp[x][y+MB_BLOCK_SIZE];
          }

        x0 = x0 / (16/img->mb_cr_size_x);
        y0 = y0 / (16/img->mb_cr_size_y);

        for (uv=0; uv<2; uv++)
        {
          for (y=0; y<(2*img->mb_cr_size_y);y++)    
            for (x=0; x<img->mb_cr_size_x; x++)
              temp[x][y] = imgUV[uv][y0+y][x0+x];
          
          for (y=0; y<img->mb_cr_size_y;y++)
            for (x=0; x<img->mb_cr_size_x; x++)
            {
              imgUV[uv][y0+(2*y)][x0+x]   = temp[x][y];
              imgUV[uv][y0+(2*y+1)][x0+x] = temp[x][y+img->mb_cr_size_y];
            }
        }
      }
    }
  }
  else
  {
    for (i=0; i<(int)img->PicSizeInMbs; i+=2)
    {
      if (enc_picture->mb_field[i])
      {
        get_mb_pos(i, &x0, &y0);
        for (y=0; y<(2*MB_BLOCK_SIZE);y++)
          for (x=0; x<MB_BLOCK_SIZE; x++)
            temp[x][y] = imgY[y0+y][x0+x];

        for (y=0; y<MB_BLOCK_SIZE;y++)
          for (x=0; x<MB_BLOCK_SIZE; x++)
          {
            imgY[y0+(2*y)][x0+x]   = temp[x][y];
            imgY[y0+(2*y+1)][x0+x] = temp[x][y+MB_BLOCK_SIZE];
          }
      }
    }
  }
}

/*!
 ************************************************************************
 * \brief
 *    Encodes a picture
 *
 *    This is the main picture coding loop.. It is called by all this
 *    frame and field coding stuff after the img-> elements have been
 *    set up.  Not sure whether it is useful for MB-adaptive frame/field
 *    coding
 ************************************************************************
 */
void code_a_picture(Picture *pic)
{
  int NumberOfCodedMBs = 0;
  int SliceGroup = 0;
  int j;

  img->currentPicture = pic;

  img->currentPicture->idr_flag = ((!IMG_NUMBER) && (!(img->structure==BOTTOM_FIELD))) || (input->idr_enable && (img->type == I_SLICE || img->type==SP_SLICE || img->type==SI_SLICE)&& (!(img->structure==BOTTOM_FIELD)));

  pic->no_slices = 0;
  pic->distortion_u = pic->distortion_v = pic->distortion_y = 0.0;

  RandomIntraNewPicture ();     //! Allocates forced INTRA MBs (even for fields!)

  // The slice_group_change_cycle can be changed here.
  // FmoInit() is called before coding each picture, frame or field
  img->slice_group_change_cycle=1;
  FmoInit(img, active_pps, active_sps);
  FmoStartPicture ();           //! picture level initialization of FMO

  CalculateQuantParam();
  CalculateOffsetParam();

  if(input->AllowTransform8x8)
  {
    CalculateQuant8Param();
    CalculateOffset8Param();
  }

  while (NumberOfCodedMBs < img->total_number_mb)       // loop over slices
  {
    // Encode one SLice Group
    while (!FmoSliceGroupCompletelyCoded (SliceGroup))
    {
      // Encode the current slice
      NumberOfCodedMBs += encode_one_slice (SliceGroup, pic);
      FmoSetLastMacroblockInSlice (img->current_mb_nr);
      // Proceed to next slice
      img->current_slice_nr++;
      stats->bit_slice = 0;
    }
    // Proceed to next SliceGroup
    SliceGroup++;
  }
  FmoEndPicture ();

  // Modified for Fast Mode Decision. Inchoon Choi, SungKyunKwan Univ.
  if (input->rdopt == 3 && (img->type != B_SLICE))
    for (j = 0; j < input->NoOfDecoders; j++)
      DeblockFrame (img, decs->decY_best[j], NULL);

  DeblockFrame (img, enc_picture->imgY, enc_picture->imgUV); //comment out to disable loop filter

  if (img->MbaffFrameFlag)
    MbAffPostProc();

}



/*!
 ************************************************************************
 * \brief
 *    Encodes one frame
 ************************************************************************
 */
int encode_one_frame ()
{
  static int prev_frame_no = 0; // POC200301
  static int consecutive_non_reference_pictures = 0; // POC200301
  int        FrameNumberInFile;

#ifdef _LEAKYBUCKET_
  extern long Bit_Buffer[10000];
  extern unsigned long total_frame_buffer;
#endif

  time_t ltime1;
  time_t ltime2;

#ifdef WIN32
  struct _timeb tstruct1;
  struct _timeb tstruct2;
#else
  struct timeb tstruct1;
  struct timeb tstruct2;
#endif

  int tmp_time;
  int bits_frm = 0, bits_fld = 0;
  float dis_frm = 0, dis_frm_y = 0, dis_frm_u = 0, dis_frm_v = 0;
  float dis_fld = 0, dis_fld_y = 0, dis_fld_u = 0, dis_fld_v = 0;

  //Rate control
  int pic_type, bits = 0; 

  me_time=0;
  
#ifdef WIN32
  _ftime (&tstruct1);           // start time ms
#else
  ftime (&tstruct1);
#endif
  time (&ltime1);               // start time s

  //Rate control 
  img->write_macroblock = 0;
/*
  //Shankar Regunathan (Oct 2002)
  //Prepare Panscanrect SEI payload
  UpdatePanScanRectInfo ();
  //Prepare Arbitrarydata SEI Payload
  UpdateUser_data_unregistered ();
  //Prepare Registered data SEI Payload
  UpdateUser_data_registered_itu_t_t35 ();
  //Prepare RandomAccess SEI Payload
  UpdateRandomAccess ();
*/

  if (input->ResendPPS && img->number !=0)
  {
    stats->bit_ctr_parametersets_n=write_PPS(0, 0);
    //stats->bit_slice += stats->bit_ctr_parametersets_n;
    stats->bit_ctr_parametersets += stats->bit_ctr_parametersets_n;
  }

  put_buffer_frame ();      // sets the pointers to the frame structures 
                            // (and not to one of the field structures)
  init_frame ();
  FrameNumberInFile = CalculateFrameNumber();

  ReadOneFrame (FrameNumberInFile, input->infile_header,
                input->img_width, input->img_height, input->img_width_cr, input->img_height_cr);

  PaddAutoCropBorders (input->img_width, input->img_height, img->width, img->height,
                       input->img_width_cr, input->img_height_cr, img->width_cr, img->height_cr);

  // set parameters for direct mode and deblocking filter
  img->direct_spatial_mv_pred_flag     = input->direct_spatial_mv_pred_flag;
  img->LFDisableIdc    = input->LFDisableIdc;
  img->LFAlphaC0Offset = input->LFAlphaC0Offset;
  img->LFBetaOffset    = input->LFBetaOffset;

  if (img->type == B_SLICE)
    Bframe_ctr++;         // Bframe_ctr only used for statistics, should go to stats->

  if (input->PicInterlace == FIELD_CODING)
  {
    //Rate control
    img->FieldControl=1;

    img->field_picture = 1;  // we encode fields
    field_picture (top_pic, bottom_pic);
    img->fld_flag = 1;
  }
  else
  {
    //Rate control
    img->FieldControl=0;

    // For frame coding, turn MB level field/frame coding flag on
    if (input->MbInterlace)
      mb_adaptive = 1;

    img->field_picture = 0; // we encode a frame

    //Rate control
    if(input->RCEnable)
    { 
    /*update the number of MBs in the basic unit for MB adaptive 
      f/f coding*/
      if((input->MbInterlace)&&(input->basicunit<img->Frame_Total_Number_MB)\
        &&(img->type==P_SLICE)&&(img->IFLAG==0))
        img->BasicUnit=input->basicunit*2;
      else
        img->BasicUnit=input->basicunit;
      
      rc_init_pict(1,0,1); 
      img->qp  = updateQuantizationParameter(0); 
      
      
      pic_type = img->type;
      QP =0;
    }

    if( active_sps->frame_mbs_only_flag)
      img->TopFieldFlag=0;

    if (input->GenerateMultiplePPS)
      active_pps = &PicParSet[0];
    frame_picture (frame_pic, 0);
   
    if (img->type!=I_SLICE && input->RDPictureDecision)
    {
      int rd_qp = img->qp;
      if (input->GenerateMultiplePPS)
        active_pps = &PicParSet[1];
      else        
        img->qp-=1;

      img->write_macroblock = 0;
      
      frame_picture (frame_pic2,1);
      img->rd_pass=picture_coding_decision(frame_pic, frame_pic2, rd_qp);
      
//      update_rd_picture_contexts (img->rd_pass); 
      if (img->rd_pass==0)
      {
        enc_picture=enc_frame_picture;
        if (input->GenerateMultiplePPS)
          active_pps = &PicParSet[0];
        else        
          img->qp+=1;
      }

      //if (!input->GenerateMultiplePPS || img->type == B_SLICE)
      {
        if (input->GenerateMultiplePPS)
          active_pps = &PicParSet[2];
        else 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人8x视频一区二区| 亚洲精品在线免费播放| 欧美日韩国产综合久久| 欧美色中文字幕| 欧美一区二区三区喷汁尤物| 9191精品国产综合久久久久久| 制服丝袜国产精品| 久久综合国产精品| 中文字幕欧美一| 午夜激情一区二区三区| 蜜桃精品在线观看| 99精品国产视频| 欧美日韩色综合| 精品免费视频一区二区| 亚洲国产成人自拍| 天堂成人免费av电影一区| 亚洲一区二区黄色| 樱桃视频在线观看一区| 午夜视频一区在线观看| 成人蜜臀av电影| 日韩欧美色电影| 亚洲视频一区在线| 久久 天天综合| 欧美日韩极品在线观看一区| 欧美国产1区2区| 免费久久99精品国产| 91官网在线观看| 国产偷v国产偷v亚洲高清| 亚洲夂夂婷婷色拍ww47| 国产激情一区二区三区桃花岛亚洲| 欧美在线免费观看视频| 久久亚洲精品小早川怜子| 一区二区三区在线观看视频| 国产精品综合一区二区| 日韩一区二区三区电影| 亚洲午夜精品17c| 狠狠色狠狠色综合系列| 欧美日韩美女一区二区| 亚洲综合清纯丝袜自拍| 99在线精品免费| 中文av字幕一区| 国产精品自拍毛片| 国产午夜精品理论片a级大结局| 亚洲va欧美va天堂v国产综合| 欧美性一二三区| 亚洲国产精品天堂| 欧美区在线观看| 日韩专区在线视频| 56国语精品自产拍在线观看| 亚洲图片自拍偷拍| 在线成人小视频| 蜜桃视频一区二区三区| 精品奇米国产一区二区三区| 国产传媒欧美日韩成人| 国产精品久久久久三级| 色综合久久精品| 中文字幕一区二区三区色视频 | 日韩欧美成人激情| 久久精品av麻豆的观看方式| 日韩精品中文字幕一区| 国产精品一区在线| 亚洲男人天堂av| 欧美一区二区在线不卡| 成人小视频免费观看| 亚洲男同性恋视频| 日韩精品一区二区三区视频 | 国产亚洲精品中文字幕| aaa欧美日韩| 偷拍与自拍一区| 欧美精品一区二区三区很污很色的| 蜜桃在线一区二区三区| 欧美精品一区二区三区久久久 | 制服丝袜中文字幕亚洲| 亚洲一区二区三区视频在线播放| 91成人网在线| 亚洲图片有声小说| 日韩久久久久久| 99久久夜色精品国产网站| 亚洲线精品一区二区三区八戒| 日韩一区二区精品| 国产69精品久久久久毛片| 亚洲精品成人精品456| 日韩亚洲欧美中文三级| 成人午夜精品在线| 亚欧色一区w666天堂| 欧美zozozo| 欧美日韩一区二区三区不卡| 国产精品一区免费视频| 亚洲精品高清在线| 日韩一区二区免费高清| 波多野结衣在线一区| 亚洲在线成人精品| 国产偷国产偷精品高清尤物| 日本久久一区二区| 国产一区二区久久| 一区二区三国产精华液| 久久综合色鬼综合色| 欧美视频第二页| av在线不卡免费看| 国产精品1024久久| 国产制服丝袜一区| 日韩国产欧美三级| 亚洲国产另类av| 亚洲视频精选在线| 亚洲精品一区二区三区精华液| www.亚洲激情.com| 成人动漫中文字幕| 国产麻豆91精品| 精品一区二区三区香蕉蜜桃| 蓝色福利精品导航| 蜜臀av在线播放一区二区三区| 亚洲大片在线观看| 五月婷婷激情综合| 日韩国产欧美在线播放| 久久精品国产久精国产爱| 精品一区二区三区av| 中文字幕在线观看不卡| 中文字幕日本不卡| 亚洲精品视频免费看| 亚洲综合色视频| 五月天一区二区| 日本不卡在线视频| 精品一区二区在线免费观看| 日本午夜精品视频在线观看| 日本欧美在线观看| 国产精品一二三四五| 97久久精品人人爽人人爽蜜臀| 成人美女视频在线观看| 91福利在线播放| 日韩手机在线导航| 欧美激情一区二区三区| 亚洲精品成人悠悠色影视| 日韩精品成人一区二区三区 | 国产凹凸在线观看一区二区| 日本韩国欧美在线| 日韩欧美在线影院| 国产欧美一区二区精品性色 | 美女视频网站久久| 风间由美性色一区二区三区| 国产一区二区三区观看| 在线这里只有精品| 久久久久久麻豆| 亚洲成人av一区二区三区| 国产成人午夜精品影院观看视频| 91免费看片在线观看| 久久只精品国产| 亚洲一区二区在线免费看| 久久国产夜色精品鲁鲁99| 欧美疯狂做受xxxx富婆| 久久久亚洲精华液精华液精华液 | 欧美精品丝袜久久久中文字幕| 国产亚洲欧美中文| 亚洲123区在线观看| 99久久精品免费看国产免费软件| 56国语精品自产拍在线观看| 久久网站最新地址| 精品奇米国产一区二区三区| 亚洲精品亚洲人成人网| 99视频精品在线| 久久免费国产精品| 国产综合色在线| 久久综合九色欧美综合狠狠| 一区二区三区在线不卡| 91视频观看视频| 日本一区二区免费在线观看视频 | 亚洲国产成人av| 国内成人免费视频| 久久中文娱乐网| 亚洲一卡二卡三卡四卡五卡| 欧美视频自拍偷拍| 天天综合天天综合色| 678五月天丁香亚洲综合网| 日本欧美加勒比视频| 91蜜桃视频在线| 亚洲高清不卡在线| 波多野洁衣一区| 欧美经典三级视频一区二区三区| 成人黄页在线观看| 国产精品理伦片| 岛国精品一区二区| 亚洲激情校园春色| 在线视频国内自拍亚洲视频| 亚洲午夜激情网站| 精品久久久久久无| 久久福利资源站| 中文字幕日本不卡| 日本精品视频一区二区| 美洲天堂一区二卡三卡四卡视频| 日韩写真欧美这视频| 日本va欧美va瓶| 中文字幕一区在线观看视频| 欧美日韩一级视频| av高清久久久| 日韩精彩视频在线观看| 欧美日韩国产天堂| av一二三不卡影片| 日韩在线一区二区| 国产精品视频麻豆| 7777精品久久久大香线蕉| av电影在线不卡|