h264_Status h264_Parse_NAL_Unit(void *parent, h264_Info* pInfo, uint8_t *nal_ref_idc)
{
	h264_Status ret = H264_STATUS_ERROR;

	//h264_NAL_Unit_t* NAL = &pInfo->NAL;
	uint32_t code;
#if 0
	viddec_pm_get_bits(void * parent,uint32_t * data,uint32_t num_bits)(parent, &code, 24);
	viddec_pm_get_bits(parent, &code, 1);   //forbidden_zero_bit

	viddec_pm_get_bits(parent, &code, 2);
	SliceHeader->nal_ref_idc = (uint8_t)code;

	viddec_pm_get_bits(parent, &code, 5);
	pInfo->nal_unit_type = (uint8_t)code;
#else
#ifdef VBP	
	if( viddec_pm_get_bits(parent, &code, 8) != -1) 
#else
	//// 24bit SC, 1 bit: forbidden_zero_bit, 2 bitrs: nal_ref_idc, 5 bits: nal_unit_type	
	if( viddec_pm_get_bits(parent, &code, 32) != -1) 
#endif	
	{
		*nal_ref_idc = (uint8_t)((code>>5)&0x3);
		pInfo->nal_unit_type = (uint8_t)((code>>0)&0x1f);
		ret = H264_STATUS_OK;
	}
h264_Status h264_Parse_HRD_Parameters(void *parent, h264_Info* pInfo, int nal_hrd,seq_param_set_used_ptr SPS, vui_seq_parameters_t_not_used_ptr pVUI_Seq_Not_Used)
{
    //seq_param_set_ptr SPS = pInfo->p_active_SPS;
    int32_t i = 0;
    uint32_t code;


    if (nal_hrd)
    {
        SPS->sps_disp.vui_seq_parameters.nal_hrd_cpb_cnt_minus1 = h264_GetVLCElement(parent, pInfo, false);

        if (SPS->sps_disp.vui_seq_parameters.nal_hrd_cpb_cnt_minus1 >= MAX_CPB_CNT)
        {
            return H264_SPS_ERROR;
        }

        viddec_pm_get_bits(parent, &code, 8);
        pVUI_Seq_Not_Used->nal_hrd_bit_rate_scale = (uint8_t)(code>>4);
        pVUI_Seq_Not_Used->nal_hrd_cpb_size_scale = (uint8_t)(code & 0xf);

        for (i=0; i<=SPS->sps_disp.vui_seq_parameters.nal_hrd_cpb_cnt_minus1; i++)
        {
            pVUI_Seq_Not_Used->nal_hrd_parameters.bit_rate_value_minus1[i] = h264_GetVLCElement(parent, pInfo, false);
            pVUI_Seq_Not_Used->nal_hrd_parameters.cpb_size_value_minus1[i] = h264_GetVLCElement(parent, pInfo, false);

            viddec_pm_get_bits(parent, &code, 1);
            pVUI_Seq_Not_Used->nal_hrd_parameters.cbr_flag[i] = (uint8_t)code;
        }

        if ( viddec_pm_get_bits(parent, &code, 20) == -1)
            return H264_SPS_ERROR;

        SPS->sps_disp.vui_seq_parameters.nal_hrd_initial_cpb_removal_delay_length_minus1 = (uint8_t)((code>>15)&0x1f);
        SPS->sps_disp.vui_seq_parameters.nal_hrd_cpb_removal_delay_length_minus1 = (uint8_t)((code>>10)&0x1f);;
        SPS->sps_disp.vui_seq_parameters.nal_hrd_dpb_output_delay_length_minus1 = (uint8_t)((code>>5)&0x1f);;
        SPS->sps_disp.vui_seq_parameters.nal_hrd_time_offset_length = (uint8_t)(code&0x1f);;

    }
    else
    {