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

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

?? parset.c

?? 一個簡單的視頻會議VC++MFC工程文件
?? C
?? 第 1 頁 / 共 3 頁
字號:

/*!
 **************************************************************************************
 * \file
 *    parset.c
 * \brief
 *    Picture and Sequence Parameter set generation and handling
 *  \date 25 November 2002
 * \author
 *    Main contributors (see contributors.h for copyright, address and affiliation details) 
 *      - Stephan Wenger        <stewe@cs.tu-berlin.de>
 *
 **************************************************************************************
 */

#include <stdlib.h>
#include <assert.h>
#include <string.h>
 
#include "global.h"

#include "contributors.h"
#include "mbuffer.h"
#include "parset.h"
#include "vlc.h"

// Local helpers
static int IdentifyProfile();
static int IdentifyLevel();
static int IdentifyNumRefFrames();
static int GenerateVUISequenceParameters();

extern ColocatedParams *Co_located;

seq_parameter_set_rbsp_t SeqParSet[MAXSPS];
pic_parameter_set_rbsp_t PicParSet[MAXPPS];

static const byte ZZ_SCAN[16]  =
{  0,  1,  4,  8,  5,  2,  3,  6,  9, 12, 13, 10,  7, 11, 14, 15
};

static const byte ZZ_SCAN8[64] =
{  0,  1,  8, 16,  9,  2,  3, 10, 17, 24, 32, 25, 18, 11,  4,  5,
   12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13,  6,  7, 14, 21, 28,
   35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51,
   58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63
};


/*! 
 *************************************************************************************
 * \brief
 *    generates a sequence and picture parameter set and stores these in global
 *    active_sps and active_pps
 *
 * \return
 *    A NALU containing the Sequence ParameterSet
 *
 *************************************************************************************
*/
void GenerateParameterSets ()
{
  seq_parameter_set_rbsp_t *sps = NULL; 
  pic_parameter_set_rbsp_t *pps = NULL;

  sps = AllocSPS();
  pps = AllocPPS();

  GenerateSequenceParameterSet(sps, 0);

  if (input->GenerateMultiplePPS)
  {
    if (sps->profile_idc >= FREXT_HP)
    {
      GeneratePictureParameterSet( pps, sps, 0, 0, 0, input->cb_qp_index_offset, input->cr_qp_index_offset);
      memcpy (&PicParSet[0], pps, sizeof (pic_parameter_set_rbsp_t));
      GeneratePictureParameterSet( pps, sps, 1, 1, 1, input->cb_qp_index_offset, input->cr_qp_index_offset);
      memcpy (&PicParSet[1], pps, sizeof (pic_parameter_set_rbsp_t));
      GeneratePictureParameterSet( pps, sps, 2, 1, 2, input->cb_qp_index_offset, input->cr_qp_index_offset);
      memcpy (&PicParSet[2], pps, sizeof (pic_parameter_set_rbsp_t));

    }
    else
    {
      GeneratePictureParameterSet( pps, sps, 0, 0, 0, input->chroma_qp_index_offset, 0);
      memcpy (&PicParSet[0], pps, sizeof (pic_parameter_set_rbsp_t));
      GeneratePictureParameterSet( pps, sps, 1, 1, 1, input->chroma_qp_index_offset, 0);
      memcpy (&PicParSet[1], pps, sizeof (pic_parameter_set_rbsp_t));
      GeneratePictureParameterSet( pps, sps, 2, 1, 2, input->chroma_qp_index_offset, 0);
      memcpy (&PicParSet[2], pps, sizeof (pic_parameter_set_rbsp_t));
    }
  }
  else
  {
    if (sps->profile_idc >= FREXT_HP)
      GeneratePictureParameterSet( pps, sps, 0, input->WeightedPrediction, input->WeightedBiprediction, 
                                   input->cb_qp_index_offset, input->cr_qp_index_offset);
    else
      GeneratePictureParameterSet( pps, sps, 0, input->WeightedPrediction, input->WeightedBiprediction,
                                   input->chroma_qp_index_offset, 0);
    
    memcpy (&PicParSet[0], pps, sizeof (pic_parameter_set_rbsp_t));

  }

  active_sps = sps;
  active_pps = &PicParSet[0];
}

/*! 
*************************************************************************************
* \brief
*    frees global parameter sets active_sps and active_pps
*
* \return
*    A NALU containing the Sequence ParameterSet
*
*************************************************************************************
*/
void FreeParameterSets ()
{

  FreeSPS (active_sps);
  //FreePPS (active_pps);
}

/*! 
*************************************************************************************
* \brief
*    int GenerateSeq_parameter_set_NALU ();
*
* \note
*    Uses the global variables through GenerateSequenceParameterSet()
*    and GeneratePictureParameterSet
*
* \return
*    A NALU containing the Sequence ParameterSet
*
*************************************************************************************
*/

NALU_t *GenerateSeq_parameter_set_NALU ()
{
  NALU_t *n = AllocNALU(64000);
  int RBSPlen = 0;
  int NALUlen;
  byte rbsp[MAXRBSPSIZE];

  RBSPlen = GenerateSeq_parameter_set_rbsp (active_sps, rbsp);
  NALUlen = RBSPtoNALU (rbsp, n, RBSPlen, NALU_TYPE_SPS, NALU_PRIORITY_HIGHEST, 0, 1);
  n->startcodeprefix_len = 4;

  return n;
}


/*! 
*************************************************************************************
* \brief
*    NALU_t *GeneratePic_parameter_set_NALU (int PPS_id);
*
* \note
*    Uses the global variables through GenerateSequenceParameterSet()
*    and GeneratePictureParameterSet
*
* \return
*    A NALU containing the Picture Parameter Set
*
*************************************************************************************
*/

NALU_t *GeneratePic_parameter_set_NALU(int PPS_id)
{
  NALU_t *n = AllocNALU(64000);
  int RBSPlen = 0;
  int NALUlen;
  byte rbsp[MAXRBSPSIZE];

  RBSPlen = GeneratePic_parameter_set_rbsp (&PicParSet[PPS_id], rbsp);
  NALUlen = RBSPtoNALU (rbsp, n, RBSPlen, NALU_TYPE_PPS, NALU_PRIORITY_HIGHEST, 0, 1);
  n->startcodeprefix_len = 4;

  return n;
}


/*!
 ************************************************************************
 * \brief
 *    GenerateSequenceParameterSet: extracts info from global variables and
 *    generates sequence parameter set structure
 *
 * \param sps
 *    Sequence parameter set to be filled
 *
 * \par
 *    Function reads all kinds of values from several global variables,
 *    including input-> and image-> and fills in the sps.  Many
 *    values are current hard-coded to defaults.
 *
 ************************************************************************
 */

void GenerateSequenceParameterSet(seq_parameter_set_rbsp_t *sps, int SPS_id)
{
  unsigned i;
  int SubWidthC  [4]= { 1, 2, 2, 1};
  int SubHeightC [4]= { 1, 2, 1, 1};

  int frext_profile = ((IdentifyProfile()==FREXT_HP) || 
                      (IdentifyProfile()==FREXT_Hi10P) ||
                      (IdentifyProfile()==FREXT_Hi422) ||
                      (IdentifyProfile()==FREXT_Hi444));

  // *************************************************************************
  // Sequence Parameter Set
  // *************************************************************************
  assert (sps != NULL);
  // Profile and Level should be calculated using the info from the config
  // file.  Calculation is hidden in IndetifyProfile() and IdentifyLevel()
  sps->profile_idc = IdentifyProfile();
  sps->level_idc = IdentifyLevel();

  // needs to be set according to profile
  sps->constrained_set0_flag = 0;
  sps->constrained_set1_flag = 0;
  sps->constrained_set2_flag = 0;
  sps->constrained_set3_flag = 0;

  // Parameter Set ID hard coded to zero
  sps->seq_parameter_set_id = 0;

  // Fidelity Range Extensions stuff
  sps->bit_depth_luma_minus8   = input->BitDepthLuma - 8;
  sps->bit_depth_chroma_minus8 = input->BitDepthChroma - 8;
  img->lossless_qpprime_flag = input->lossless_qpprime_y_zero_flag & (sps->profile_idc==FREXT_Hi444);
  img->residue_transform_flag = input->residue_transform_flag;
  
  //! POC stuff:
  //! The following values are hard-coded in init_poc().  Apparently,
  //! the poc implementation covers only a subset of the poc functionality.
  //! Here, the same subset is implemented.  Changes in the POC stuff have
  //! also to be reflected here
  sps->log2_max_frame_num_minus4 = log2_max_frame_num_minus4;
  sps->log2_max_pic_order_cnt_lsb_minus4 = log2_max_pic_order_cnt_lsb_minus4;
  
  sps->pic_order_cnt_type = input->pic_order_cnt_type;
  sps->num_ref_frames_in_pic_order_cnt_cycle = img->num_ref_frames_in_pic_order_cnt_cycle;
  sps->delta_pic_order_always_zero_flag = img->delta_pic_order_always_zero_flag;
  sps->offset_for_non_ref_pic = img->offset_for_non_ref_pic;
  sps->offset_for_top_to_bottom_field = img->offset_for_top_to_bottom_field;

  for (i=0; i<img->num_ref_frames_in_pic_order_cnt_cycle; i++)
  {
    sps->offset_for_ref_frame[i] = img->offset_for_ref_frame[i];
  }
  // End of POC stuff

  // Number of Reference Frames
  sps->num_ref_frames = IdentifyNumRefFrames();

  //required_frame_num_update_behaviour_flag hardcoded to zero
  sps->gaps_in_frame_num_value_allowed_flag = FALSE;    // double check

  sps->frame_mbs_only_flag = !(input->PicInterlace || input->MbInterlace);

  // Picture size, finally a simple one :-)
  sps->pic_width_in_mbs_minus1 = ((input->img_width+img->auto_crop_right)/16) -1;
  sps->pic_height_in_map_units_minus1 = (((input->img_height+img->auto_crop_bottom)/16)/ (2 - sps->frame_mbs_only_flag)) - 1;

  // a couple of flags, simple
  sps->mb_adaptive_frame_field_flag = (FRAME_CODING != input->MbInterlace);
  sps->direct_8x8_inference_flag = input->directInferenceFlag;
  
  // Sequence VUI not implemented, signalled as not present
  sps->vui_parameters_present_flag = (input->rgb_input_flag && input->yuv_format==3);

  sps->chroma_format_idc = input->yuv_format;

  // This should be moved somewhere else.
  {
    int PicWidthInMbs, PicHeightInMapUnits, FrameHeightInMbs;
    int width, height;
    PicWidthInMbs = (sps->pic_width_in_mbs_minus1 +1);
    PicHeightInMapUnits = (sps->pic_height_in_map_units_minus1 +1);
    FrameHeightInMbs = ( 2 - sps->frame_mbs_only_flag ) * PicHeightInMapUnits;
    
    width = PicWidthInMbs * MB_BLOCK_SIZE;
    height = FrameHeightInMbs * MB_BLOCK_SIZE;
    
    Co_located = alloc_colocated (width, height,sps->mb_adaptive_frame_field_flag);
    
  }

  // Fidelity Range Extensions stuff
  if(frext_profile)
  {

    sps->seq_scaling_matrix_present_flag = (input->ScalingMatrixPresentFlag&1);
    for(i=0; i<8; i++)
    {
      if(i<6)
        sps->seq_scaling_list_present_flag[i] = (input->ScalingListPresentFlag[i]&1);
      else
      {
        if(input->AllowTransform8x8)
          sps->seq_scaling_list_present_flag[i] = (input->ScalingListPresentFlag[i]&1);
        else
          sps->seq_scaling_list_present_flag[i] = 0;
      }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕人成不卡一区| 国产精品每日更新| 色八戒一区二区三区| 色综合久久久久综合体| 欧美日韩一二区| 久久久亚洲精品一区二区三区| 欧美四级电影在线观看| 日韩你懂的在线播放| 日本一区二区综合亚洲| 亚洲自拍另类综合| 亚洲精选免费视频| 麻豆91精品91久久久的内涵| 国产不卡高清在线观看视频| 色域天天综合网| 精品国产网站在线观看| 亚洲色图欧美偷拍| 日韩电影在线一区| 狠狠色丁香婷婷综合| 色欧美乱欧美15图片| 欧美二区三区的天堂| 国产精品福利一区| 一区二区三区日韩欧美精品| 九九九精品视频| 日本韩国欧美一区二区三区| 欧美日韩精品一区二区三区蜜桃| 国产香蕉久久精品综合网| 亚洲午夜久久久久久久久电影院| 国产揄拍国内精品对白| 欧美日韩另类一区| 亚洲欧美综合另类在线卡通| 日本视频在线一区| 成人成人成人在线视频| 91精品国产入口在线| 亚洲免费观看高清完整版在线观看熊| 爽好久久久欧美精品| 成人免费高清视频在线观看| 精品成a人在线观看| 婷婷丁香久久五月婷婷| 91在线观看高清| 国产日韩一级二级三级| 久久综合综合久久综合| 91在线视频免费观看| 久久伊人蜜桃av一区二区| 日韩成人精品在线| 在线亚洲高清视频| 1024精品合集| 成人亚洲一区二区一| 欧美va日韩va| 青青青伊人色综合久久| 欧美日韩精品一区二区三区四区 | 色综合久久久久久久| 国产亚洲视频系列| 狠狠v欧美v日韩v亚洲ⅴ| 91啪亚洲精品| 日韩毛片精品高清免费| 91免费视频大全| ●精品国产综合乱码久久久久| 国产不卡视频一区| 国产精品色哟哟网站| 成人精品gif动图一区| 久久久.com| 高清成人免费视频| 欧美精品在线观看播放| 天堂va蜜桃一区二区三区| 91在线精品一区二区| 自拍偷拍亚洲激情| 在线免费精品视频| 午夜av电影一区| 日韩精品在线一区| 日韩成人午夜精品| 欧美人与z0zoxxxx视频| 日本三级韩国三级欧美三级| 日韩色视频在线观看| 粉嫩av一区二区三区在线播放| 亚洲另类春色国产| 久久久久久久久免费| 色av综合在线| 国产成人av在线影院| 亚洲国产日韩综合久久精品| 久久久久久久久伊人| 欧美日韩一二三区| zzijzzij亚洲日本少妇熟睡| 三级在线观看一区二区| 国产精品久久夜| 日韩一区二区三免费高清| 99久久精品免费看国产| 免费人成精品欧美精品| 亚洲精品高清视频在线观看| 久久综合九色综合97婷婷女人| 色屁屁一区二区| 成人性生交大片免费看在线播放| 五月天中文字幕一区二区| 国产精品视频观看| 日韩欧美高清在线| 欧美日韩精品一区二区三区蜜桃| 丁香婷婷综合色啪| 国产一区啦啦啦在线观看| 视频一区在线视频| 中文字幕制服丝袜一区二区三区| 51久久夜色精品国产麻豆| 91黄色小视频| 成人爱爱电影网址| 成人午夜看片网址| 韩国精品一区二区| 久久99久久久欧美国产| 亚洲最大成人网4388xx| 亚洲欧洲成人av每日更新| 欧美精品一区二区蜜臀亚洲| 欧美一级日韩免费不卡| 欧美老肥妇做.爰bbww| 一本大道综合伊人精品热热| 成人激情午夜影院| 国产91精品一区二区麻豆网站 | 亚洲丰满少妇videoshd| 国产精品免费免费| 亚洲精品一区二区三区香蕉| 7777精品伊人久久久大香线蕉 | 色欧美片视频在线观看| 成人听书哪个软件好| 国产一区二区在线视频| 精品无人码麻豆乱码1区2区| 亚洲成人av中文| 午夜一区二区三区视频| 亚洲大尺度视频在线观看| 水蜜桃久久夜色精品一区的特点| 亚洲国产欧美在线| 亚洲高清视频的网址| 亚洲国产精品视频| 午夜视频在线观看一区二区| 香蕉成人啪国产精品视频综合网 | 亚洲精品国产精华液| 亚洲女与黑人做爰| 亚洲亚洲精品在线观看| 亚洲成人你懂的| 天天做天天摸天天爽国产一区 | 五月婷婷色综合| 五月激情六月综合| 麻豆精品蜜桃视频网站| 美女脱光内衣内裤视频久久影院| 免费在线观看一区二区三区| 久久精品国产在热久久| 成人福利视频在线| 欧美日韩一区不卡| 欧美成人免费网站| 国产精品国产三级国产三级人妇 | 国产资源在线一区| 国产成人a级片| 在线观看视频一区| 精品88久久久久88久久久| 国产调教视频一区| 一区二区三区精品在线| 人人超碰91尤物精品国产| 国产乱人伦偷精品视频免下载| 99久久99久久免费精品蜜臀| 欧美在线色视频| 精品电影一区二区| 亚洲精品你懂的| 国产一区二区三区在线观看精品 | 日本欧美在线看| 成人av网站大全| 3d成人h动漫网站入口| 2021久久国产精品不只是精品 | 亚洲国产精品国自产拍av| 亚洲男帅同性gay1069| 日韩国产欧美在线观看| 国产剧情一区二区三区| 在线观看免费亚洲| 日韩精品一区二区三区中文精品| 亚洲国产成人午夜在线一区| 日韩电影一区二区三区四区| 激情图区综合网| 9191成人精品久久| 亚洲欧美日韩电影| 国产一区二区三区高清播放| 欧美日韩国产免费| 国产精品狼人久久影院观看方式| 日韩精品色哟哟| 在线视频欧美精品| 国产精品无人区| 裸体一区二区三区| 欧美性猛片xxxx免费看久爱| 久久精品人人做人人爽97| 男男成人高潮片免费网站| 欧洲精品一区二区| 综合激情成人伊人| 高清视频一区二区| 日韩欧美一二三| 美腿丝袜亚洲色图| 欧美日韩欧美一区二区| 亚洲欧美视频在线观看视频| 国产精品99久久久久久宅男| 欧美一区二区私人影院日本| 亚洲综合色婷婷| 色一情一伦一子一伦一区| 日本一区二区三区四区| 精品亚洲国产成人av制服丝袜| 欧美理论电影在线| 视频在线观看91| 91精品国产色综合久久不卡电影| 一区av在线播放|