media: v4l2-ctrl: Add VP9 codec levels
Add menu control for VP9 codec levels. A total of 14 levels are defined for Profile 0 (8bit) and Profile 2 (10bit). Each level is a set of constrained bitstreams coded with targeted resolutions, frame rates, and bitrates. The definitions have been taken from webm project [1]. [1] https://www.webmproject.org/vp9/levels/ Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Reviewed-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
0df720e59d
commit
5823833c9a
|
@ -3383,6 +3383,49 @@ enum v4l2_mpeg_video_vp9_profile -
|
|||
* - ``V4L2_MPEG_VIDEO_VP9_PROFILE_3``
|
||||
- Profile 3
|
||||
|
||||
.. _v4l2-mpeg-video-vp9-level:
|
||||
|
||||
``V4L2_CID_MPEG_VIDEO_VP9_LEVEL (enum)``
|
||||
|
||||
enum v4l2_mpeg_video_vp9_level -
|
||||
This control allows selecting the level for VP9 encoder.
|
||||
This is also used to enumerate supported levels by VP9 encoder or decoder.
|
||||
More information can be found at
|
||||
`webmproject <https://www.webmproject.org/vp9/levels/>`__. Possible values are:
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_1_0``
|
||||
- Level 1
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_1_1``
|
||||
- Level 1.1
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_2_0``
|
||||
- Level 2
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_2_1``
|
||||
- Level 2.1
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_3_0``
|
||||
- Level 3
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_3_1``
|
||||
- Level 3.1
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_4_0``
|
||||
- Level 4
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_4_1``
|
||||
- Level 4.1
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_5_0``
|
||||
- Level 5
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_5_1``
|
||||
- Level 5.1
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_5_2``
|
||||
- Level 5.2
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_6_0``
|
||||
- Level 6
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_6_1``
|
||||
- Level 6.1
|
||||
* - ``V4L2_MPEG_VIDEO_VP9_LEVEL_6_2``
|
||||
- Level 6.2
|
||||
|
||||
|
||||
High Efficiency Video Coding (HEVC/H.265) Control Reference
|
||||
===========================================================
|
||||
|
|
|
@ -475,6 +475,23 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
|
|||
"3",
|
||||
NULL,
|
||||
};
|
||||
static const char * const vp9_level[] = {
|
||||
"1",
|
||||
"1.1",
|
||||
"2",
|
||||
"2.1",
|
||||
"3",
|
||||
"3.1",
|
||||
"4",
|
||||
"4.1",
|
||||
"5",
|
||||
"5.1",
|
||||
"5.2",
|
||||
"6",
|
||||
"6.1",
|
||||
"6.2",
|
||||
NULL,
|
||||
};
|
||||
|
||||
static const char * const flash_led_mode[] = {
|
||||
"Off",
|
||||
|
@ -694,6 +711,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
|
|||
return vp8_profile;
|
||||
case V4L2_CID_MPEG_VIDEO_VP9_PROFILE:
|
||||
return vp9_profile;
|
||||
case V4L2_CID_MPEG_VIDEO_VP9_LEVEL:
|
||||
return vp9_level;
|
||||
case V4L2_CID_JPEG_CHROMA_SUBSAMPLING:
|
||||
return jpeg_chroma_subsampling;
|
||||
case V4L2_CID_DV_TX_MODE:
|
||||
|
@ -950,6 +969,7 @@ const char *v4l2_ctrl_get_name(u32 id)
|
|||
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_VP9_PROFILE: return "VP9 Profile";
|
||||
case V4L2_CID_MPEG_VIDEO_VP9_LEVEL: return "VP9 Level";
|
||||
case V4L2_CID_MPEG_VIDEO_VP8_FRAME_HEADER: return "VP8 Frame Header";
|
||||
|
||||
/* HEVC controls */
|
||||
|
@ -1307,6 +1327,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
|
|||
case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL:
|
||||
case V4L2_CID_MPEG_VIDEO_VP8_PROFILE:
|
||||
case V4L2_CID_MPEG_VIDEO_VP9_PROFILE:
|
||||
case V4L2_CID_MPEG_VIDEO_VP9_LEVEL:
|
||||
case V4L2_CID_DETECT_MD_MODE:
|
||||
case V4L2_CID_MPEG_VIDEO_HEVC_PROFILE:
|
||||
case V4L2_CID_MPEG_VIDEO_HEVC_LEVEL:
|
||||
|
|
|
@ -651,6 +651,23 @@ enum v4l2_mpeg_video_vp9_profile {
|
|||
V4L2_MPEG_VIDEO_VP9_PROFILE_2 = 2,
|
||||
V4L2_MPEG_VIDEO_VP9_PROFILE_3 = 3,
|
||||
};
|
||||
#define V4L2_CID_MPEG_VIDEO_VP9_LEVEL (V4L2_CID_MPEG_BASE+513)
|
||||
enum v4l2_mpeg_video_vp9_level {
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_1_0 = 0,
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_1_1 = 1,
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_2_0 = 2,
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_2_1 = 3,
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_3_0 = 4,
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_3_1 = 5,
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_4_0 = 6,
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_4_1 = 7,
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_5_0 = 8,
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_5_1 = 9,
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_5_2 = 10,
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_6_0 = 11,
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_6_1 = 12,
|
||||
V4L2_MPEG_VIDEO_VP9_LEVEL_6_2 = 13,
|
||||
};
|
||||
|
||||
/* CIDs for HEVC encoding. */
|
||||
|
||||
|
|
Loading…
Reference in New Issue