OSDN Git Service

msm: vidc: add h264 8x8 transform mode support
authorDeepak Kushwah <dkushwah@codeaurora.org>
Mon, 28 Mar 2016 13:01:55 +0000 (18:31 +0530)
committerDeepak Kushwah <dkushwah@codeaurora.org>
Tue, 26 Jul 2016 09:04:52 +0000 (14:34 +0530)
Add h264 8x8 transform mode support for Client to
enable or disable it when required.

CRs-Fixed: 1045849
Change-Id: I365a3acd2b3375f093da39e68a98a2a4d35c2287
Signed-off-by: Deepak Kushwah <dkushwah@codeaurora.org>
drivers/media/platform/msm/vidc/hfi_packetization.c
drivers/media/platform/msm/vidc/msm_venc.c
drivers/media/platform/msm/vidc/vidc_hfi_api.h
drivers/media/platform/msm/vidc/vidc_hfi_helper.h
include/uapi/linux/v4l2-controls.h

index d586841..4a26ab9 100644 (file)
@@ -2116,6 +2116,14 @@ int create_pkt_cmd_session_set_property(
                pkt->size += sizeof(u32) + sizeof(struct hfi_enable);
                break;
        }
+       case HAL_PARAM_VENC_H264_TRANSFORM_8x8:
+       {
+               create_pkt_enable(pkt->rg_property_data,
+                       HFI_PROPERTY_PARAM_VENC_H264_8X8_TRANSFORM,
+                       ((struct hal_enable *)pdata)->enable);
+               pkt->size += sizeof(u32) + sizeof(struct hfi_enable);
+               break;
+       }
        /* FOLLOWING PROPERTIES ARE NOT IMPLEMENTED IN CORE YET */
        case HAL_CONFIG_BUFFER_REQUIREMENTS:
        case HAL_CONFIG_PRIORITY:
index 0e668b9..ea8d94b 100644 (file)
@@ -1232,6 +1232,15 @@ static struct msm_vidc_ctrl msm_venc_ctrls[] = {
                .default_value = 0,
                .step = 1,
        },
+       {
+               .id = V4L2_CID_MPEG_VIDC_VIDEO_H264_TRANSFORM_8x8,
+               .name = "Transform 8x8",
+               .type = V4L2_CTRL_TYPE_BOOLEAN,
+               .minimum = V4L2_MPEG_VIDC_VIDEO_H264_TRANSFORM_8x8_DISABLE,
+               .maximum = V4L2_MPEG_VIDC_VIDEO_H264_TRANSFORM_8x8_ENABLE,
+               .default_value = V4L2_MPEG_VIDC_VIDEO_H264_TRANSFORM_8x8_ENABLE,
+               .step = 1,
+       },
 };
 
 #define NUM_CTRLS ARRAY_SIZE(msm_venc_ctrls)
@@ -3100,6 +3109,24 @@ static int try_set_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
                pdata = &enable;
                break;
        }
+       case V4L2_CID_MPEG_VIDC_VIDEO_H264_TRANSFORM_8x8:
+               property_id = HAL_PARAM_VENC_H264_TRANSFORM_8x8;
+               switch (ctrl->val) {
+               case V4L2_MPEG_VIDC_VIDEO_H264_TRANSFORM_8x8_ENABLE:
+                       enable.enable = 1;
+                       break;
+               case V4L2_MPEG_VIDC_VIDEO_H264_TRANSFORM_8x8_DISABLE:
+                       enable.enable = 0;
+                       break;
+               default:
+                       dprintk(VIDC_ERR,
+                               "Invalid H264 8x8 transform control value %d\n",
+                               ctrl->val);
+                       rc = -ENOTSUPP;
+                       break;
+               }
+               pdata = &enable;
+               break;
        default:
                dprintk(VIDC_ERR, "Unsupported index: %x\n", ctrl->id);
                rc = -ENOTSUPP;
index 624fd53..b223186 100644 (file)
@@ -237,6 +237,7 @@ enum hal_property {
        HAL_PARAM_VENC_CONSTRAINED_INTRA_PRED,
        HAL_CONFIG_VENC_BLUR_RESOLUTION,
        HAL_PARAM_VENC_SESSION_QP_RANGE_PACKED,
+       HAL_PARAM_VENC_H264_TRANSFORM_8x8,
 };
 
 enum hal_domain {
index a2d9592..ff043e9 100644 (file)
@@ -364,6 +364,8 @@ struct hfi_buffer_info {
        (HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x022)
 #define HFI_PROPERTY_PARAM_VENC_PRESERVE_TEXT_QUALITY \
        (HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x023)
+#define HFI_PROPERTY_PARAM_VENC_H264_8X8_TRANSFORM \
+       (HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x025)
 #define HFI_PROPERTY_PARAM_VENC_HIER_P_MAX_NUM_ENH_LAYER       \
        (HFI_PROPERTY_PARAM_VENC_COMMON_START + 0x026)
 #define HFI_PROPERTY_PARAM_VENC_DISABLE_RC_TIMESTAMP \
index 27fe13a..fe19c75 100644 (file)
@@ -1166,6 +1166,13 @@ enum v4l2_mpeg_vidc_video_lowlatency_mode {
 #define V4L2_CID_MPEG_VIDEO_MAX_QP_PACKED \
                (V4L2_CID_MPEG_MSM_VIDC_BASE + 92)
 
+#define V4L2_CID_MPEG_VIDC_VIDEO_H264_TRANSFORM_8x8 \
+               (V4L2_CID_MPEG_MSM_VIDC_BASE + 93)
+enum v4l2_mpeg_vidc_video_h264_transform_8x8 {
+       V4L2_MPEG_VIDC_VIDEO_H264_TRANSFORM_8x8_DISABLE = 0,
+       V4L2_MPEG_VIDC_VIDEO_H264_TRANSFORM_8x8_ENABLE = 1,
+};
+
 /*  Camera class control IDs */
 
 #define V4L2_CID_CAMERA_CLASS_BASE     (V4L2_CTRL_CLASS_CAMERA | 0x900)