NALU_t *GeneratePic_parameter_set_NALU(int PPS_id)
{
  NALU_t *n = AllocNALU(64000);
  int RBSPlen = 0;
  int NALUlen;
  byte rbsp[MAXRBSPSIZE];

  RBSPlen = GeneratePic_parameter_set_rbsp (&PicParSet[PPS_id], rbsp);
  NALUlen = RBSPtoNALU (rbsp, n, RBSPlen, NALU_TYPE_PPS, NALU_PRIORITY_HIGHEST, 0, 1);
  n->startcodeprefix_len = 4;

  return n;
}
/*!
 ************************************************************************
 * \brief
 *    This function opens the output files and generates the
 *    appropriate sequence header
 ************************************************************************
 */
int start_sequence()
{
  GenerateHeader(NALU_TYPE_SPS);
  GenerateSeq_parameter_set_rbsp (active_sps);
  //MSG(GENERATE_HEADER_SPS);

  GenerateHeader(NALU_TYPE_PPS);
  GeneratePic_parameter_set_rbsp (active_pps);
  //MSG(GENERATE_HEADER_PPS);

  //MSG(START_SEQUENCE);
  return 0;
}
NALU_t *GeneratePic_parameter_set_NALU()
{
  NALU_t *n = AllocNALU(64000);
  int RBSPlen = 0;
  int NALUlen;
  byte rbsp[MAXRBSPSIZE];

  RBSPlen = GeneratePic_parameter_set_rbsp (active_pps, rbsp);	//++ 参见标准7.3.2.2、7.4.2.2节
  NALUlen = RBSPtoNALU (rbsp, n, RBSPlen, NALU_TYPE_PPS, NALU_PRIORITY_HIGHEST, 0, 1);
  n->startcodeprefix_len = 4;

  return n;
}
/*!
*************************************************************************************
* \brief
*    NALU_t *GeneratePic_parameter_set_NALU ();
*
* \note
*    Uses the global variables through FillParameterSetStructures()
*
* \return
*    A NALU containing the Picture Parameter Set
*
*************************************************************************************
*/
NALU_t *GeneratePic_parameter_set_NALU(pic_parameter_set_rbsp_t *active_pps)
{
  NALU_t *n = AllocNALU(64000);
  t_sint32 RBSPlen = 0;

  byte *rbsp = (byte*)NULL;
  void * vfm_memory_ctxt = my_vfm_memory_ctxt;
  /*byte rbsp[MAXRBSPSIZE]; */
  rbsp = (byte *)malloc_(MAXRBSPSIZE * sizeof(char));
//  rbsp = (byte *)alloca(MAXRBSPSIZE * sizeof(char));

  RBSPlen = GeneratePic_parameter_set_rbsp (active_pps, (char *)rbsp);
  RBSPtoNALU ((char *)rbsp, n, RBSPlen, NALU_TYPE_PPS, NALU_PRIORITY_HIGHEST, 0, 1);
  n->startcodeprefix_len = 4;
  free(rbsp);
  return n;
}