Exemplo n.º 1
0
void vidc_sm_get_num_slices_comp(struct ddl_buf_addr *shared_mem,
	u32 *num_slices_comp)
{
	*num_slices_comp = DDL_MEM_READ_32(shared_mem,
				VIDC_SM_ENC_NUM_OF_SLICE_COMP_ADDR);
}
Exemplo n.º 2
0
void vidc_sm_get_encoder_batch_output_size(struct ddl_buf_addr *shared_mem,
	u32 *output_buffer_size)
{
	*output_buffer_size = DDL_MEM_READ_32(shared_mem,
			VIDC_SM_BATCH_OUTPUT_SIZE_ADDR);
}
Exemplo n.º 3
0
void vidc_sm_get_metadata_display_index(struct ddl_buf_addr *shared_mem,
	u32 *pn_dixplay_index)
{
	*pn_dixplay_index = DDL_MEM_READ_32(shared_mem,
					VIDC_SM_METADATA_DISPLAY_INDEX_ADDR);
}
Exemplo n.º 4
0
void vidc_sm_get_available_luma_dpb_address(struct ddl_buf_addr
	*shared_mem, u32 *pn_free_luma_dpb_address)
{
	*pn_free_luma_dpb_address = DDL_MEM_READ_32(shared_mem,
		VIDC_SM_FREE_LUMA_DPB_ADDR);
}
void vidc_sm_get_decoder_sei_enable(struct ddl_buf_addr *shared_mem,
	u32 *sei_enable)
{
	*sei_enable = DDL_MEM_READ_32(shared_mem, VIDC_SM_SEI_ENABLE_ADDR);
}
Exemplo n.º 6
0
void vidc_sm_get_aspect_ratio_info(struct ddl_buf_addr *shared_mem,
	enum vcd_codec codec, struct vcd_aspect_ratio *aspect_ratio_info)
{
	u32 extended_par_info = 0, aspect_ratio = 0;

	aspect_ratio = DDL_MEM_READ_32(shared_mem,
				VIDC_SM_ASPECT_RATIO_INFO_ADDR);

	if (codec == VCD_CODEC_H264) {
		aspect_ratio_info->aspect_ratio =
			VIDC_GETFIELD(aspect_ratio,
			VIDC_SM_H264_ASPECT_RATIO_INFO_BMSK,
			VIDC_SM_H264_ASPECT_RATIO_INFO_SHFT);

		switch (aspect_ratio_info->aspect_ratio) {
		case 1:
			aspect_ratio_info->par_width    = 1;
			aspect_ratio_info->par_height   = 1;
			break;
		case 2:
			aspect_ratio_info->par_width    = 12;
			aspect_ratio_info->par_height   = 11;
			break;
		case 3:
			aspect_ratio_info->par_width    = 10;
			aspect_ratio_info->par_height   = 11;
			break;
		case 4:
			aspect_ratio_info->par_width    = 16;
			aspect_ratio_info->par_height   = 11;
			break;
		case 5:
			aspect_ratio_info->par_width    = 40;
			aspect_ratio_info->par_height   = 33;
			break;
		case 6:
			aspect_ratio_info->par_width    = 24;
			aspect_ratio_info->par_height   = 11;
			break;
		case 7:
			aspect_ratio_info->par_width    = 20;
			aspect_ratio_info->par_height   = 11;
			break;
		case 8:
			aspect_ratio_info->par_width    = 32;
			aspect_ratio_info->par_height   = 11;
			break;
		case 9:
			aspect_ratio_info->par_width    = 80;
			aspect_ratio_info->par_height   = 33;
			break;
		case 10:
			aspect_ratio_info->par_width    = 18;
			aspect_ratio_info->par_height   = 11;
			break;
		case 11:
			aspect_ratio_info->par_width    = 15;
			aspect_ratio_info->par_height   = 11;
			break;
		case 12:
			aspect_ratio_info->par_width    = 64;
			aspect_ratio_info->par_height   = 33;
			break;
		case 13:
			aspect_ratio_info->par_width    = 160;
			aspect_ratio_info->par_height   = 99;
			break;
		case 14:
			aspect_ratio_info->par_width    = 4;
			aspect_ratio_info->par_height   = 3;
			break;
		case 15:
			aspect_ratio_info->par_width    = 3;
			aspect_ratio_info->par_height   = 2;
			break;
		case 16:
			aspect_ratio_info->par_width    = 2;
			aspect_ratio_info->par_height   = 1;
			break;
		case 255:
			extended_par_info = DDL_MEM_READ_32(shared_mem,
				VIDC_SM_EXTENDED_PAR_ADDR);
			aspect_ratio_info->par_width =
				VIDC_GETFIELD(extended_par_info,
				VIDC_SM_EXTENDED_PAR_WIDTH_BMSK,
				VIDC_SM_EXTENDED_PAR_WIDTH_SHFT);
			aspect_ratio_info->par_height =
				VIDC_GETFIELD(extended_par_info,
				VIDC_SM_EXTENDED_PAR_HEIGHT_BMSK,
				VIDC_SM_EXTENDED_PAR_HEIGHT_SHFT);
			break;
		default:
			DDL_MSG_LOW("Incorrect Aspect Ratio.");
			aspect_ratio_info->par_width    = 1;
			aspect_ratio_info->par_height   = 1;
			break;
		}
	} else if ((codec == VCD_CODEC_MPEG4) ||
		(codec == VCD_CODEC_DIVX_4) ||
		(codec == VCD_CODEC_DIVX_5) ||
		(codec == VCD_CODEC_DIVX_6) ||
		(codec == VCD_CODEC_XVID)) {

		aspect_ratio_info->aspect_ratio =
			VIDC_GETFIELD(aspect_ratio,
			VIDC_SM_MPEG4_ASPECT_RATIO_INFO_BMSK,
			VIDC_SM_MPEG4_ASPECT_RATIO_INFO_SHFT);

		switch (aspect_ratio_info->aspect_ratio) {
		case 1:
			aspect_ratio_info->par_width    = 1;
			aspect_ratio_info->par_height   = 1;
			break;
		case 2:
			aspect_ratio_info->par_width    = 12;
			aspect_ratio_info->par_height   = 11;
			break;
		case 3:
			aspect_ratio_info->par_width    = 10;
			aspect_ratio_info->par_height   = 11;
			break;
		case 4:
			aspect_ratio_info->par_width    = 16;
			aspect_ratio_info->par_height   = 11;
			break;
		case 5:
			aspect_ratio_info->par_width    = 40;
			aspect_ratio_info->par_height   = 33;
			break;
		case 15:
			extended_par_info = DDL_MEM_READ_32(shared_mem,
				VIDC_SM_EXTENDED_PAR_ADDR);
			aspect_ratio_info->par_width =
				VIDC_GETFIELD(extended_par_info,
				VIDC_SM_EXTENDED_PAR_WIDTH_BMSK,
				VIDC_SM_EXTENDED_PAR_WIDTH_SHFT);
			aspect_ratio_info->par_height =
				VIDC_GETFIELD(extended_par_info,
				VIDC_SM_EXTENDED_PAR_HEIGHT_BMSK,
				VIDC_SM_EXTENDED_PAR_HEIGHT_SHFT);
			break;
		default:
			DDL_MSG_LOW("Incorrect Aspect Ratio.");
			aspect_ratio_info->par_width    = 1;
			aspect_ratio_info->par_height   = 1;
			break;
		}
	} else if (codec == VCD_CODEC_MPEG2) {

		aspect_ratio_info->aspect_ratio =
			VIDC_GETFIELD(aspect_ratio,
			VIDC_SM_MPEG2_ASPECT_RATIO_INFO_BMSK,
			VIDC_SM_MPEG2_ASPECT_RATIO_INFO_SHFT);

		switch (aspect_ratio_info->aspect_ratio) {
		case 1:
			aspect_ratio_info->par_width    = 1;
			aspect_ratio_info->par_height   = 1;
			break;
		case 2:
			aspect_ratio_info->par_width    = 4;
			aspect_ratio_info->par_height   = 3;
			break;
		case 3:
			aspect_ratio_info->par_width    = 16;
			aspect_ratio_info->par_height   = 9;
			break;
		case 4:
			aspect_ratio_info->par_width    = 221;
			aspect_ratio_info->par_height   = 100;
			break;
		default:
			DDL_MSG_LOW("Incorrect Aspect Ratio.");
			aspect_ratio_info->par_width    = 1;
			aspect_ratio_info->par_height   = 1;
			break;
		}
	}

}
void vidc_sm_get_extended_decode_status(struct ddl_buf_addr *shared_mem,
	u32 *pn_decode_status)
{
	*pn_decode_status = DDL_MEM_READ_32(shared_mem,
					VIDC_SM_EXTENDED_DECODE_STATUS_ADDR);
}