Skip to content

Commit

Permalink
media: v4l2-ctrls: Add intra-refresh period control
Browse files Browse the repository at this point in the history
Add a control to set intra-refresh period.

Acked-by: Hans Verkuil <[email protected]>
Signed-off-by: Stanimir Varbanov <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
  • Loading branch information
Stanimir Varbanov authored and mchehab committed Aug 4, 2021
1 parent ea9f911 commit 9d5adee
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 1 deletion.
17 changes: 16 additions & 1 deletion Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1175,9 +1175,24 @@ enum v4l2_mpeg_video_h264_entropy_mode -
macroblocks refreshed every frame. Each frame a successive set of
macroblocks is refreshed until the cycle completes and starts from
the top of the frame. Setting this control to zero means that
macroblocks will not be refreshed.
macroblocks will not be refreshed. Note that this control will not
take effect when ``V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD`` control
is set to non zero value.
Applicable to H264, H263 and MPEG4 encoder.

``V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (integer)``
Intra macroblock refresh period. This sets the period to refresh
the whole frame. In other words, this defines the number of frames
for which the whole frame will be intra-refreshed. An example:
setting period to 1 means that the whole frame will be refreshed,
setting period to 2 means that the half of macroblocks will be
intra-refreshed on frameX and the other half of macroblocks
will be refreshed in frameX + 1 and so on. Setting the period to
zero means no period is specified.
Note that if the client sets this control to non zero value the
``V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB`` control shall be
ignored. Applicable to H264 and HEVC encoders.

``V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (boolean)``
Frame level rate control enable. If this control is disabled then
the quantization parameter for each frame type is constant and set
Expand Down
2 changes: 2 additions & 0 deletions drivers/media/v4l2-core/v4l2-ctrls-defs.c
Original file line number Diff line number Diff line change
Expand Up @@ -833,6 +833,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_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_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_MB_RC_ENABLE: return "H264 MB Level Rate Control";
case V4L2_CID_MPEG_VIDEO_HEADER_MODE: return "Sequence Header Mode";
Expand Down Expand Up @@ -1258,6 +1259,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
case V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE:
case V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE:
case V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY:
case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD:
*type = V4L2_CTRL_TYPE_INTEGER;
break;
case V4L2_CID_MPEG_VIDEO_LTR_COUNT:
Expand Down
1 change: 1 addition & 0 deletions include/uapi/linux/v4l2-controls.h
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,7 @@ enum v4l2_mpeg_video_multi_slice_mode {
#define V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX (V4L2_CID_CODEC_BASE+233)
#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_INTRA_REFRESH_PERIOD (V4L2_CID_CODEC_BASE+236)

/* CIDs for the MPEG-2 Part 2 (H.262) codec */
#define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE+270)
Expand Down

0 comments on commit 9d5adee

Please sign in to comment.