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); }
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); }
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); }
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); }
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); }