亚洲欧美第一页_禁久久精品乱码_粉嫩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 <malloc.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一区二区三区免费野_久草精品视频
亚洲成在人线在线播放| 国产欧美日韩在线| 久久国内精品视频| 国产精品国产三级国产a | 色国产精品一区在线观看| 亚洲精品第一国产综合野| 欧美一区二区三区免费| 国产麻豆精品久久一二三| 亚洲人123区| 精品国产91亚洲一区二区三区婷婷| 日韩高清欧美激情| 亚洲国产成人私人影院tom| 欧美日韩国产小视频在线观看| 国产一区二区精品久久91| 亚洲一区精品在线| 欧美精品第1页| 成人毛片在线观看| 奇米精品一区二区三区在线观看 | 国产亚洲欧美激情| 欧美日韩成人综合| 国产在线视频一区二区| 亚洲综合色网站| 日本一区二区三区在线观看| 欧美人与性动xxxx| 91视频xxxx| 日本在线不卡视频| 悠悠色在线精品| 精品精品欲导航| 精品视频一区二区不卡| 国产乱码精品1区2区3区| 人人狠狠综合久久亚洲| 亚洲欧美在线高清| 国产亚洲精品aa| 欧美一级理论片| 欧美欧美欧美欧美首页| 91年精品国产| 成人免费视频网站在线观看| 激情亚洲综合在线| 国产一区二区三区精品欧美日韩一区二区三区 | 777久久久精品| 欧美久久久久久久久中文字幕| 欧美吻胸吃奶大尺度电影| 在线看日本不卡| 欧美日韩国产精品成人| 欧美美女一区二区在线观看| 欧美日韩国产一区| 日韩午夜在线观看| wwwwxxxxx欧美| 久久久91精品国产一区二区精品| 国产欧美va欧美不卡在线| 国产精品无遮挡| 亚洲视频网在线直播| 亚洲激情在线激情| 亚洲高清在线视频| 日本v片在线高清不卡在线观看| 日本大胆欧美人术艺术动态 | 国产a级毛片一区| 成人福利电影精品一区二区在线观看| 国产.欧美.日韩| 91福利国产精品| 欧美高清性hdvideosex| 精品久久久久99| 中文字幕在线不卡一区二区三区| 亚洲免费在线看| 日韩综合小视频| 国产精品一区二区在线观看不卡| 成人激情电影免费在线观看| 欧美最新大片在线看| 91麻豆精品国产91久久久使用方法| 日韩免费高清电影| 国产精品高潮久久久久无| 午夜精品视频一区| 国产大陆亚洲精品国产| 91黄色免费网站| 欧美刺激午夜性久久久久久久| 国产欧美日韩视频在线观看| 一区二区三区中文字幕| 狠狠色伊人亚洲综合成人| 91网站视频在线观看| 3d成人h动漫网站入口| 久久精品欧美一区二区三区不卡| 一区二区三区四区国产精品| 蜜桃久久av一区| av在线免费不卡| 精品久久久久久久人人人人传媒 | 懂色一区二区三区免费观看| 欧美视频一区二区在线观看| 精品少妇一区二区三区免费观看| 日韩伦理av电影| 久久成人18免费观看| 91精彩视频在线观看| 国产亚洲精品免费| 日韩电影在线一区二区| 91免费视频大全| 2023国产一二三区日本精品2022| 一区二区三区小说| 国产黄色91视频| 欧美一区二区三区日韩| 亚洲免费大片在线观看| 国产精品自拍av| 制服丝袜一区二区三区| 亚洲欧美日韩国产一区二区三区| 狠狠色丁香久久婷婷综合丁香| 欧美性猛片aaaaaaa做受| 国产精品久久免费看| 久久99国产乱子伦精品免费| 欧美丝袜第三区| 亚洲欧美日本韩国| 成人午夜又粗又硬又大| 久久亚洲二区三区| 蜜臀精品一区二区三区在线观看| 色视频成人在线观看免| 中文字幕一区二区在线观看| 国产精品影视网| 日韩午夜电影av| 午夜av电影一区| 欧美在线观看视频一区二区| 国产精品久久国产精麻豆99网站| 久久99久久久久| 制服丝袜av成人在线看| 一区二区在线电影| av一区二区久久| 国产精品久久久爽爽爽麻豆色哟哟| 国产成人综合精品三级| 26uuu欧美日本| 精品亚洲porn| 欧美成人激情免费网| 久久精品国产精品青草| 日韩一区二区三区三四区视频在线观看| 亚洲国产精品麻豆| 欧美日韩国产色站一区二区三区| 亚洲一区二三区| 欧美日韩一级二级| 日韩精品一级中文字幕精品视频免费观看| 在线观看欧美黄色| 亚瑟在线精品视频| 91精品国产麻豆国产自产在线 | 精品在线观看视频| 26uuu另类欧美| 国产精品18久久久久久vr | 婷婷六月综合亚洲| 欧美日本国产一区| 久久成人久久爱| 国产视频一区不卡| 94-欧美-setu| 亚洲高清三级视频| 日韩欧美高清一区| 国产老妇另类xxxxx| 中文字幕欧美日韩一区| 一本色道久久加勒比精品| 亚洲一区二区美女| 日韩欧美一二区| 国产精品一二三四五| 中文字幕中文在线不卡住| 欧美亚洲动漫精品| 蜜桃av一区二区三区电影| 久久网这里都是精品| 成人黄动漫网站免费app| 一区二区三区小说| 欧美成人aa大片| 成人免费视频视频在线观看免费| 一区二区三区四区乱视频| 欧美一区三区四区| 国产麻豆视频一区二区| 亚洲欧美日韩中文播放 | 欧美日韩一级片网站| 久久99国产精品久久99果冻传媒| 国产三级欧美三级| 在线视频中文字幕一区二区| 另类人妖一区二区av| 国产精品丝袜久久久久久app| 91久久精品一区二区三区| 卡一卡二国产精品| 中文字幕一区二区三中文字幕| 欧美精品vⅰdeose4hd| 国产成a人无v码亚洲福利| 亚洲国产va精品久久久不卡综合| 精品处破学生在线二十三| 日本精品一区二区三区高清 | 久久成人精品无人区| 日韩美女久久久| 精品处破学生在线二十三| 色av综合在线| 国产一区二区三区在线观看免费| 综合久久一区二区三区| 精品欧美乱码久久久久久| 日本伦理一区二区| 国产成人午夜视频| 美日韩一级片在线观看| 亚洲欧美日韩国产综合| 久久欧美中文字幕| 欧美日本一区二区三区四区| 粉嫩av一区二区三区在线播放 | 欧美mv和日韩mv国产网站| 在线观看国产91| 成人综合激情网| 秋霞午夜av一区二区三区| 一区二区在线免费观看| 国产日韩高清在线| 日韩精品一区二区三区四区视频|