|
@@ -59,6 +59,10 @@ static const struct venus_format venc_formats[] = {
|
|
|
.pixfmt = V4L2_PIX_FMT_VP8,
|
|
|
.num_planes = 1,
|
|
|
.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
|
|
|
+ }, {
|
|
|
+ .pixfmt = V4L2_PIX_FMT_HEVC,
|
|
|
+ .num_planes = 1,
|
|
|
+ .type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
|
|
|
},
|
|
|
};
|
|
|
|
|
@@ -220,6 +224,46 @@ static int venc_v4l2_to_hfi(int id, int value)
|
|
|
case V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY:
|
|
|
return HFI_H264_DB_MODE_SKIP_SLICE_BOUNDARY;
|
|
|
}
|
|
|
+ case V4L2_CID_MPEG_VIDEO_HEVC_PROFILE:
|
|
|
+ switch (value) {
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN:
|
|
|
+ default:
|
|
|
+ return HFI_HEVC_PROFILE_MAIN;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE:
|
|
|
+ return HFI_HEVC_PROFILE_MAIN_STILL_PIC;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10:
|
|
|
+ return HFI_HEVC_PROFILE_MAIN10;
|
|
|
+ }
|
|
|
+ case V4L2_CID_MPEG_VIDEO_HEVC_LEVEL:
|
|
|
+ switch (value) {
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_LEVEL_1:
|
|
|
+ default:
|
|
|
+ return HFI_HEVC_LEVEL_1;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_LEVEL_2:
|
|
|
+ return HFI_HEVC_LEVEL_2;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1:
|
|
|
+ return HFI_HEVC_LEVEL_21;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_LEVEL_3:
|
|
|
+ return HFI_HEVC_LEVEL_3;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1:
|
|
|
+ return HFI_HEVC_LEVEL_31;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_LEVEL_4:
|
|
|
+ return HFI_HEVC_LEVEL_4;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1:
|
|
|
+ return HFI_HEVC_LEVEL_41;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_LEVEL_5:
|
|
|
+ return HFI_HEVC_LEVEL_5;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1:
|
|
|
+ return HFI_HEVC_LEVEL_51;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2:
|
|
|
+ return HFI_HEVC_LEVEL_52;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_LEVEL_6:
|
|
|
+ return HFI_HEVC_LEVEL_6;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1:
|
|
|
+ return HFI_HEVC_LEVEL_61;
|
|
|
+ case V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2:
|
|
|
+ return HFI_HEVC_LEVEL_62;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
@@ -742,6 +786,11 @@ static int venc_set_properties(struct venus_inst *inst)
|
|
|
} else if (inst->fmt_cap->pixfmt == V4L2_PIX_FMT_H263) {
|
|
|
profile = 0;
|
|
|
level = 0;
|
|
|
+ } else if (inst->fmt_cap->pixfmt == V4L2_PIX_FMT_HEVC) {
|
|
|
+ profile = venc_v4l2_to_hfi(V4L2_CID_MPEG_VIDEO_HEVC_PROFILE,
|
|
|
+ ctr->profile.hevc);
|
|
|
+ level = venc_v4l2_to_hfi(V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
|
|
|
+ ctr->level.hevc);
|
|
|
}
|
|
|
|
|
|
ptype = HFI_PROPERTY_PARAM_PROFILE_LEVEL_CURRENT;
|