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: Keiichi Watanabe <keiichiw@chromium.org> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:

committed by
Mauro Carvalho Chehab

parent
5520b9467a
commit
2a75364d09
@@ -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)
|
|||||||
"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)
|
|||||||
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)
|
|||||||
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,
|
|||||||
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 {
|
|||||||
};
|
};
|
||||||
/* 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. */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user