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

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

?? explicit_gop.c

?? h264標(biāo)準(zhǔn)的VC實(shí)現(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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av一二三不卡影片| 亚洲综合久久av| 国产乱人伦精品一区二区在线观看| 欧美日韩在线一区二区| 1000精品久久久久久久久| 99热99精品| 亚洲黄色小说网站| 欧美日韩在线播放三区四区| 亚洲国产日韩精品| 91精品福利在线一区二区三区 | 欧美日韩国产中文| 日韩黄色小视频| 精品国产不卡一区二区三区| 国产高清不卡一区二区| 亚洲人一二三区| 欧美日韩免费一区二区三区| 琪琪一区二区三区| 国产免费成人在线视频| 色妞www精品视频| 日精品一区二区三区| 久久亚洲精精品中文字幕早川悠里 | 欧美色涩在线第一页| 日日摸夜夜添夜夜添亚洲女人| 日韩精品中文字幕一区二区三区 | 夜夜精品视频一区二区| 91精品午夜视频| 国产一二三精品| 亚洲欧洲制服丝袜| 国产乱码一区二区三区| 亚洲激情六月丁香| 精品国产网站在线观看| 97se狠狠狠综合亚洲狠狠| 婷婷综合在线观看| 国产精品久久毛片| 欧美日韩精品三区| 成人在线一区二区三区| 亚州成人在线电影| 国产精品夫妻自拍| 日韩午夜激情av| 一本在线高清不卡dvd| 久久er精品视频| 亚洲视频一区二区在线| 日韩精品一区二| 欧美午夜精品久久久久久孕妇| 极品尤物av久久免费看| 亚洲一区视频在线| 国产精品久久久久久久浪潮网站 | xfplay精品久久| 色天天综合色天天久久| 国产丶欧美丶日本不卡视频| 亚洲丶国产丶欧美一区二区三区| 国产日韩欧美电影| 欧美大片拔萝卜| 在线看日韩精品电影| 国产99久久久久久免费看农村| 亚洲高清在线精品| 亚洲精品综合在线| 欧美国产精品一区二区| 日韩一区二区三区四区| 欧美性大战xxxxx久久久| 成人美女视频在线观看| 国产最新精品免费| 麻豆精品在线视频| 亚洲成av人片www| 亚洲黄一区二区三区| 国产精品黄色在线观看| 国产亚洲精品aa| 精品国免费一区二区三区| 欧美人与禽zozo性伦| 欧美在线观看视频在线| va亚洲va日韩不卡在线观看| 国产不卡视频一区| 国产91精品精华液一区二区三区| 精品制服美女丁香| 久久 天天综合| 九色综合国产一区二区三区| 日本伊人色综合网| 日韩高清不卡一区| 日韩福利视频网| 麻豆精品在线视频| 九九视频精品免费| 韩国一区二区三区| 国产成人精品免费| 成人黄色综合网站| 99视频有精品| 欧美在线|欧美| 欧美另类高清zo欧美| 欧美日韩精品综合在线| 欧美日韩视频在线第一区 | 97久久精品人人做人人爽50路| www.色综合.com| 97超碰欧美中文字幕| 91九色最新地址| 欧美日韩在线播放三区四区| 欧美精品久久久久久久多人混战| 欧美唯美清纯偷拍| 911精品国产一区二区在线| 欧美一区二区三区视频免费播放| 3atv在线一区二区三区| 欧美成人一区二区三区片免费| 精品女同一区二区| 国产欧美一区二区精品忘忧草| 国产精品美女一区二区在线观看| 亚洲色图在线看| 午夜欧美电影在线观看| 久久精品99国产精品日本| 韩国成人在线视频| 99亚偷拍自图区亚洲| 欧美性猛交xxxx乱大交退制版 | 91久久精品网| 日韩一区二区精品葵司在线 | 91精品国产综合久久香蕉麻豆| 精品国内片67194| 中文字幕在线不卡一区二区三区| 亚洲激情网站免费观看| 美女视频黄a大片欧美| 国产成人综合精品三级| 欧美在线你懂得| 精品国产免费一区二区三区四区| 国产精品午夜在线观看| 亚洲国产精品天堂| 国内一区二区视频| 欧美三级午夜理伦三级中视频| 精品免费一区二区三区| 亚洲欧美另类久久久精品2019| 日韩电影在线一区| 成人av在线资源网站| 欧美一区二区视频在线观看| 国产精品免费aⅴ片在线观看| 水野朝阳av一区二区三区| 国产91丝袜在线观看| 欧美疯狂做受xxxx富婆| 亚洲欧洲精品一区二区三区不卡| 日韩高清不卡一区二区三区| www.亚洲人| 亚洲精品一区二区三区精华液 | 婷婷中文字幕一区三区| 国产成人鲁色资源国产91色综 | 亚洲精品一区在线观看| 亚洲一区二区三区四区在线| 国产精品99久| 日韩欧美电影一区| 亚洲国产一二三| 97久久超碰国产精品| 国产夜色精品一区二区av| 亚洲午夜私人影院| 99国产精品一区| 国产日韩av一区| 久久99久久99| 91精品婷婷国产综合久久性色| 亚洲天堂成人在线观看| 国产精品99久久久| 精品88久久久久88久久久 | 精品在线免费视频| 欧美日韩中文字幕精品| 亚洲精品欧美专区| av福利精品导航| 国产精品女同一区二区三区| 韩国精品一区二区| 精品国产乱码久久久久久久久| 日本成人超碰在线观看| 欧美综合久久久| 亚洲同性同志一二三专区| 成年人网站91| 中文字幕巨乱亚洲| 国产成人av电影在线| 国产亚洲成av人在线观看导航| 美女看a上一区| 欧美一区二区三区啪啪| 日韩精品五月天| 91精品在线麻豆| 美腿丝袜亚洲三区| 日韩一二三四区| 久久成人免费日本黄色| 欧美一区二区三区人| 久久国产精品无码网站| 精品乱人伦小说| 国产一区二区三区日韩| 久久婷婷国产综合国色天香| 韩国三级电影一区二区| 国产婷婷色一区二区三区四区 | 亚洲男人的天堂在线aⅴ视频| 91首页免费视频| 亚洲小说春色综合另类电影| 欧美猛男男办公室激情| 琪琪久久久久日韩精品| 欧美精品一区二区三区高清aⅴ| 激情综合一区二区三区| 欧美精品一区二区三区蜜臀 | 久久av中文字幕片| 久久综合色8888| 成人福利在线看| 亚洲精品一二三四区| 欧美视频一二三区| 老司机免费视频一区二区| 久久综合九色综合久久久精品综合| 国产激情一区二区三区桃花岛亚洲| 国产精品国产三级国产普通话三级| 色婷婷av一区二区三区大白胸| 日一区二区三区|