Beispiel #1
0
/*!
 ************************************************************************
 * \brief
 *    FMO initialization: Generates p_Vid->MapUnitToSliceGroupMap and p_Vid->MbToSliceGroupMap.
 *
 * \param p_Vid
 *      video encoding parameters for current picture
 ************************************************************************
 */
int fmo_init(VideoParameters *p_Vid, Slice *pSlice)
{
    pic_parameter_set_rbsp_t* pps = p_Vid->active_pps;

#ifdef PRINT_FMO_MAPS
    unsigned i,j;
#endif

    FmoGenerateMapUnitToSliceGroupMap(p_Vid, pSlice);
    FmoGenerateMbToSliceGroupMap(p_Vid, pSlice);

    p_Vid->NumberOfSliceGroups = pps->num_slice_groups_minus1 + 1;

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

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

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

#endif

    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;
}
Beispiel #3
0
/*!
 ************************************************************************
 * \brief
 *    FMO initialization: Generates MapUnitToSliceGroupMap and MBAmap.
 *
 * \param img
 *    Image Parameter to be used for map generation
 * \param pps
 *    Picture Parameter set to be used for map generation
 * \param sps
 *    Sequence Parameter set to be used for map generation
 ************************************************************************
 */
int FmoInit(ImageParameters * img, pic_parameter_set_rbsp_t * pps, seq_parameter_set_rbsp_t * sps)
{
  
#ifdef PRINT_FMO_MAPS
  unsigned i,j;
  int bottom;
#endif
  
  int k;
  for (k=0;k<MAXSLICEGROUPIDS;k++)
    FirstMBInSlice[k] = -1;
  
  
  
  FmoGenerateMapUnitToSliceGroupMap(img, pps);
  FmoGenerateMBAmap(img, sps);
  
#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("%d ",MapUnitToSliceGroupMap[i+j*img->PicWidthInMbs]);
    }
    printf("\n");
  }
  printf("\n");
  
  if(sps->mb_adaptive_frame_field_flag==0)
  {
    printf("FMO Map (Mb):\n");	
    for (j=0; j<(img->PicSizeInMbs/img->PicWidthInMbs); j++)
    {
      for (i=0; i<img->PicWidthInMbs; i++)
      {
        printf("%d ",MBAmap[i+j*img->PicWidthInMbs]);
      }
      printf("\n");
    }
    printf("\n");
  }
  else 
  {
    printf("FMO Map (Mb in scan order for MBAFF):\n");	
    for (j=0; j<(img->PicSizeInMbs/img->PicWidthInMbs); j++)
    {
      for (i=0; i<img->PicWidthInMbs; i++)
      {
        bottom=(j%2);
        printf("%d ",MBAmap[(j-bottom)*img->PicWidthInMbs+i*2+bottom]);
      }
      printf("\n");
      
    }
    printf("\n");
    
  }
  
#endif
  
  return 0;
}