media: v4l2-ctrls: Add intra-refresh type control
Add a control to set intra-refresh type. Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com> Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
ef15219c3e
commit
fcbc4acf8b
@ -1180,6 +1180,28 @@ enum v4l2_mpeg_video_h264_entropy_mode -
|
|||||||
is set to non zero value.
|
is set to non zero value.
|
||||||
Applicable to H264, H263 and MPEG4 encoder.
|
Applicable to H264, H263 and MPEG4 encoder.
|
||||||
|
|
||||||
|
``V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE (enum)``
|
||||||
|
|
||||||
|
enum v4l2_mpeg_video_intra_refresh_period_type -
|
||||||
|
Sets the type of intra refresh. The period to refresh
|
||||||
|
the whole frame is specified by V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD.
|
||||||
|
Note that if this control is not present, then it is undefined what
|
||||||
|
refresh type is used and it is up to the driver to decide.
|
||||||
|
Applicable to H264 and HEVC encoders. Possible values are:
|
||||||
|
|
||||||
|
.. tabularcolumns:: |p{9.6cm}|p{7.9cm}|
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
|
||||||
|
* - ``V4L2_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM``
|
||||||
|
- The whole frame is completely refreshed randomly
|
||||||
|
after the specified period.
|
||||||
|
* - ``V4L2_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC``
|
||||||
|
- The whole frame MBs are completely refreshed in cyclic order
|
||||||
|
after the specified period.
|
||||||
|
|
||||||
``V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (integer)``
|
``V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (integer)``
|
||||||
Intra macroblock refresh period. This sets the period to refresh
|
Intra macroblock refresh period. This sets the period to refresh
|
||||||
the whole frame. In other words, this defines the number of frames
|
the whole frame. In other words, this defines the number of frames
|
||||||
|
@ -572,6 +572,11 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
|
|||||||
"VBV/CPB Limit",
|
"VBV/CPB Limit",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
static const char * const intra_refresh_period_type[] = {
|
||||||
|
"Random",
|
||||||
|
"Cyclic",
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
|
case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
|
||||||
@ -705,6 +710,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
|
|||||||
return hevc_start_code;
|
return hevc_start_code;
|
||||||
case V4L2_CID_CAMERA_ORIENTATION:
|
case V4L2_CID_CAMERA_ORIENTATION:
|
||||||
return camera_orientation;
|
return camera_orientation;
|
||||||
|
case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE:
|
||||||
|
return intra_refresh_period_type;
|
||||||
default:
|
default:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -834,6 +841,7 @@ const char *v4l2_ctrl_get_name(u32 id)
|
|||||||
case V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE: return "Decoder Slice Interface";
|
case V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE: return "Decoder Slice Interface";
|
||||||
case V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER: return "MPEG4 Loop Filter Enable";
|
case V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER: return "MPEG4 Loop Filter Enable";
|
||||||
case V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB: return "Number of Intra Refresh MBs";
|
case V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB: return "Number of Intra Refresh MBs";
|
||||||
|
case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE: return "Intra Refresh Period Type";
|
||||||
case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD: return "Intra Refresh Period";
|
case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD: return "Intra Refresh Period";
|
||||||
case V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE: return "Frame Level Rate Control Enable";
|
case V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE: return "Frame Level Rate Control Enable";
|
||||||
case V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE: return "H264 MB Level Rate Control";
|
case V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE: return "H264 MB Level Rate Control";
|
||||||
@ -1360,6 +1368,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
|
|||||||
case V4L2_CID_STATELESS_H264_DECODE_MODE:
|
case V4L2_CID_STATELESS_H264_DECODE_MODE:
|
||||||
case V4L2_CID_STATELESS_H264_START_CODE:
|
case V4L2_CID_STATELESS_H264_START_CODE:
|
||||||
case V4L2_CID_CAMERA_ORIENTATION:
|
case V4L2_CID_CAMERA_ORIENTATION:
|
||||||
|
case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE:
|
||||||
*type = V4L2_CTRL_TYPE_MENU;
|
*type = V4L2_CTRL_TYPE_MENU;
|
||||||
break;
|
break;
|
||||||
case V4L2_CID_LINK_FREQ:
|
case V4L2_CID_LINK_FREQ:
|
||||||
|
@ -449,6 +449,11 @@ enum v4l2_mpeg_video_multi_slice_mode {
|
|||||||
#define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (V4L2_CID_CODEC_BASE+234)
|
#define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (V4L2_CID_CODEC_BASE+234)
|
||||||
#define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (V4L2_CID_CODEC_BASE+235)
|
#define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (V4L2_CID_CODEC_BASE+235)
|
||||||
#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (V4L2_CID_CODEC_BASE+236)
|
#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (V4L2_CID_CODEC_BASE+236)
|
||||||
|
#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE (V4L2_CID_CODEC_BASE+237)
|
||||||
|
enum v4l2_mpeg_video_intra_refresh_period_type {
|
||||||
|
V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM = 0,
|
||||||
|
V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC = 1,
|
||||||
|
};
|
||||||
|
|
||||||
/* CIDs for the MPEG-2 Part 2 (H.262) codec */
|
/* CIDs for the MPEG-2 Part 2 (H.262) codec */
|
||||||
#define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE+270)
|
#define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE+270)
|
||||||
|
Loading…
Reference in New Issue
Block a user