⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfcsetconfig.cpp

📁 SAMSUNG S3C6410 CPU BSP for winmobile6
💻 CPP
字号:
//MfcSetConfig.cpp


#include "MfcDrvParams.h"
#include "MFC_Instance.h"
#include "LogMsg.h"




int MFC_GetConfigParams(
                         MFCInstCtx  *pMfcInst,
                         MFC_ARGS     *args			// Input arguments for IOCTL_MFC_SET_CONFIG
                        )
{
	int             ret;


	switch (args->get_config.in_config_param) {

	case MFC_GET_CONFIG_DEC_FRAME_NEED_COUNT:
		args->get_config.out_config_value[0] = pMfcInst->frambufCnt;
		ret = MFCINST_RET_OK;

		break;

	default:
		ret = -1;
	}


	// Output arguments for IOCTL_MFC_SET_CONFIG
	args->get_config.ret_code = ret;

	return MFCINST_RET_OK;
}

int MFC_SetConfigParams(
                         MFCInstCtx  *pMfcInst,
                         MFC_ARGS     *args			// Input arguments for IOCTL_MFC_SET_CONFIG
                        )
{
	int             ret;
	unsigned int    param_change_enable, param_change_val;


	switch (args->set_config.in_config_param) {

	case MFC_SET_CONFIG_DEC_ROTATE:
#if (MFC_ROTATE_ENABLE == 1)
		args->set_config.out_config_value_old[0]
				= MFCInst_Set_PostRotate(pMfcInst, args->set_config.in_config_value[0]);
		ret = MFCINST_RET_OK;
#else
		LOG_MSG(LOG_ERROR, "MFC_SetConfigParams", "IOCTL_MFC_SET_CONFIG with MFC_SET_CONFIG_DEC_ROTATE is not supported.\r\n");
		LOG_MSG(LOG_ERROR, "MFC_SetConfigParams", "Please check if MFC_ROTATE_ENABLE is defined as 1 in MfcConfig.h file.\r\n");
		ret = MFCINST_RET_OK;
#endif
		break;

	case MFC_SET_CONFIG_ENC_H263_PARAM:
		args->set_config.out_config_value_old[0] = pMfcInst->h263_annex;
		pMfcInst->h263_annex = args->set_config.in_config_value[0];
		ret = MFCINST_RET_OK;
		break;


	case MFC_SET_CONFIG_ENC_SLICE_MODE:

		if (pMfcInst->enc_num_slices) {
			args->set_config.out_config_value_old[0] = 1;
			args->set_config.out_config_value_old[1] = pMfcInst->enc_num_slices;
		}
		else {
			args->set_config.out_config_value_old[0] = 0;
			args->set_config.out_config_value_old[1] = 0;
		}

		if (args->set_config.in_config_value[0])
			pMfcInst->enc_num_slices = args->set_config.in_config_value[1];
		else
			pMfcInst->enc_num_slices = 0;

		ret = MFCINST_RET_OK;
		break;

	case MFC_SET_CONFIG_ENC_PARAM_CHANGE:

		switch (args->set_config.in_config_value[0]) {
		case ENC_PARAM_GOP_NUM:
			param_change_enable = (1 << 0);
			break;

		case ENC_PARAM_INTRA_QP:
			param_change_enable = (1 << 1);
			break;

		case ENC_PARAM_BITRATE:
			param_change_enable = (1 << 2);
			break;

		case ENC_PARAM_F_RATE:
			param_change_enable = (1 << 3);
			break;

		case ENC_PARAM_INTRA_REF:
			param_change_enable = (1 << 4);
			break;

		case ENC_PARAM_SLICE_MODE:
			param_change_enable = (1 << 5);
			break;

		default:
			break;
		}

		param_change_val  = args->set_config.in_config_value[1];
		ret = MFCInst_EncParamChange(pMfcInst, param_change_enable, param_change_val);

		break;

	case MFC_SET_CONFIG_ENC_CUR_PIC_OPT:

		switch (args->set_config.in_config_value[0]) {
		case ENC_PIC_OPT_IDR:
			pMfcInst->enc_pic_option ^= (args->set_config.in_config_value[1] << 1);
			break;

		case ENC_PIC_OPT_SKIP:
			pMfcInst->enc_pic_option ^= (args->set_config.in_config_value[1] << 0);
			break;

		case ENC_PIC_OPT_RECOVERY:
			pMfcInst->enc_pic_option ^= (args->set_config.in_config_value[1] << 24);
			break;

		default:
			break;
		}

		ret = MFCINST_RET_OK;
		break;

	default:
		ret = -1;
	}


	// Output arguments for IOCTL_MFC_SET_CONFIG
	args->set_config.ret_code = ret;

	return MFCINST_RET_OK;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -