Loading drivers/media/platform/msm/vidc/msm_vdec.c +42 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,26 @@ static const char *const vp8_profile_level[] = { "3.0", }; static const char *const vp9_profile[] = { "Unused", "0", "2_10", }; static const char *const vp9_level[] = { "Unused", "1.0", "1.1", "2.0", "2.1", "3.0", "3.1", "4.0", "4.1", "5.0", "5.1", }; static const char *const mpeg2_profile[] = { "Simple", "Main", Loading Loading @@ -230,6 +250,28 @@ static struct msm_vidc_ctrl msm_vdec_ctrls[] = { .qmenu = vp8_profile_level, .flags = V4L2_CTRL_FLAG_VOLATILE | V4L2_CTRL_FLAG_READ_ONLY, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_VP9_PROFILE, .name = "VP9 Profile", .type = V4L2_CTRL_TYPE_MENU, .minimum = V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_UNUSED, .maximum = V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P2_10, .default_value = V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P0, .menu_skip_mask = 0, .qmenu = vp9_profile, .flags = V4L2_CTRL_FLAG_VOLATILE | V4L2_CTRL_FLAG_READ_ONLY, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_VP9_LEVEL, .name = "VP9 Level", .type = V4L2_CTRL_TYPE_MENU, .minimum = V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_UNUSED, .maximum = V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_51, .default_value = V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_51, .menu_skip_mask = 0, .qmenu = vp9_level, .flags = V4L2_CTRL_FLAG_VOLATILE | V4L2_CTRL_FLAG_READ_ONLY, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_PROFILE, .name = "MPEG2 Profile", Loading drivers/media/platform/msm/vidc/msm_vidc.c +2 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,7 @@ int msm_vidc_query_ctrl(void *instance, struct v4l2_queryctrl *ctrl) case V4L2_CID_MPEG_VIDEO_H264_PROFILE: case V4L2_CID_MPEG_VIDC_VIDEO_HEVC_PROFILE: case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_PROFILE: case V4L2_CID_MPEG_VIDC_VIDEO_VP9_PROFILE: { prof_level_supported = &inst->capability.profile_level; for (i = 0; i < prof_level_supported->profile_count; i++) { Loading @@ -200,6 +201,7 @@ int msm_vidc_query_ctrl(void *instance, struct v4l2_queryctrl *ctrl) case V4L2_CID_MPEG_VIDC_VIDEO_VP8_PROFILE_LEVEL: case V4L2_CID_MPEG_VIDC_VIDEO_HEVC_TIER_LEVEL: case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_LEVEL: case V4L2_CID_MPEG_VIDC_VIDEO_VP9_LEVEL: { prof_level_supported = &inst->capability.profile_level; for (i = 0; i < prof_level_supported->profile_count; i++) { Loading drivers/media/platform/msm/vidc/msm_vidc_common.c +38 −0 Original line number Diff line number Diff line Loading @@ -297,6 +297,44 @@ int msm_comm_hal_to_v4l2(int id, int value) default: goto unknown_value; } case V4L2_CID_MPEG_VIDC_VIDEO_VP9_PROFILE: switch (value) { case HAL_VP9_PROFILE_P0: return V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P0; case HAL_VP9_PROFILE_P2_10: return V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P2_10; case HAL_VP9_PROFILE_UNUSED: return V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_UNUSED; default: goto unknown_value; } case V4L2_CID_MPEG_VIDC_VIDEO_VP9_LEVEL: switch (value) { case HAL_VP9_LEVEL_1: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_1; case HAL_VP9_LEVEL_11: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_11; case HAL_VP9_LEVEL_2: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_2; case HAL_VP9_LEVEL_21: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_21; case HAL_VP9_LEVEL_3: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_3; case HAL_VP9_LEVEL_31: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_31; case HAL_VP9_LEVEL_4: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_4; case HAL_VP9_LEVEL_41: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_41; case HAL_VP9_LEVEL_5: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_5; case HAL_VP9_LEVEL_51: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_51; case HAL_VP9_LEVEL_UNUSED: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_UNUSED; default: goto unknown_value; } case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_PROFILE: switch (value) { case HAL_MPEG2_PROFILE_SIMPLE: Loading drivers/media/platform/msm/vidc/vidc_hfi_api.h +20 −0 Original line number Diff line number Diff line Loading @@ -390,6 +390,26 @@ enum hal_tme_level { HAL_TME_LEVEL_INTEGER = 0x00000001, }; enum hal_vp9_profile { HAL_VP9_PROFILE_UNUSED = 0x00000000, HAL_VP9_PROFILE_P0 = 0x00000001, HAL_VP9_PROFILE_P2_10 = 0x00000002, }; enum hal_vp9_level { HAL_VP9_LEVEL_UNUSED = 0x00000000, HAL_VP9_LEVEL_1 = 0x00000001, HAL_VP9_LEVEL_11 = 0x00000002, HAL_VP9_LEVEL_2 = 0x00000004, HAL_VP9_LEVEL_21 = 0x00000008, HAL_VP9_LEVEL_3 = 0x00000010, HAL_VP9_LEVEL_31 = 0x00000020, HAL_VP9_LEVEL_4 = 0x00000040, HAL_VP9_LEVEL_41 = 0x00000080, HAL_VP9_LEVEL_5 = 0x00000100, HAL_VP9_LEVEL_51 = 0x00000200, }; struct hal_frame_rate { enum hal_buffer buffer_type; u32 frame_rate; Loading include/uapi/linux/v4l2-controls.h +24 −0 Original line number Diff line number Diff line Loading @@ -1046,6 +1046,30 @@ enum v4l2_cid_mpeg_vidc_video_full_range { #define V4L2_CID_MPEG_VIDC_VIDEO_LAYER_ID \ (V4L2_CID_MPEG_MSM_VIDC_BASE + 65) #define V4L2_CID_MPEG_VIDC_VIDEO_VP9_PROFILE \ (V4L2_CID_MPEG_MSM_VIDC_BASE + 66) enum v4l2_mpeg_vidc_video_vp9_profile { V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_UNUSED = 0, V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P0 = 1, V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P2_10 = 2, }; #define V4L2_CID_MPEG_VIDC_VIDEO_VP9_LEVEL \ (V4L2_CID_MPEG_MSM_VIDC_BASE + 67) enum v4l2_mpeg_vidc_video_vp9_level { V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_UNUSED = 0, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_1 = 1, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_11 = 2, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_2 = 3, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_21 = 4, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_3 = 5, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_31 = 6, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_4 = 7, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_41 = 8, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_5 = 9, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_51 = 10, }; #define V4L2_CID_MPEG_VIDC_VIDEO_I_FRAME_QP \ (V4L2_CID_MPEG_MSM_VIDC_BASE + 99) #define V4L2_CID_MPEG_VIDC_VIDEO_P_FRAME_QP \ Loading Loading
drivers/media/platform/msm/vidc/msm_vdec.c +42 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,26 @@ static const char *const vp8_profile_level[] = { "3.0", }; static const char *const vp9_profile[] = { "Unused", "0", "2_10", }; static const char *const vp9_level[] = { "Unused", "1.0", "1.1", "2.0", "2.1", "3.0", "3.1", "4.0", "4.1", "5.0", "5.1", }; static const char *const mpeg2_profile[] = { "Simple", "Main", Loading Loading @@ -230,6 +250,28 @@ static struct msm_vidc_ctrl msm_vdec_ctrls[] = { .qmenu = vp8_profile_level, .flags = V4L2_CTRL_FLAG_VOLATILE | V4L2_CTRL_FLAG_READ_ONLY, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_VP9_PROFILE, .name = "VP9 Profile", .type = V4L2_CTRL_TYPE_MENU, .minimum = V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_UNUSED, .maximum = V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P2_10, .default_value = V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P0, .menu_skip_mask = 0, .qmenu = vp9_profile, .flags = V4L2_CTRL_FLAG_VOLATILE | V4L2_CTRL_FLAG_READ_ONLY, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_VP9_LEVEL, .name = "VP9 Level", .type = V4L2_CTRL_TYPE_MENU, .minimum = V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_UNUSED, .maximum = V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_51, .default_value = V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_51, .menu_skip_mask = 0, .qmenu = vp9_level, .flags = V4L2_CTRL_FLAG_VOLATILE | V4L2_CTRL_FLAG_READ_ONLY, }, { .id = V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_PROFILE, .name = "MPEG2 Profile", Loading
drivers/media/platform/msm/vidc/msm_vidc.c +2 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,7 @@ int msm_vidc_query_ctrl(void *instance, struct v4l2_queryctrl *ctrl) case V4L2_CID_MPEG_VIDEO_H264_PROFILE: case V4L2_CID_MPEG_VIDC_VIDEO_HEVC_PROFILE: case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_PROFILE: case V4L2_CID_MPEG_VIDC_VIDEO_VP9_PROFILE: { prof_level_supported = &inst->capability.profile_level; for (i = 0; i < prof_level_supported->profile_count; i++) { Loading @@ -200,6 +201,7 @@ int msm_vidc_query_ctrl(void *instance, struct v4l2_queryctrl *ctrl) case V4L2_CID_MPEG_VIDC_VIDEO_VP8_PROFILE_LEVEL: case V4L2_CID_MPEG_VIDC_VIDEO_HEVC_TIER_LEVEL: case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_LEVEL: case V4L2_CID_MPEG_VIDC_VIDEO_VP9_LEVEL: { prof_level_supported = &inst->capability.profile_level; for (i = 0; i < prof_level_supported->profile_count; i++) { Loading
drivers/media/platform/msm/vidc/msm_vidc_common.c +38 −0 Original line number Diff line number Diff line Loading @@ -297,6 +297,44 @@ int msm_comm_hal_to_v4l2(int id, int value) default: goto unknown_value; } case V4L2_CID_MPEG_VIDC_VIDEO_VP9_PROFILE: switch (value) { case HAL_VP9_PROFILE_P0: return V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P0; case HAL_VP9_PROFILE_P2_10: return V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P2_10; case HAL_VP9_PROFILE_UNUSED: return V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_UNUSED; default: goto unknown_value; } case V4L2_CID_MPEG_VIDC_VIDEO_VP9_LEVEL: switch (value) { case HAL_VP9_LEVEL_1: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_1; case HAL_VP9_LEVEL_11: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_11; case HAL_VP9_LEVEL_2: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_2; case HAL_VP9_LEVEL_21: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_21; case HAL_VP9_LEVEL_3: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_3; case HAL_VP9_LEVEL_31: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_31; case HAL_VP9_LEVEL_4: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_4; case HAL_VP9_LEVEL_41: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_41; case HAL_VP9_LEVEL_5: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_5; case HAL_VP9_LEVEL_51: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_51; case HAL_VP9_LEVEL_UNUSED: return V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_UNUSED; default: goto unknown_value; } case V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_PROFILE: switch (value) { case HAL_MPEG2_PROFILE_SIMPLE: Loading
drivers/media/platform/msm/vidc/vidc_hfi_api.h +20 −0 Original line number Diff line number Diff line Loading @@ -390,6 +390,26 @@ enum hal_tme_level { HAL_TME_LEVEL_INTEGER = 0x00000001, }; enum hal_vp9_profile { HAL_VP9_PROFILE_UNUSED = 0x00000000, HAL_VP9_PROFILE_P0 = 0x00000001, HAL_VP9_PROFILE_P2_10 = 0x00000002, }; enum hal_vp9_level { HAL_VP9_LEVEL_UNUSED = 0x00000000, HAL_VP9_LEVEL_1 = 0x00000001, HAL_VP9_LEVEL_11 = 0x00000002, HAL_VP9_LEVEL_2 = 0x00000004, HAL_VP9_LEVEL_21 = 0x00000008, HAL_VP9_LEVEL_3 = 0x00000010, HAL_VP9_LEVEL_31 = 0x00000020, HAL_VP9_LEVEL_4 = 0x00000040, HAL_VP9_LEVEL_41 = 0x00000080, HAL_VP9_LEVEL_5 = 0x00000100, HAL_VP9_LEVEL_51 = 0x00000200, }; struct hal_frame_rate { enum hal_buffer buffer_type; u32 frame_rate; Loading
include/uapi/linux/v4l2-controls.h +24 −0 Original line number Diff line number Diff line Loading @@ -1046,6 +1046,30 @@ enum v4l2_cid_mpeg_vidc_video_full_range { #define V4L2_CID_MPEG_VIDC_VIDEO_LAYER_ID \ (V4L2_CID_MPEG_MSM_VIDC_BASE + 65) #define V4L2_CID_MPEG_VIDC_VIDEO_VP9_PROFILE \ (V4L2_CID_MPEG_MSM_VIDC_BASE + 66) enum v4l2_mpeg_vidc_video_vp9_profile { V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_UNUSED = 0, V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P0 = 1, V4L2_MPEG_VIDC_VIDEO_VP9_PROFILE_P2_10 = 2, }; #define V4L2_CID_MPEG_VIDC_VIDEO_VP9_LEVEL \ (V4L2_CID_MPEG_MSM_VIDC_BASE + 67) enum v4l2_mpeg_vidc_video_vp9_level { V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_UNUSED = 0, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_1 = 1, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_11 = 2, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_2 = 3, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_21 = 4, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_3 = 5, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_31 = 6, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_4 = 7, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_41 = 8, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_5 = 9, V4L2_MPEG_VIDC_VIDEO_VP9_LEVEL_51 = 10, }; #define V4L2_CID_MPEG_VIDC_VIDEO_I_FRAME_QP \ (V4L2_CID_MPEG_MSM_VIDC_BASE + 99) #define V4L2_CID_MPEG_VIDC_VIDEO_P_FRAME_QP \ Loading