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

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

?? explicit_gop.c

?? h264標準的VC實現(xiàn)
?? C
?? 第 1 頁 / 共 2 頁
字號:

/*!
 *************************************************************************************
 * \file explicit_gop.c
 *
 * \brief
 *    Code for explicit gop support and pyramidal coding.
 *
 * \author
 *    Main contributors (see contributors.h for copyright, address and affiliation details)
 *     - Alexis Michael Tourapis                     <alexis@mobilygen.com, alexismt@ieee.org> 
 *************************************************************************************
 */

#include <stdlib.h>
#include <ctype.h>
#include <limits.h>
#include "global.h"
#include "contributors.h"
#include "explicit_gop.h"
#include "image.h"
#include "nalucommon.h"
#include "string.h"


/*!
************************************************************************
* \brief
*    Generation of Pyramid GOP
************************************************************************
*/
void create_pyramid()
{
  int i, j;
  int centerB=input->successive_Bframe/2;

  if (input->PyramidCoding == 1)
  {
    for (i=0;i<input->successive_Bframe;i++)
    {
      if (i < centerB)
      {
        gop_structure[i].slice_type = B_SLICE;
        gop_structure[i].display_no = i * 2 + 1;
        gop_structure[i].pyramid_layer = 0;
        gop_structure[i].reference_idc = NALU_PRIORITY_HIGH;
      }
      else
      {
        gop_structure[i].slice_type = B_SLICE;
        gop_structure[i].display_no = (i - centerB) * 2;
        gop_structure[i].pyramid_layer = 1;
        gop_structure[i].reference_idc = NALU_PRIORITY_DISPOSABLE;

      }      
    }
   
  }
  else
  {    
    int GOPlevels = 0;
    int Bframes = input->successive_Bframe;
    int *curGOPLevelfrm,*curGOPLeveldist ;
    int curlevel = GOPlevels ;
    int prvlevelrefs = input->successive_Bframe;
    int levelrefs = input->successive_Bframe;
    int i;

    while (Bframes > 2)
    {
      Bframes  /= 2;
      GOPlevels ++;
    }
     
    curlevel = GOPlevels ;
    curGOPLevelfrm = (int*)malloc(GOPlevels*sizeof(int));
    curGOPLeveldist= (int*)malloc(GOPlevels*sizeof(int));
    
    for (i=0; i <input->successive_Bframe; i++)
    {
      gop_structure[i].display_no = 0;
      gop_structure[i].slice_type = B_SLICE;
    }

    while (levelrefs > 2)
    {
      levelrefs /= 2;
      curGOPLevelfrm[ curlevel ] = prvlevelrefs - levelrefs;
      curGOPLeveldist[ GOPlevels - curlevel ] = levelrefs+ (levelrefs )% 2;
    
      prvlevelrefs =levelrefs ;
      curlevel --;
    }

    curGOPLevelfrm[ 0] = levelrefs;
    curGOPLeveldist[ GOPlevels] = levelrefs + (levelrefs )% 2;
  
        
    for (j=0; j<curGOPLevelfrm[0]; j++)
    {
      gop_pyramid(GOPlevels, (j+ 1) * curGOPLeveldist[ 0] - 1, curGOPLeveldist[ 0]-1, gop_structure);

    }

	
    for (j=input->successive_Bframe; j>0; j--)
    {
      for (i=1; i<j; i++)
      {
        int tempnum;      

        if (gop_structure[i].pyramid_layer>gop_structure[i-1].pyramid_layer)
        {
          tempnum=gop_structure[i -1].display_no;
          gop_structure[i-1].display_no = gop_structure[i].display_no;
          gop_structure[i].display_no = tempnum;
          
          tempnum=gop_structure[i-1].pyramid_layer;
          gop_structure[i-1].pyramid_layer = gop_structure[i].pyramid_layer;
          gop_structure[i].pyramid_layer = tempnum;

          tempnum=gop_structure[i -1].reference_idc;
          gop_structure[i-1].reference_idc = gop_structure[i].reference_idc;
          gop_structure[i].reference_idc = tempnum;

          tempnum=gop_structure[i -1].slice_type;
          gop_structure[i-1].slice_type = gop_structure[i].slice_type;
          gop_structure[i].slice_type = tempnum;

          tempnum=gop_structure[i -1].slice_qp;
          gop_structure[i-1].slice_qp = gop_structure[i].slice_qp;
          gop_structure[i].slice_qp = tempnum;
 
          tempnum=gop_structure[i -1].pyramidPocDelta;
          gop_structure[i-1].pyramidPocDelta = gop_structure[i].pyramidPocDelta;
          gop_structure[i].pyramidPocDelta = tempnum;

        }

      }     
   }

  }
}


/*!
************************************************************************
* \brief
*    True Pyramid GOP generation 
************************************************************************
*/
void gop_pyramid(int level, int frm_no, int frames, GOP_DATA *pyramid_structure)
{
  
  if (level == 0 )
  {
    if (frm_no>=0 && frm_no<input->successive_Bframe && pyramid_structure[frm_no].display_no == 0)
    {
        pyramid_structure[frm_no].slice_type = B_SLICE;
        pyramid_structure[frm_no].display_no = frm_no;
        pyramid_structure[frm_no].pyramid_layer = 0;
        pyramid_structure[frm_no].reference_idc = NALU_PRIORITY_DISPOSABLE;
    }
  }
  else
  {
    if (frm_no>=0 && frm_no<input->successive_Bframe)
    {
      pyramid_structure[frm_no].slice_type = B_SLICE;
      pyramid_structure[frm_no].display_no = frm_no;
      pyramid_structure[frm_no].pyramid_layer = level;
      pyramid_structure[frm_no].reference_idc = NALU_PRIORITY_HIGH;
    }

    
    gop_pyramid(level - 1, frm_no - (frames+1)/2,(frames+1)/2,pyramid_structure);
    gop_pyramid(level - 1, frm_no + (frames+1)/2,(frames+1)/2,pyramid_structure);
  }  
}


/*!
************************************************************************
* \brief
*    Initialization of GOP structure.
*
************************************************************************
*/
void init_gop_structure()
{
  int max_gopsize = input->PyramidCoding != 3 ? input->successive_Bframe  : input->jumpd;
  
  gop_structure = calloc(max(10,max_gopsize), sizeof (GOP_DATA)); // +1 for reordering
  if (NULL==gop_structure) 
    no_mem_exit("init_gop_structure: gop_structure");
}


/*!
************************************************************************
* \brief
*    Clear GOP structure
************************************************************************
*/
void clear_gop_structure()
{
  if (gop_structure)
    free(gop_structure);
}


/*!
************************************************************************
* \brief
*    Interpret GOP struct from input parameters
************************************************************************
*/
void interpret_gop_structure()
{

  int nLength = strlen(input->ExplicitPyramidFormat);
  int i =0, k, qp, display_no;
  int slice_read =0, order_read = 0, stored_read = 0, qp_read =0;
  int coded_frame = 0;
  
   
  if (nLength > 0)
  {
    
    for (i = 0; i < nLength ; i++)
    {    
      //! First lets read slice type
      if (slice_read == 0)
      {
        switch (input->ExplicitPyramidFormat[i])
        {
        case 'P':
        case 'p':
          gop_structure[coded_frame].slice_type=P_SLICE;
          break;
        case 'B':
        case 'b':
          gop_structure[coded_frame].slice_type=B_SLICE;
          break;
        case 'I':
        case 'i':
          gop_structure[coded_frame].slice_type=I_SLICE;
          break;
        default:
          snprintf(errortext, ET_SIZE, "Slice Type invalid in ExplicitPyramidFormat param. Please check configuration file.");
          error (errortext, 400);
          break;
        }
        slice_read = 1;
      }
      else

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩在线一区二区三区视频| 天堂久久久久va久久久久| 国产高清成人在线| 久久精品人人做人人爽人人| 国产成人夜色高潮福利影视| 日本一区二区免费在线| voyeur盗摄精品| 亚洲色图欧美偷拍| 欧美三片在线视频观看| 午夜成人免费视频| 精品国产成人系列| 成人精品小蝌蚪| 亚洲精品国久久99热| 欧美精品v国产精品v日韩精品 | 国产精品911| 国产日本欧洲亚洲| 色综合久久88色综合天天免费| 一级特黄大欧美久久久| 欧美片在线播放| 国产一区在线观看麻豆| 亚洲欧美在线视频| 欧美日本在线视频| 国产精品1区2区3区在线观看| 国产精品免费视频观看| 欧美丝袜自拍制服另类| 免费在线观看成人| 国产精品久久久久永久免费观看| 一道本成人在线| 日本特黄久久久高潮| 久久久久免费观看| 欧美中文字幕不卡| 久久99国产精品麻豆| 亚洲人成网站精品片在线观看| 91麻豆精品国产自产在线观看一区| 久久国产日韩欧美精品| 亚洲人被黑人高潮完整版| 制服丝袜国产精品| 色综合久久久久综合体桃花网| 日韩精品亚洲专区| 亚洲日本丝袜连裤袜办公室| 制服丝袜亚洲色图| 色综合久久久久久久| 精品一区二区三区影院在线午夜| 亚洲欧洲成人自拍| 精品国产a毛片| 欧美撒尿777hd撒尿| 国产大陆亚洲精品国产| 日韩中文字幕区一区有砖一区| 国产精品系列在线| 精品国产一区二区三区忘忧草 | 黄页网站大全一区二区| 亚洲第一综合色| 国产精品婷婷午夜在线观看| 日韩免费电影一区| 欧美日韩国产一级二级| 91在线国内视频| 国产麻豆9l精品三级站| 美美哒免费高清在线观看视频一区二区 | 亚洲午夜久久久久久久久电影院 | 成人性生交大片免费看视频在线 | 精品国产麻豆免费人成网站| 日本福利一区二区| av电影在线观看完整版一区二区| 激情久久久久久久久久久久久久久久| 亚洲va在线va天堂| 亚洲午夜在线电影| 依依成人精品视频| 亚洲人妖av一区二区| 国产精品你懂的| 久久精品视频在线免费观看| 91精品国产综合久久福利| 欧美三级韩国三级日本一级| 91免费国产在线| 成人av综合在线| jizzjizzjizz欧美| 成人91在线观看| 成人福利视频网站| bt欧美亚洲午夜电影天堂| 成人黄色小视频在线观看| 成人h动漫精品一区二区| 成人黄色网址在线观看| 91香蕉国产在线观看软件| 一本色道久久综合狠狠躁的推荐 | 国产精品一区二区三区四区| 精品一区二区在线观看| 国产一区二区三区四| 国产精品一品二品| gogo大胆日本视频一区| 色菇凉天天综合网| 欧美日韩综合在线免费观看| 欧美三级电影在线看| 日韩一区二区三区视频| 精品国产一区二区三区久久久蜜月| 精品蜜桃在线看| 中文字幕乱码日本亚洲一区二区| 中日韩av电影| 亚洲成人免费av| 免费看黄色91| 国产成人亚洲综合a∨婷婷| 成人黄色国产精品网站大全在线免费观看 | 国产精品综合二区| 99精品欧美一区二区蜜桃免费 | 成人一级片网址| 色噜噜狠狠一区二区三区果冻| 欧美日韩国产123区| 日韩欧美国产小视频| 中文字幕av一区二区三区免费看 | 欧美成人精精品一区二区频| 久久免费视频色| 亚洲精品成人a在线观看| 蜜桃久久av一区| yourporn久久国产精品| 欧美日韩国产a| 国产欧美精品一区二区色综合 | 欧美午夜宅男影院| 欧美不卡123| 亚洲啪啪综合av一区二区三区| 日韩激情一二三区| 成人高清免费观看| 91精品欧美福利在线观看| 亚洲国产成人午夜在线一区| 亚洲一区二区影院| 国产一区二区三区四区五区美女| 在线精品亚洲一区二区不卡| 久久综合成人精品亚洲另类欧美| 亚洲色图.com| 国产真实乱偷精品视频免| 色偷偷成人一区二区三区91| 日韩一区二区三区四区五区六区| 亚洲人成人一区二区在线观看 | 国产一区二区三区香蕉| 欧美日精品一区视频| 国产精品嫩草久久久久| 裸体一区二区三区| 欧美综合久久久| 中文字幕在线不卡一区| 乱中年女人伦av一区二区| 欧洲精品在线观看| 亚洲欧洲一区二区在线播放| 精品在线一区二区三区| 欧美日本在线一区| 一级日本不卡的影视| 成人精品视频一区| 久久久五月婷婷| 蜜臀精品一区二区三区在线观看| 一本一道久久a久久精品| 中文字幕久久午夜不卡| 国产一区在线精品| 亚洲精品在线免费观看视频| 天使萌一区二区三区免费观看| 色中色一区二区| 国产精品初高中害羞小美女文| 久久福利视频一区二区| 7777精品伊人久久久大香线蕉的| 亚洲老司机在线| 成人精品视频.| 国产丝袜欧美中文另类| 国产乱淫av一区二区三区 | 久久久久久久久久久99999| 日本美女一区二区三区| 欧美疯狂做受xxxx富婆| 亚洲午夜视频在线观看| 在线观看国产91| 亚洲综合激情小说| 欧洲国产伦久久久久久久| 亚洲综合一二三区| 欧美三级日韩三级| 午夜欧美大尺度福利影院在线看| 在线观看视频一区二区欧美日韩| 亚洲精品中文在线观看| 色婷婷国产精品综合在线观看| 中文字幕综合网| 色综合久久88色综合天天 | 91麻豆精品国产91久久久久久| 香蕉成人啪国产精品视频综合网| 欧美日韩久久久一区| 日韩电影免费在线看| 日韩欧美国产午夜精品| 国产一区二区三区黄视频| 久久这里只有精品视频网| 国产成人三级在线观看| 中文字幕亚洲区| 91黄色免费版| 日韩精品高清不卡| 久久综合九色综合97婷婷| 国产乱妇无码大片在线观看| 国产精品私人影院| 91久久精品国产91性色tv| 日本视频在线一区| 国产日韩欧美精品在线| 99亚偷拍自图区亚洲| 亚洲欧美电影院| 在线不卡免费欧美| 国产综合一区二区| 亚洲日本va午夜在线影院| 欧美日韩国产中文| 国产精品一二三在| 亚洲一区二区免费视频| 日韩欧美综合在线| 99亚偷拍自图区亚洲|