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

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

?? fmo.c

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

/*!
 *****************************************************************************
 *
 * \file fmo.c
 *
 * \brief
 *    Support for Flexible Macroblock Ordering (FMO)
 *
 * \author
 *    Main contributors (see contributors.h for copyright, address and affiliation details)
 *    - Stephan Wenger      stewe@cs.tu-berlin.de
 *    - Karsten Suehring    suehring@hhi.de
 ******************************************************************************
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>


#include "global.h"
#include "elements.h"
#include "defines.h"
#include "header.h"
#include "fmo.h"

//#define PRINT_FMO_MAPS

int *MbToSliceGroupMap = NULL;
int *MapUnitToSliceGroupMap = NULL; 

static int NumberOfSliceGroups;    // the number of slice groups -1 (0 == scan order, 7 == maximum)

static void FmoGenerateType0MapUnitMap (pic_parameter_set_rbsp_t* pps, seq_parameter_set_rbsp_t* sps, unsigned PicSizeInMapUnits );
static void FmoGenerateType1MapUnitMap (pic_parameter_set_rbsp_t* pps, seq_parameter_set_rbsp_t* sps, unsigned PicSizeInMapUnits );
static void FmoGenerateType2MapUnitMap (pic_parameter_set_rbsp_t* pps, seq_parameter_set_rbsp_t* sps, unsigned PicSizeInMapUnits );
static void FmoGenerateType3MapUnitMap (pic_parameter_set_rbsp_t* pps, seq_parameter_set_rbsp_t* sps, unsigned PicSizeInMapUnits );
static void FmoGenerateType4MapUnitMap (pic_parameter_set_rbsp_t* pps, seq_parameter_set_rbsp_t* sps, unsigned PicSizeInMapUnits );
static void FmoGenerateType5MapUnitMap (pic_parameter_set_rbsp_t* pps, seq_parameter_set_rbsp_t* sps, unsigned PicSizeInMapUnits );
static void FmoGenerateType6MapUnitMap (pic_parameter_set_rbsp_t* pps, seq_parameter_set_rbsp_t* sps, unsigned PicSizeInMapUnits );


/*!
 ************************************************************************
 * \brief
 *    Generates MapUnitToSliceGroupMap
 *    Has to be called every time a new Picture Parameter Set is used
 *
 * \param pps
 *    Picture Parameter set to be used for map generation
 * \param sps
 *    Sequence Parameter set to be used for map generation
 *
 ************************************************************************
 */
static int FmoGenerateMapUnitToSliceGroupMap (pic_parameter_set_rbsp_t* pps, seq_parameter_set_rbsp_t* sps)
{
  unsigned int NumSliceGroupMapUnits;

  NumSliceGroupMapUnits = (sps->pic_height_in_map_units_minus1+1)* (sps->pic_width_in_mbs_minus1+1);

  if (pps->slice_group_map_type == 6)
  {
    if ((pps->num_slice_group_map_units_minus1+1) != NumSliceGroupMapUnits)
    {
      error ("wrong pps->num_slice_group_map_units_minus1 for used SPS and FMO type 6", 500);
    }
  }

  // allocate memory for MapUnitToSliceGroupMap
  if (MapUnitToSliceGroupMap)
    free (MapUnitToSliceGroupMap);
  if ((MapUnitToSliceGroupMap = malloc ((NumSliceGroupMapUnits) * sizeof (int))) == NULL)
  {
    printf ("cannot allocated %d bytes for MapUnitToSliceGroupMap, exit\n", (pps->num_slice_group_map_units_minus1+1) * sizeof (int));
    exit (-1);
  }

  if (pps->num_slice_groups_minus1 == 0)    // only one slice group
  {
    memset (MapUnitToSliceGroupMap, 0, NumSliceGroupMapUnits * sizeof (int));
    return 0;
  }

  switch (pps->slice_group_map_type)
  {
  case 0:
    FmoGenerateType0MapUnitMap (pps, sps, NumSliceGroupMapUnits);
    break;
  case 1:
    FmoGenerateType1MapUnitMap (pps, sps, NumSliceGroupMapUnits);
    break;
  case 2:
    FmoGenerateType2MapUnitMap (pps, sps, NumSliceGroupMapUnits);
    break;
  case 3:
    FmoGenerateType3MapUnitMap (pps, sps, NumSliceGroupMapUnits);
    break;
  case 4:
    FmoGenerateType4MapUnitMap (pps, sps, NumSliceGroupMapUnits);
    break;
  case 5:
    FmoGenerateType5MapUnitMap (pps, sps, NumSliceGroupMapUnits);
    break;
  case 6:
    FmoGenerateType6MapUnitMap (pps, sps, NumSliceGroupMapUnits);
    break;
  default:
    printf ("Illegal slice_group_map_type %d , exit \n", pps->slice_group_map_type);
    exit (-1);
  }
  return 0;
}


/*!
 ************************************************************************
 * \brief
 *    Generates MbToSliceGroupMap from MapUnitToSliceGroupMap
 *
 * \param pps
 *    Picture Parameter set to be used for map generation
 * \param sps
 *    Sequence Parameter set to be used for map generation
 *
 ************************************************************************
 */
static int FmoGenerateMbToSliceGroupMap (pic_parameter_set_rbsp_t* pps, seq_parameter_set_rbsp_t* sps)
{
  unsigned i;

  // allocate memory for MbToSliceGroupMap
  if (MbToSliceGroupMap)
    free (MbToSliceGroupMap);

  if ((MbToSliceGroupMap = malloc ((img->PicSizeInMbs) * sizeof (int))) == NULL)
  {
    printf ("cannot allocated %d bytes for MbToSliceGroupMap, exit\n", (img->PicSizeInMbs) * sizeof (int));
    exit (-1);
  }


  if ((sps->frame_mbs_only_flag)|| img->field_pic_flag)
  {
    for (i=0; i<img->PicSizeInMbs; i++)
    {
      MbToSliceGroupMap[i] = MapUnitToSliceGroupMap[i];
    }
  }
  else
    if (sps->mb_adaptive_frame_field_flag  &&  (!img->field_pic_flag))
    {
      for (i=0; i<img->PicSizeInMbs; i++)
      {
        MbToSliceGroupMap[i] = MapUnitToSliceGroupMap[i/2];
      }
    }
    else
    {
      for (i=0; i<img->PicSizeInMbs; i++)
      {
        MbToSliceGroupMap[i] = MapUnitToSliceGroupMap[(i/(2*img->PicWidthInMbs))*img->PicWidthInMbs+(i%img->PicWidthInMbs)];
      }
    }
  return 0;
}


/*!
 ************************************************************************
 * \brief
 *    FMO initialization: Generates MapUnitToSliceGroupMap and MbToSliceGroupMap.
 *
 * \param pps
 *    Picture Parameter set to be used for map generation
 * \param sps
 *    Sequence Parameter set to be used for map generation
 ************************************************************************
 */
int FmoInit(pic_parameter_set_rbsp_t* pps, seq_parameter_set_rbsp_t* sps)
{
#ifdef PRINT_FMO_MAPS
  unsigned i,j;
#endif

  FmoGenerateMapUnitToSliceGroupMap(pps, sps);
  FmoGenerateMbToSliceGroupMap(pps, sps);

  NumberOfSliceGroups = pps->num_slice_groups_minus1+1;

#ifdef PRINT_FMO_MAPS
  printf("\n");
  printf("FMO Map (Units):\n");

  for (j=0; j<img->PicHeightInMapUnits; j++)
  {
    for (i=0; i<img->PicWidthInMbs; i++)
    {
      printf("%c",48+MapUnitToSliceGroupMap[i+j*img->PicWidthInMbs]);
    }
    printf("\n");
  }
  printf("\n");
  printf("FMO Map (Mb):\n");

  for (j=0; j<img->PicHeightInMbs; j++)
  {
    for (i=0; i<img->PicWidthInMbs; i++)
    {
      printf("%c",48+MbToSliceGroupMap[i+j*img->PicWidthInMbs]);
    }
    printf("\n");
  }
  printf("\n");

#endif

  return 0;
}


/*!
 ************************************************************************
 * \brief
 *    Free memory allocated by FMO functions
 ************************************************************************
 */
int FmoFinit()
{
  if (MbToSliceGroupMap)
  {
    free (MbToSliceGroupMap);
    MbToSliceGroupMap = NULL;
  }
  if (MapUnitToSliceGroupMap)
  {
    free (MapUnitToSliceGroupMap);
    MapUnitToSliceGroupMap = NULL; 
  }
  return 0;
}


/*!
 ************************************************************************
 * \brief
 *    FmoGetNumberOfSliceGroup() 
 *
 * \par Input:
 *    None
 ************************************************************************
 */
int FmoGetNumberOfSliceGroup()
{
  return NumberOfSliceGroups;
}


/*!
 ************************************************************************
 * \brief
 *    FmoGetLastMBOfPicture() 
 *    returns the macroblock number of the last MB in a picture.  This
 *    mb happens to be the last macroblock of the picture if there is only
 *    one slice group
 *
 * \par Input:
 *    None
 ************************************************************************
 */
int FmoGetLastMBOfPicture()
{
  return FmoGetLastMBInSliceGroup (FmoGetNumberOfSliceGroup()-1);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本一道波多野结衣一区二区| 中文字幕va一区二区三区| 一个色综合网站| 日本高清不卡aⅴ免费网站| 一区二区三区在线免费观看| 欧美在线免费观看亚洲| 偷窥国产亚洲免费视频 | 成人av电影在线| 国产精品三级久久久久三级| voyeur盗摄精品| 亚洲国产日产av| 精品日韩在线观看| 懂色av一区二区三区蜜臀| 亚洲视频一区二区免费在线观看| 91国模大尺度私拍在线视频| 日韩中文字幕一区二区三区| 日韩欧美国产综合| 丰满放荡岳乱妇91ww| 亚洲啪啪综合av一区二区三区| 欧美午夜影院一区| 精品在线视频一区| 国产精品嫩草久久久久| 在线视频综合导航| 黄色精品一二区| 樱桃视频在线观看一区| 欧美v日韩v国产v| 91网站在线播放| 蜜臀av一区二区三区| ㊣最新国产の精品bt伙计久久| 欧美日韩一本到| 顶级嫩模精品视频在线看| 亚洲成a天堂v人片| 久久精品亚洲麻豆av一区二区| 色播五月激情综合网| 激情综合一区二区三区| 中文字幕佐山爱一区二区免费| 欧美日韩国产免费一区二区| 国产精品66部| 秋霞成人午夜伦在线观看| 国产精品久久久久影院| 欧美一区二区视频在线观看2020| 懂色一区二区三区免费观看| 日韩中文字幕区一区有砖一区 | av高清久久久| 久久国产精品99精品国产| 一区二区三区日韩在线观看| 欧美电视剧免费观看| 欧美在线小视频| 99re成人精品视频| 国产白丝精品91爽爽久久| 秋霞国产午夜精品免费视频| 亚洲一级二级三级| 日韩美女视频一区| 欧美国产日韩a欧美在线观看| 欧美一区二区三区不卡| 欧美色爱综合网| 91在线视频免费观看| 岛国一区二区三区| 国内久久精品视频| 麻豆国产欧美一区二区三区| 污片在线观看一区二区| 亚洲一级二级三级| 亚洲第一久久影院| 亚洲综合另类小说| 亚洲综合一区二区精品导航| 中文字幕色av一区二区三区| 国产欧美一二三区| 26uuu精品一区二区在线观看| 日韩一区二区三免费高清| 在线成人免费观看| 在线电影一区二区三区| 91精品国产欧美一区二区| 欧美日韩高清一区二区| 欧美精品vⅰdeose4hd| 欧美日韩国产一级二级| 欧美久久久一区| 91麻豆精品国产91久久久更新时间| 欧美日韩专区在线| 欧美日韩成人在线| 欧美一区二区三区在线观看| 4438亚洲最大| 欧美草草影院在线视频| 久久亚洲免费视频| 久久久久久麻豆| 国产精品二区一区二区aⅴ污介绍| 国产精品视频一二三区| 最新热久久免费视频| 亚洲精品高清视频在线观看| 亚洲一区二区三区在线| 亚洲国产一二三| 麻豆精品新av中文字幕| 国产a视频精品免费观看| 成人激情动漫在线观看| 色爱区综合激月婷婷| 欧美一区二区三区爱爱| 久久免费国产精品| 自拍偷在线精品自拍偷无码专区| 亚洲在线免费播放| 秋霞午夜av一区二区三区 | 成人一区二区三区在线观看| 波多野结衣亚洲| 精品视频免费在线| 精品欧美一区二区三区精品久久| 欧美国产精品中文字幕| 一区二区三区资源| 日本欧美在线看| 国产不卡视频在线观看| 欧美私模裸体表演在线观看| 日韩视频免费观看高清完整版 | 91精品在线观看入口| 久久久夜色精品亚洲| 亚洲精品中文在线影院| 久久精品噜噜噜成人av农村| 成人av免费在线观看| 91麻豆精品久久久久蜜臀| 国产精品美女久久久久久2018| 亚洲综合在线电影| 国产一级精品在线| 欧美影院一区二区三区| 久久亚洲综合av| 无码av免费一区二区三区试看| 国产美女娇喘av呻吟久久| 在线亚洲一区二区| 国产亚洲成aⅴ人片在线观看| 亚洲精品视频在线看| 精品一区精品二区高清| 在线观看免费视频综合| 国产亚洲自拍一区| 天堂av在线一区| 白白色 亚洲乱淫| 精品久久久久香蕉网| 洋洋av久久久久久久一区| 国产成人精品一区二| 91精品国产手机| 亚洲精品免费一二三区| 国产suv精品一区二区三区| 欧美一二三区精品| 夜夜操天天操亚洲| 9i在线看片成人免费| 久久一区二区三区国产精品| 日韩精品亚洲专区| 日本韩国一区二区三区视频| 国产色产综合产在线视频| 蜜桃视频在线观看一区| 欧美亚洲丝袜传媒另类| 国产精品伦一区二区三级视频| 久久66热偷产精品| 欧美精品高清视频| 亚洲伊人色欲综合网| 91麻豆免费视频| 日本一区二区电影| 国产精品亚洲一区二区三区在线| 日韩欧美国产综合一区| 蜜臀91精品一区二区三区| 欧美日韩在线播放三区| 亚洲一区二区四区蜜桃| 色欧美日韩亚洲| 亚洲日本电影在线| 91捆绑美女网站| 国产精品久久久久久久蜜臀| 国产91色综合久久免费分享| 精品久久人人做人人爽| 美女任你摸久久| 欧美不卡一区二区三区四区| 免费亚洲电影在线| 欧美一级精品大片| 久久精品国产秦先生| 精品噜噜噜噜久久久久久久久试看| 看电视剧不卡顿的网站| 精品免费99久久| 国产精品小仙女| 国产欧美日韩精品a在线观看| 国产精品中文字幕欧美| 欧美—级在线免费片| 成人福利在线看| 亚洲猫色日本管| 欧美偷拍一区二区| 免费在线观看日韩欧美| 久久人人爽人人爽| www.视频一区| 亚洲一区二区视频在线| 欧美一区日本一区韩国一区| 久久成人久久爱| 国产精品嫩草影院av蜜臀| 色婷婷国产精品久久包臀| 亚洲国产精品欧美一二99| 制服.丝袜.亚洲.另类.中文| 精品一二三四区| 国产精品久久三| 欧美无砖专区一中文字| 久久99精品国产.久久久久| 国产精品久久久久影院亚瑟| 欧美日韩综合不卡| 国产精品66部| 亚洲午夜视频在线观看| 精品久久久久久久人人人人传媒 | 欧美激情资源网| 色狠狠综合天天综合综合| 日韩电影一区二区三区四区| 久久久久高清精品|