Commit 2a75364d authored by Keiichi Watanabe's avatar Keiichi Watanabe Committed by Mauro Carvalho Chehab

media: v4l2-ctrl: Add control for VP9 profile

Add a new control V4L2_CID_MPEG_VIDEO_VP9_PROFILE for VP9 profiles. This control
allows selecting the desired profile for VP9 encoder and querying for supported
profiles by VP9 encoder/decoder.

Though this control is similar to V4L2_CID_MPEG_VIDEO_VP8_PROFILE, we need to
separate this control from it because supported profiles usually differ between
VP8 and VP9.
Signed-off-by: default avatarKeiichi Watanabe <keiichiw@chromium.org>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 5520b946
...@@ -1978,6 +1978,29 @@ enum v4l2_mpeg_video_vp8_profile - ...@@ -1978,6 +1978,29 @@ enum v4l2_mpeg_video_vp8_profile -
* - ``V4L2_MPEG_VIDEO_VP8_PROFILE_3`` * - ``V4L2_MPEG_VIDEO_VP8_PROFILE_3``
- Profile 3 - Profile 3
.. _v4l2-mpeg-video-vp9-profile:
``V4L2_CID_MPEG_VIDEO_VP9_PROFILE``
(enum)
enum v4l2_mpeg_video_vp9_profile -
This control allows selecting the profile for VP9 encoder.
This is also used to enumerate supported profiles by VP9 encoder or decoder.
Possible values are:
.. flat-table::
:header-rows: 0
:stub-columns: 0
* - ``V4L2_MPEG_VIDEO_VP9_PROFILE_0``
- Profile 0
* - ``V4L2_MPEG_VIDEO_VP9_PROFILE_1``
- Profile 1
* - ``V4L2_MPEG_VIDEO_VP9_PROFILE_2``
- Profile 2
* - ``V4L2_MPEG_VIDEO_VP9_PROFILE_3``
- Profile 3
High Efficiency Video Coding (HEVC/H.265) Control Reference High Efficiency Video Coding (HEVC/H.265) Control Reference
----------------------------------------------------------- -----------------------------------------------------------
......
...@@ -438,6 +438,13 @@ const char * const *v4l2_ctrl_get_menu(u32 id) ...@@ -438,6 +438,13 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
"3", "3",
NULL, NULL,
}; };
static const char * const vp9_profile[] = {
"0",
"1",
"2",
"3",
NULL,
};
static const char * const flash_led_mode[] = { static const char * const flash_led_mode[] = {
"Off", "Off",
...@@ -623,6 +630,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id) ...@@ -623,6 +630,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
return vpx_golden_frame_sel; return vpx_golden_frame_sel;
case V4L2_CID_MPEG_VIDEO_VP8_PROFILE: case V4L2_CID_MPEG_VIDEO_VP8_PROFILE:
return vp8_profile; return vp8_profile;
case V4L2_CID_MPEG_VIDEO_VP9_PROFILE:
return vp9_profile;
case V4L2_CID_JPEG_CHROMA_SUBSAMPLING: case V4L2_CID_JPEG_CHROMA_SUBSAMPLING:
return jpeg_chroma_subsampling; return jpeg_chroma_subsampling;
case V4L2_CID_DV_TX_MODE: case V4L2_CID_DV_TX_MODE:
...@@ -849,6 +858,7 @@ const char *v4l2_ctrl_get_name(u32 id) ...@@ -849,6 +858,7 @@ const char *v4l2_ctrl_get_name(u32 id)
case V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP: return "VPX I-Frame QP Value"; case V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP: return "VPX I-Frame QP Value";
case V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP: return "VPX P-Frame QP Value"; case V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP: return "VPX P-Frame QP Value";
case V4L2_CID_MPEG_VIDEO_VP8_PROFILE: return "VP8 Profile"; case V4L2_CID_MPEG_VIDEO_VP8_PROFILE: return "VP8 Profile";
case V4L2_CID_MPEG_VIDEO_VP9_PROFILE: return "VP9 Profile";
/* HEVC controls */ /* HEVC controls */
case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP: return "HEVC I-Frame QP Value"; case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP: return "HEVC I-Frame QP Value";
...@@ -1190,6 +1200,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, ...@@ -1190,6 +1200,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
case V4L2_CID_TUNE_DEEMPHASIS: case V4L2_CID_TUNE_DEEMPHASIS:
case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL: case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL:
case V4L2_CID_MPEG_VIDEO_VP8_PROFILE: case V4L2_CID_MPEG_VIDEO_VP8_PROFILE:
case V4L2_CID_MPEG_VIDEO_VP9_PROFILE:
case V4L2_CID_DETECT_MD_MODE: case V4L2_CID_DETECT_MD_MODE:
case V4L2_CID_MPEG_VIDEO_HEVC_PROFILE: case V4L2_CID_MPEG_VIDEO_HEVC_PROFILE:
case V4L2_CID_MPEG_VIDEO_HEVC_LEVEL: case V4L2_CID_MPEG_VIDEO_HEVC_LEVEL:
......
...@@ -597,6 +597,13 @@ enum v4l2_mpeg_video_vp8_profile { ...@@ -597,6 +597,13 @@ enum v4l2_mpeg_video_vp8_profile {
}; };
/* Deprecated alias for compatibility reasons. */ /* Deprecated alias for compatibility reasons. */
#define V4L2_CID_MPEG_VIDEO_VPX_PROFILE V4L2_CID_MPEG_VIDEO_VP8_PROFILE #define V4L2_CID_MPEG_VIDEO_VPX_PROFILE V4L2_CID_MPEG_VIDEO_VP8_PROFILE
#define V4L2_CID_MPEG_VIDEO_VP9_PROFILE (V4L2_CID_MPEG_BASE+512)
enum v4l2_mpeg_video_vp9_profile {
V4L2_MPEG_VIDEO_VP9_PROFILE_0 = 0,
V4L2_MPEG_VIDEO_VP9_PROFILE_1 = 1,
V4L2_MPEG_VIDEO_VP9_PROFILE_2 = 2,
V4L2_MPEG_VIDEO_VP9_PROFILE_3 = 3,
};
/* CIDs for HEVC encoding. */ /* CIDs for HEVC encoding. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment