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

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

?? h.264

?? H.264編碼解碼器源碼(c語言版本)
?? 264
?? 第 1 頁 / 共 2 頁
字號:

/*!
 ************************************************************************
 *  \file
 *     parset.c
 *  \brief
 *     Parameter Sets
 *  \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 "parsetcommon.h"
#include "parset.h"
#include "nalu.h"
#include "memalloc.h"
#include "fmo.h"
#include "cabac.h"
#include "vlc.h"

#if TRACE
#define SYMTRACESTRING(s) strncpy(sym->tracestring,s,TRACESTRING_SIZE)
#else
#define SYMTRACESTRING(s) // do nothing
#endif

extern int UsedBits;      // for internal statistics, is adjusted by se_v, ue_v, u_1

seq_parameter_set_rbsp_t SeqParSet[MAXSPS];
pic_parameter_set_rbsp_t PicParSet[MAXPPS];
                          
// fill sps with content of p

int InterpretSPS (DataPartition *p, seq_parameter_set_rbsp_t *sps)
{
  unsigned i;
  int reserved_zero;
  Bitstream *s = p->bitstream;

  assert (p != NULL);
  assert (p->bitstream != NULL);
  assert (p->bitstream->streamBuffer != 0);
  assert (sps != NULL);

  UsedBits = 0;

  sps->profile_idc                            = u_v  (8, "SPS: profile_idc"                           , s);

  sps->constrained_set0_flag                  = u_1  (   "SPS: constrained_set0_flag"                 , s);
  sps->constrained_set1_flag                  = u_1  (   "SPS: constrained_set1_flag"                 , s);
  sps->constrained_set2_flag                  = u_1  (   "SPS: constrained_set2_flag"                 , s);
  reserved_zero                               = u_v  (5, "SPS: reserved_zero_5bits"                   , s);
  assert (reserved_zero==0);

  sps->level_idc                              = u_v  (8, "SPS: level_idc"                             , s);
  

  sps->seq_parameter_set_id                   = ue_v ("SPS: seq_parameter_set_id"                     , s);
  sps->log2_max_frame_num_minus4              = ue_v ("SPS: log2_max_frame_num_minus4"                , s);
  sps->pic_order_cnt_type                     = ue_v ("SPS: pic_order_count_type"                     , s);

  if (sps->pic_order_cnt_type == 0)
    sps->log2_max_pic_order_cnt_lsb_minus4 = ue_v ("SPS: log2_max_pic_order_cnt_lsb_minus4"           , s);
  else if (sps->pic_order_cnt_type == 1)
  {
    sps->delta_pic_order_always_zero_flag      = u_1  ("SPS: delta_pic_order_always_zero_flag"       , s);
    sps->offset_for_non_ref_pic                = se_v ("SPS: offset_for_non_ref_pic"                 , s);
    sps->offset_for_top_to_bottom_field        = se_v ("SPS: offset_for_top_to_bottom_field"         , s);
    sps->num_ref_frames_in_pic_order_cnt_cycle = ue_v ("SPS: num_ref_frames_in_pic_order_cnt_cycle"  , s);
    for(i=0; i<sps->num_ref_frames_in_pic_order_cnt_cycle; i++)
      sps->offset_for_ref_frame[i]               = se_v ("SPS: offset_for_ref_frame[i]"              , s);
  }
  sps->num_ref_frames                        = ue_v ("SPS: num_ref_frames"                         , s);
  sps->gaps_in_frame_num_value_allowed_flag  = u_1  ("SPS: gaps_in_frame_num_value_allowed_flag"   , s);
  sps->pic_width_in_mbs_minus1               = ue_v ("SPS: pic_width_in_mbs_minus1"                , s);
  sps->pic_height_in_map_units_minus1        = ue_v ("SPS: pic_height_in_map_units_minus1"         , s);
  sps->frame_mbs_only_flag                   = u_1  ("SPS: frame_mbs_only_flag"                    , s);
  if (!sps->frame_mbs_only_flag)
  {
    sps->mb_adaptive_frame_field_flag          = u_1  ("SPS: mb_adaptive_frame_field_flag"           , s);
  }
  sps->direct_8x8_inference_flag             = u_1  ("SPS: direct_8x8_inference_flag"              , s);
  sps->frame_cropping_flag                   = u_1  ("SPS: frame_cropping_flag"                , s);

  if (sps->frame_cropping_flag)
  {
    sps->frame_cropping_rect_left_offset      = ue_v ("SPS: frame_cropping_rect_left_offset"           , s);
    sps->frame_cropping_rect_right_offset     = ue_v ("SPS: frame_cropping_rect_right_offset"          , s);
    sps->frame_cropping_rect_top_offset       = ue_v ("SPS: frame_cropping_rect_top_offset"            , s);
    sps->frame_cropping_rect_bottom_offset    = ue_v ("SPS: frame_cropping_rect_bottom_offset"         , s);
  }
  sps->vui_parameters_present_flag           = u_1  ("SPS: vui_parameters_present_flag"            , s);
  if (sps->vui_parameters_present_flag)
  {
    printf ("VUI sequence parameters present but not supported, ignored, proceeding to next NALU\n");
  }
  sps->Valid = TRUE;
  return UsedBits;
}


int InterpretPPS (DataPartition *p, pic_parameter_set_rbsp_t *pps)
{
  unsigned i;
  int NumberBitsPerSliceGroupId;
  Bitstream *s = p->bitstream;
  
  assert (p != NULL);
  assert (p->bitstream != NULL);
  assert (p->bitstream->streamBuffer != 0);
  assert (pps != NULL);

  UsedBits = 0;

  pps->pic_parameter_set_id                  = ue_v ("PPS: pic_parameter_set_id"                   , s);
  pps->seq_parameter_set_id                  = ue_v ("PPS: seq_parameter_set_id"                   , s);
  pps->entropy_coding_mode_flag              = u_1  ("PPS: entropy_coding_mode_flag"               , s);

  //! Note: as per JVT-F078 the following bit is unconditional.  If F078 is not accepted, then
  //! one has to fetch the correct SPS to check whether the bit is present (hopefully there is
  //! no consistency problem :-(
  //! The current encoder code handles this in the same way.  When you change this, don't forget
  //! the encoder!  StW, 12/8/02
  pps->pic_order_present_flag                = u_1  ("PPS: pic_order_present_flag"                 , s);

  pps->num_slice_groups_minus1               = ue_v ("PPS: num_slice_groups_minus1"                , s);

  // FMO stuff begins here
  if (pps->num_slice_groups_minus1 > 0)
  {
    pps->slice_group_map_type               = ue_v ("PPS: slice_group_map_type"                , s);
    if (pps->slice_group_map_type == 0)
    {
      for (i=0; i<=pps->num_slice_groups_minus1; i++)
        pps->run_length_minus1 [i]                  = ue_v ("PPS: run_length_minus1 [i]"              , s);
    }
    else if (pps->slice_group_map_type == 2)
    {
      for (i=0; i<pps->num_slice_groups_minus1; i++)
      {
        //! JVT-F078: avoid reference of SPS by using ue(v) instead of u(v)
        pps->top_left [i]                          = ue_v ("PPS: top_left [i]"                        , s);
        pps->bottom_right [i]                      = ue_v ("PPS: bottom_right [i]"                    , s);
      }
    }
    else if (pps->slice_group_map_type == 3 ||
             pps->slice_group_map_type == 4 ||
             pps->slice_group_map_type == 5)
    {
      pps->slice_group_change_direction_flag     = u_1  ("PPS: slice_group_change_direction_flag"      , s);
      pps->slice_group_change_rate_minus1        = ue_v ("PPS: slice_group_change_rate_minus1"         , s);
    }
    else if (pps->slice_group_map_type == 6)
    {
      if (pps->num_slice_groups_minus1+1 >4)
        NumberBitsPerSliceGroupId = 3;
      else if (pps->num_slice_groups_minus1+1 > 2)
        NumberBitsPerSliceGroupId = 2;
      else
        NumberBitsPerSliceGroupId = 1;
      //! JVT-F078, exlicitly signal number of MBs in the map
      pps->num_slice_group_map_units_minus1      = ue_v ("PPS: num_slice_group_map_units_minus1"               , s);
      for (i=0; i<=pps->num_slice_group_map_units_minus1; i++)
        pps->slice_group_id[i] = u_v (NumberBitsPerSliceGroupId, "slice_group_id[i]", s);
    }
  }

  // End of FMO stuff

  pps->num_ref_idx_l0_active_minus1          = ue_v ("PPS: num_ref_idx_l0_active_minus1"           , s);
  pps->num_ref_idx_l1_active_minus1          = ue_v ("PPS: num_ref_idx_l1_active_minus1"           , s);
  pps->weighted_pred_flag                    = u_1  ("PPS: weighted prediction flag"               , s);
  pps->weighted_bipred_idc                   = u_v  ( 2, "PPS: weighted_bipred_idc"                , s);
  pps->pic_init_qp_minus26                   = se_v ("PPS: pic_init_qp_minus26"                    , s);
  pps->pic_init_qs_minus26                   = se_v ("PPS: pic_init_qs_minus26"                    , s);
  pps->chroma_qp_index_offset                = se_v ("PPS: chroma_qp_index_offset"                 , s);
  pps->deblocking_filter_control_present_flag = u_1 ("PPS: deblocking_filter_control_present_flag" , s);
  pps->constrained_intra_pred_flag           = u_1  ("PPS: constrained_intra_pred_flag"            , s);
  pps->redundant_pic_cnt_present_flag        = u_1  ("PPS: redundant_pic_cnt_present_flag"         , s);

  pps->Valid = TRUE;
  return UsedBits;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩亚洲不卡| 久久男人中文字幕资源站| 91精品国产乱| 中文字幕在线免费不卡| 久久精品国产亚洲aⅴ| 日本电影欧美片| 日本一区二区三区视频视频| 五月天激情小说综合| 日韩欧美国产麻豆| 亚洲日本va午夜在线影院| 国产一区二区三区在线观看精品| 欧美亚洲日本国产| 成人欧美一区二区三区白人| 韩国v欧美v日本v亚洲v| 91精品国模一区二区三区| 亚洲女人的天堂| 成人h动漫精品一区二区| 欧美精品一区二区蜜臀亚洲| 欧美a一区二区| 欧美日韩免费观看一区二区三区 | 欧美亚洲丝袜传媒另类| 国产精品毛片久久久久久久| 国产一区二区剧情av在线| 日韩一区二区在线看| 午夜精品久久久久久久久| 91国产福利在线| 亚洲精品免费一二三区| 色狠狠色噜噜噜综合网| 亚洲欧美韩国综合色| 99热精品国产| 亚洲另类在线视频| 99国内精品久久| 亚洲乱码日产精品bd| 不卡视频免费播放| 成人免费在线视频观看| 北岛玲一区二区三区四区| 国产精品免费丝袜| 成人app软件下载大全免费| 中文字幕一区二区三区av| av一区二区三区四区| 亚洲欧美电影院| 欧美在线影院一区二区| 亚洲一二三区在线观看| 欧美日韩精品综合在线| 日韩高清一级片| 精品国产乱码久久久久久图片 | 欧美区在线观看| 日韩 欧美一区二区三区| 日韩丝袜情趣美女图片| 国产一区二区三区观看| 国产精品免费aⅴ片在线观看| 99久久久国产精品免费蜜臀| 亚洲影院久久精品| 91麻豆精品国产无毒不卡在线观看| 日韩精品视频网站| 久久久久国产精品免费免费搜索| 国产成人精品影院| 玉足女爽爽91| 日韩无一区二区| 波多野结衣在线aⅴ中文字幕不卡| 亚洲精品伦理在线| 91精品国产品国语在线不卡| 国产一区二区导航在线播放| 中文字幕一区二区视频| 国产日韩欧美在线一区| av资源站一区| 免费观看在线色综合| 中文字幕av在线一区二区三区| 91婷婷韩国欧美一区二区| 首页国产欧美日韩丝袜| 国产精品入口麻豆原神| 欧美日韩一本到| 国产成人午夜视频| 亚洲r级在线视频| 中文字幕第一区综合| 欧美精品aⅴ在线视频| 成人免费观看av| 久久精品国产免费| 一区二区三区四区国产精品| 欧美精品一区二区在线观看| 日本韩国欧美一区二区三区| 久久se精品一区精品二区| 亚洲精品国产成人久久av盗摄| 2024国产精品| 欧美日韩国产片| 91视频观看免费| 国产精品一区二区久久不卡| 日韩黄色免费电影| 亚洲人吸女人奶水| 国产亚洲视频系列| 日韩精品中文字幕在线一区| 欧美综合亚洲图片综合区| 国产成人aaa| 韩国三级在线一区| 人人狠狠综合久久亚洲| 亚洲成a人片在线不卡一二三区| 国产精品天天摸av网| 精品国产免费久久| 日韩欧美视频一区| 91精品国产综合久久精品app| 色欧美日韩亚洲| 99九九99九九九视频精品| 国产一区二区三区av电影| 麻豆精品一区二区综合av| 亚洲成人手机在线| 亚洲国产aⅴ成人精品无吗| 亚洲欧美色图小说| 尤物av一区二区| 亚洲免费观看高清在线观看| 一区精品在线播放| 一区在线观看免费| 亚洲欧洲成人av每日更新| 国产精品国产a级| 国产精品久久久久久久蜜臀 | 欧美精品aⅴ在线视频| 欧美色精品在线视频| 欧美日韩一级二级| 在线播放91灌醉迷j高跟美女| 欧美日韩国产另类一区| 884aa四虎影成人精品一区| 欧美一区二区三区人| 精品久久人人做人人爽| 久久久99精品免费观看| 国产精品私房写真福利视频| 欧美激情一区二区三区全黄| 欧美激情综合五月色丁香 | 精品人在线二区三区| 欧美不卡在线视频| 国产午夜三级一区二区三| 国产精品伦理一区二区| 亚洲欧美视频在线观看视频| 亚洲午夜久久久久久久久久久| 日韩精品久久久久久| 秋霞影院一区二区| 国产精品羞羞答答xxdd| 成人免费看片app下载| 欧美影院午夜播放| 日韩一级视频免费观看在线| 久久久久久亚洲综合| 亚洲欧洲无码一区二区三区| 亚洲尤物在线视频观看| 美腿丝袜亚洲色图| 成人av片在线观看| 欧美日韩在线观看一区二区 | 日本不卡1234视频| 国产在线不卡一卡二卡三卡四卡| 国产精品99久久久久久久女警| 91一区一区三区| 日韩一区二区电影网| 国产精品丝袜久久久久久app| 一区av在线播放| 精品一区二区在线免费观看| 99久久免费国产| 欧美一区二区日韩| 亚洲视频小说图片| 毛片一区二区三区| 色综合天天综合网天天看片| 精品一区二区三区影院在线午夜| 成人高清av在线| 日韩精品一区二区三区在线| 中文字幕中文字幕在线一区 | 99久久久国产精品免费蜜臀| 欧美一区永久视频免费观看| 中文字幕一区视频| 国内精品伊人久久久久av影院| 色妞www精品视频| 久久中文娱乐网| 婷婷亚洲久悠悠色悠在线播放| 成人av影视在线观看| 日韩一级大片在线| 一区二区三区精品在线| 国产91对白在线观看九色| 日韩欧美中文一区二区| 一区二区三区在线播| 福利一区二区在线| 欧美tickle裸体挠脚心vk| 亚洲一级电影视频| 91免费国产在线| 亚洲国产成人自拍| 国产精品12区| 欧美mv日韩mv亚洲| 蜜桃视频免费观看一区| 欧美日本不卡视频| 亚洲国产三级在线| 在线亚洲高清视频| 亚洲丝袜精品丝袜在线| 大尺度一区二区| 久久久综合九色合综国产精品| 日韩avvvv在线播放| 欧美猛男男办公室激情| 一区二区三区精品久久久| 99精品桃花视频在线观看| 中文字幕 久热精品 视频在线 | 精品国产乱码久久久久久蜜臀| 午夜激情久久久| 欧美日韩亚洲国产综合| 亚洲国产日韩a在线播放| 欧美伊人久久大香线蕉综合69| 亚洲免费观看高清在线观看| 91性感美女视频|