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

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

?? fmo.c

?? 一個簡單的視頻會議VC++MFC工程文件
?? 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);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久小美女| 国产精品一区二区无线| k8久久久一区二区三区| 精品国产乱码久久久久久1区2区 | 日韩精品一区二区三区中文不卡 | 午夜欧美视频在线观看 | 成人va在线观看| 成人av电影免费在线播放| 国产不卡视频在线播放| 欧美日韩一区二区三区四区 | 蜜臀va亚洲va欧美va天堂 | 亚洲一区在线观看网站| 日本中文在线一区| 日本高清无吗v一区| 91精品综合久久久久久| 日本一区二区免费在线| 伊人婷婷欧美激情| 国产69精品久久777的优势| 欧美日韩一区二区三区高清| 成人免费在线播放视频| 国产精品亚洲一区二区三区在线| 日韩视频在线永久播放| 天天色天天操综合| 91麻豆精品91久久久久久清纯| 国产精品乱人伦| 麻豆精品视频在线观看免费| 在线免费观看视频一区| 久久免费电影网| 日韩专区欧美专区| 成人免费视频一区| 久久久亚洲国产美女国产盗摄| 亚洲制服丝袜在线| 91片在线免费观看| 亚洲国产高清在线| 国产精品亚洲第一区在线暖暖韩国| 精品动漫一区二区三区在线观看| 精品在线亚洲视频| 日韩一区二区在线看| 亚洲视频精选在线| 国产成人av电影在线| 国产色产综合色产在线视频| 91在线精品一区二区三区| 亚洲天堂av一区| 欧美裸体一区二区三区| 另类欧美日韩国产在线| 日韩精品专区在线| 粉嫩久久99精品久久久久久夜| 国产精品初高中害羞小美女文| 色屁屁一区二区| 亚洲男人天堂av| 99久久久国产精品| 亚洲黄色免费网站| 日韩久久久精品| 丁香婷婷深情五月亚洲| 亚洲人成网站影音先锋播放| 欧美亚洲禁片免费| 美国十次了思思久久精品导航| 亚洲欧美一区二区视频| 欧美一区二区女人| 色婷婷综合在线| 国产盗摄精品一区二区三区在线| 亚洲午夜免费电影| 欧美一级搡bbbb搡bbbb| 99久久99久久综合| 一区二区高清免费观看影视大全 | 成人性生交大片免费看在线播放 | 日韩av一二三| 精品成人佐山爱一区二区| 韩国女主播成人在线观看| 午夜影院在线观看欧美| 亚洲精选免费视频| 国产精品第一页第二页第三页| 日韩一区二区在线看| 在线免费不卡电影| 色综合久久久久网| 色综合色狠狠综合色| 国产精品一二三在| 国产电影精品久久禁18| 毛片av一区二区| 久久超碰97中文字幕| 亚洲一区欧美一区| 亚洲国产综合视频在线观看| 国产精品久久久一本精品| 国产精品久久看| 中文字幕一区二区三区在线播放| 国产精品视频一二三区| 国产精品婷婷午夜在线观看| 久久久久久久久久久99999| 777xxx欧美| 精品久久久久久久久久久久久久久 | 亚洲18女电影在线观看| 亚洲永久免费av| 日韩精品一二三| 日本在线播放一区二区三区| 韩国成人福利片在线播放| 国产一区二区女| 91在线一区二区三区| 欧美精品在欧美一区二区少妇| 精品国产成人在线影院| 国产亚洲精品久| 中文字幕一区二区在线观看| 亚洲一区二区av电影| 麻豆国产一区二区| 国产一区在线观看麻豆| www.视频一区| 精品久久久久久综合日本欧美| 国产精品久久久久三级| 亚洲成av人片一区二区三区| 国产精品一区二区91| 成人毛片视频在线观看| 欧美日韩不卡一区| 日韩一区二区三区电影 | 国产精品自拍三区| 欧美色老头old∨ideo| 久久精品一二三| 三级久久三级久久| 不卡的电影网站| 欧美日韩另类一区| 日韩伦理av电影| 美女精品自拍一二三四| 色婷婷av一区二区三区gif| 久久理论电影网| 欧美aaaaaa午夜精品| 欧洲国内综合视频| 亚洲欧洲国产日韩| 国产夫妻精品视频| 日韩三级中文字幕| 亚洲综合图片区| 成人看片黄a免费看在线| 中文字幕高清不卡| 九色综合狠狠综合久久| 日韩一区二区三区精品视频| 午夜精品久久久久久久久| 91啪亚洲精品| 亚洲欧美另类小说| 96av麻豆蜜桃一区二区| 最新日韩av在线| 日本丶国产丶欧美色综合| 日韩理论在线观看| www.久久久久久久久| 国产精品欧美极品| 91久久免费观看| 国产精品免费看片| 在线观看不卡一区| 亚洲成人1区2区| 欧美日韩成人在线| 紧缚捆绑精品一区二区| 久久这里都是精品| 成人午夜电影小说| 久久精品免视看| 成人毛片在线观看| 亚洲一二三级电影| 欧美无人高清视频在线观看| 肉丝袜脚交视频一区二区| 亚洲精品在线三区| 99r精品视频| 三级影片在线观看欧美日韩一区二区| 欧美羞羞免费网站| 国精产品一区一区三区mba桃花| 久久这里都是精品| 欧美日韩在线播放| 国产精品99久久久久久有的能看| 亚洲欧美日韩系列| 欧美不卡一区二区三区四区| 亚洲免费看黄网站| 久久影视一区二区| 91久久精品一区二区| 国产毛片精品国产一区二区三区| 一区二区三区久久久| 精品国产一区二区三区四区四 | 欧美高清激情brazzers| 精一区二区三区| 亚洲第四色夜色| 亚洲欧美视频一区| 久久九九久精品国产免费直播| 欧美午夜精品一区二区蜜桃 | 99re这里只有精品视频首页| 亚洲国产成人精品视频| 国产人成亚洲第一网站在线播放 | 国内成人精品2018免费看| 亚洲精品国产一区二区精华液| 日韩一区二区免费电影| 色悠悠久久综合| 风间由美一区二区三区在线观看 | 亚洲日本成人在线观看| 国产欧美精品一区二区三区四区 | 精品一区二区精品| 毛片基地黄久久久久久天堂| 久久精品国产亚洲一区二区三区| 一区二区三区不卡视频| 亚洲综合区在线| 亚洲成人资源在线| 亚洲激情av在线| 亚洲卡通欧美制服中文| 一区二区三区免费在线观看| 亚洲国产精品麻豆| 亚洲第一在线综合网站| 亚洲国产欧美在线| 蜜臀久久久99精品久久久久久| 日韩高清不卡一区二区三区|