コード例 #1
0
static void ddl_getdec_profilelevel(struct ddl_decoder_data *decoder,
		u32 profile, u32 level)
{
	enum vcd_codec_profile codec_profile = VCD_PROFILE_UNKNOWN;
	enum vcd_codec_level codec_level = VCD_LEVEL_UNKNOWN;

	switch (decoder->codec.codec) {
	case VCD_CODEC_MPEG4:
		{
			if (profile == VIDC_720P_PROFILE_MPEG4_SP)
				codec_profile = VCD_PROFILE_MPEG4_SP;
			else if (profile == VIDC_720P_PROFILE_MPEG4_ASP)
				codec_profile = VCD_PROFILE_MPEG4_ASP;

			ddl_getmpeg4_declevel(&codec_level, level);
			break;
		}
	case VCD_CODEC_H264:
		{
			if (profile == VIDC_720P_PROFILE_H264_BASELINE)
				codec_profile = VCD_PROFILE_H264_BASELINE;
			else if (profile == VIDC_720P_PROFILE_H264_MAIN)
				codec_profile = VCD_PROFILE_H264_MAIN;
			else if (profile == VIDC_720P_PROFILE_H264_HIGH)
				codec_profile = VCD_PROFILE_H264_HIGH;
			ddl_geth264_declevel(&codec_level, level);
			break;
		}
	default:
	case VCD_CODEC_H263:
		{
			break;
		}
	case VCD_CODEC_VC1:
	case VCD_CODEC_VC1_RCV:
		{
			if (profile == VIDC_720P_PROFILE_VC1_SP)
				codec_profile = VCD_PROFILE_VC1_SIMPLE;
			else if (profile == VIDC_720P_PROFILE_VC1_MAIN)
				codec_profile = VCD_PROFILE_VC1_MAIN;
			else if (profile == VIDC_720P_PROFILE_VC1_ADV)
				codec_profile = VCD_PROFILE_VC1_ADVANCE;
			ddl_get_vc1_dec_level(&codec_level, level, profile);
			break;
		}
	case VCD_CODEC_MPEG2:
		{
			if (profile == VIDC_720P_PROFILE_MPEG2_MAIN)
				codec_profile = VCD_PROFILE_MPEG2_MAIN;
			else if (profile == VIDC_720P_PROFILE_MPEG2_SP)
				codec_profile = VCD_PROFILE_MPEG2_SIMPLE;
			ddl_get_mpeg2_dec_level(&codec_level, level);
			break;
		}
	}

	decoder->profile.profile = codec_profile;
	decoder->level.level = codec_level;
}
コード例 #2
0
static void ddl_getdec_profilelevel(struct ddl_decoder_data_type *p_decoder,
		u32 n_profile, u32 n_level)
{
	enum vcd_codec_profile_type profile = VCD_PROFILE_UNKNOWN;
	enum vcd_codec_level_type level = VCD_LEVEL_UNKNOWN;

	switch (p_decoder->codec_type.e_codec) {
	case VCD_CODEC_MPEG4:
		{
			if (n_profile == VIDC_720P_PROFILE_MPEG4_SP)
				profile = VCD_PROFILE_MPEG4_SP;
			else if (n_profile == VIDC_720P_PROFILE_MPEG4_ASP)
				profile = VCD_PROFILE_MPEG4_ASP;

			ddl_getmpeg4_declevel(&level, n_level);
			break;
		}
	case VCD_CODEC_H264:
		{
			if (n_profile == VIDC_720P_PROFILE_H264_BASELINE)
				profile = VCD_PROFILE_H264_BASELINE;
			else if (n_profile == VIDC_720P_PROFILE_H264_MAIN)
				profile = VCD_PROFILE_H264_MAIN;
			else if (n_profile == VIDC_720P_PROFILE_H264_HIGH)
				profile = VCD_PROFILE_H264_HIGH;
			ddl_geth264_declevel(&level, n_level);
			break;
		}
	default:
	case VCD_CODEC_H263:
		{
			break;
		}
	case VCD_CODEC_VC1:
	case VCD_CODEC_VC1_RCV:
		{
			if (n_profile == VIDC_720P_PROFILE_VC1_SP)
				profile = VCD_PROFILE_VC1_SIMPLE;
			else if (n_profile == VIDC_720P_PROFILE_VC1_MAIN)
				profile = VCD_PROFILE_VC1_MAIN;
			else if (n_profile == VIDC_720P_PROFILE_VC1_ADV)
				profile = VCD_PROFILE_VC1_ADVANCE;
			ddl_get_vc1_dec_level(&level, n_level, profile);
			break;
		}
	case VCD_CODEC_MPEG2:
		{
			if (n_profile == VIDC_720P_PROFILE_MPEG2_MAIN)
				profile = VCD_PROFILE_MPEG2_MAIN;
			else if (n_profile == VIDC_720P_PROFILE_MPEG2_SP)
				profile = VCD_PROFILE_MPEG2_SIMPLE;
			ddl_get_mpeg2_dec_level(&level, n_level);
			break;
		}
	}

	p_decoder->profile.e_profile = profile;
	p_decoder->level.e_level = level;
}
コード例 #3
0
static void ddl_get_dec_profile_level(struct ddl_decoder_data *decoder,
	u32 profile_codec, u32 level_codec)
{
	enum vcd_codec_profile profile = VCD_PROFILE_UNKNOWN;
	enum vcd_codec_level level = VCD_LEVEL_UNKNOWN;

	switch (decoder->codec.codec) {
	case VCD_CODEC_MPEG4:
	case VCD_CODEC_XVID:
		if (profile_codec == VIDC_SM_PROFILE_MPEG4_SIMPLE)
			profile = VCD_PROFILE_MPEG4_SP;
		else if (profile_codec == VIDC_SM_PROFILE_MPEG4_ADV_SIMPLE)
			profile = VCD_PROFILE_MPEG4_ASP;
		else
			profile = VCD_PROFILE_UNKNOWN;
		ddl_get_mpeg4_dec_level(&level, level_codec, profile);
	break;
	case VCD_CODEC_H264:
		if (profile_codec == VIDC_SM_PROFILE_H264_BASELINE)
			profile = VCD_PROFILE_H264_BASELINE;
		else if (profile_codec == VIDC_SM_PROFILE_H264_MAIN)
			profile = VCD_PROFILE_H264_MAIN;
		else if (profile_codec == VIDC_SM_PROFILE_H264_HIGH)
			profile = VCD_PROFILE_H264_HIGH;
		else
			profile = VCD_PROFILE_UNKNOWN;
		ddl_get_h264_dec_level(&level, level_codec);
	break;
	case VCD_CODEC_H263:
		if (profile_codec == VIDC_SM_PROFILE_H263_BASELINE)
			profile = VCD_PROFILE_H263_BASELINE;
		else
			profile = VCD_PROFILE_UNKNOWN;
		ddl_get_h263_dec_level(&level, level_codec);
	break;
	case VCD_CODEC_MPEG2:
		if (profile_codec == VIDC_SM_PROFILE_MPEG2_MAIN)
			profile = VCD_PROFILE_MPEG2_MAIN;
		else if (profile_codec == VIDC_SM_PROFILE_MPEG2_SIMPLE)
			profile = VCD_PROFILE_MPEG2_SIMPLE;
		else
			profile = VCD_PROFILE_UNKNOWN;
		ddl_get_mpeg2_dec_level(&level, level_codec);
	break;
	case VCD_CODEC_VC1:
	case VCD_CODEC_VC1_RCV:
		if (profile_codec == VIDC_SM_PROFILE_VC1_SIMPLE)
			profile = VCD_PROFILE_VC1_SIMPLE;
		else if (profile_codec == VIDC_SM_PROFILE_VC1_MAIN)
			profile = VCD_PROFILE_VC1_MAIN;
		else if (profile_codec == VIDC_SM_PROFILE_VC1_ADVANCED)
			profile = VCD_PROFILE_VC1_ADVANCE;
		else
			profile = VCD_PROFILE_UNKNOWN;
		ddl_get_vc1_dec_level(&level, level_codec, profile);
	break;
	default:
		if (!profile_codec)
			profile = VCD_PROFILE_UNKNOWN;
		if (!level)
			level = VCD_LEVEL_UNKNOWN;
	break;
	}
	decoder->profile.profile = profile;
	decoder->level.level = level;
}