Message ID | 20210424024739.83762-1-rosenp@gmail.com |
---|---|
State | New |
Headers | show |
Series | [1/2] mass constexpr conversions | expand |
On 24/04/2021 04:47, Rosen Penev wrote: > std::array avoids having to decay the array into a pointer. Also allows > using the at() member function for debugging. > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > --- > utils/cec-follower/cec-follower.h | 9 ++--- > utils/cec-follower/cec-processing.cpp | 24 ++++++------ > utils/libcecutil/cec-parse.cpp | 43 +++++++++++---------- > utils/v4l2-compliance/v4l2-test-buffers.cpp | 19 ++++----- > utils/v4l2-compliance/v4l2-test-formats.cpp | 4 +- > 5 files changed, 49 insertions(+), 50 deletions(-) > > diff --git a/utils/cec-follower/cec-follower.h b/utils/cec-follower/cec-follower.h > index 391b9ab40..b0c9e980d 100644 > --- a/utils/cec-follower/cec-follower.h > +++ b/utils/cec-follower/cec-follower.h > @@ -8,6 +8,8 @@ > #ifndef _CEC_FOLLOWER_H_ > #define _CEC_FOLLOWER_H_ > > +#include <array> > + > #include <linux/cec-funcs.h> > #include "cec-htng-funcs.h" > > @@ -78,14 +80,11 @@ struct node { > > struct la_info { > __u64 ts; > - struct { > - unsigned count; > - __u64 ts; > - } feature_aborted[256]; > + std::array<std::pair<unsigned, __u64>, 256> feature_aborted; Ah, no. This turns perfectly understandable 'count' and 'ts' fields into vague 'first' and 'second' fields. But to be honest, I see no real benefits at all to this patch. I've decided not to take this one. Sorry about that, but I think normal arrays are perfectly fine. Regards, Hans > __u16 phys_addr; > }; > > -extern struct la_info la_info[15]; > +extern std::array<struct la_info, 15> la_info; > > struct short_audio_desc { > /* Byte 1 */ > diff --git a/utils/cec-follower/cec-processing.cpp b/utils/cec-follower/cec-processing.cpp > index 9acaf7ec9..51eab1ae8 100644 > --- a/utils/cec-follower/cec-processing.cpp > +++ b/utils/cec-follower/cec-processing.cpp > @@ -3,6 +3,7 @@ > * Copyright 2016 Cisco Systems, Inc. and/or its affiliates. All rights reserved. > */ > > +#include <array> > #include <cerrno> > #include <ctime> > #include <string> > @@ -37,7 +38,7 @@ struct cec_enum_values { > __u8 value; > }; > > -struct la_info la_info[15]; > +std::array<struct la_info, 15> la_info; > > static struct timespec start_monotonic; > static struct timeval start_timeofday; > @@ -120,8 +121,8 @@ void reply_feature_abort(struct node *node, struct cec_msg *msg, __u8 reason) > if (cec_msg_is_broadcast(msg) || cec_msg_initiator(msg) == CEC_LOG_ADDR_UNREGISTERED) > return; > if (reason == CEC_OP_ABORT_UNRECOGNIZED_OP) { > - la_info[la].feature_aborted[opcode].count++; > - if (la_info[la].feature_aborted[opcode].count == 2) { > + la_info[la].feature_aborted[opcode].first++; > + if (la_info[la].feature_aborted[opcode].first == 2) { > /* If the Abort Reason was "Unrecognized opcode", the Initiator should not send > the same message to the same Follower again at that time to avoid saturating > the bus. */ > @@ -129,13 +130,11 @@ void reply_feature_abort(struct node *node, struct cec_msg *msg, __u8 reason) > opcode2s(msg).c_str(), la, cec_la2s(la)); > warn("replying Feature Abort [Unrecognized Opcode] to the same message.\n"); > } > - } > - else if (la_info[la].feature_aborted[opcode].count) { > + } else if (la_info[la].feature_aborted[opcode].first) { > warn("Replying Feature Abort with abort reason different than [Unrecognized Opcode]\n"); > warn("to message that has previously been replied Feature Abort to with [Unrecognized Opcode].\n"); > - } > - else > - la_info[la].feature_aborted[opcode].ts = ts_now; > + } else > + la_info[la].feature_aborted[opcode].second = ts_now; > > cec_msg_reply_feature_abort(msg, reason); > transmit(node, msg); > @@ -939,7 +938,7 @@ void testProcessing(struct node *node, bool wallclock) > node->state.active_source_pa = CEC_PHYS_ADDR_INVALID; > me = CEC_LOG_ADDR_INVALID; > } > - memset(la_info, 0, sizeof(la_info)); > + la_info = {}; > } > } > if (FD_ISSET(fd, &rd_fds)) { > @@ -962,9 +961,8 @@ void testProcessing(struct node *node, bool wallclock) > if (node->ignore_opcode[msg.msg[1]] & (1 << from)) > continue; > > - if (from != CEC_LOG_ADDR_UNREGISTERED && > - la_info[from].feature_aborted[opcode].ts && > - ts_to_ms(get_ts() - la_info[from].feature_aborted[opcode].ts) < 200) { > + if (from != CEC_LOG_ADDR_UNREGISTERED && la_info[from].feature_aborted[opcode].second && > + ts_to_ms(get_ts() - la_info[from].feature_aborted[opcode].second) < 200) { > warn("Received message %s from LA %d (%s) less than 200 ms after\n", > opcode2s(&msg).c_str(), from, cec_la2s(from)); > warn("replying Feature Abort (not [Unrecognized Opcode]) to the same message.\n"); > @@ -1016,7 +1014,7 @@ void testProcessing(struct node *node, bool wallclock) > transmit(node, &msg); > if (msg.tx_status & CEC_TX_STATUS_NACK) { > dev_info("Logical address %d stopped responding to polling message.\n", poll_la); > - memset(&la_info[poll_la], 0, sizeof(la_info[poll_la])); > + la_info[poll_la] = {}; > node->remote_la_mask &= ~(1 << poll_la); > node->remote_phys_addr[poll_la] = CEC_PHYS_ADDR_INVALID; > } > diff --git a/utils/libcecutil/cec-parse.cpp b/utils/libcecutil/cec-parse.cpp > index fd37f5b83..f48170500 100644 > --- a/utils/libcecutil/cec-parse.cpp > +++ b/utils/libcecutil/cec-parse.cpp > @@ -3,6 +3,7 @@ > * Copyright 2019 Cisco Systems, Inc. and/or its affiliates. All rights reserved. > */ > > +#include <array> > #include <cctype> > #include <cstring> > #include <string> > @@ -108,13 +109,13 @@ static __u32 *args2short_descrs(__u32 descriptor1, > __u32 descriptor3, > __u32 descriptor4) > { > - static __u32 descriptors[4]; > - > - descriptors[0] = descriptor1; > - descriptors[1] = descriptor2; > - descriptors[2] = descriptor3; > - descriptors[3] = descriptor4; > - return descriptors; > + static std::array<__u32, 4> descriptors{ > + descriptor1, > + descriptor2, > + descriptor3, > + descriptor4, > + }; > + return descriptors.data(); > } > > static __u8 *args2short_aud_fmt_ids(__u8 audio_format_id1, > @@ -122,13 +123,13 @@ static __u8 *args2short_aud_fmt_ids(__u8 audio_format_id1, > __u8 audio_format_id3, > __u8 audio_format_id4) > { > - static __u8 audio_format_ids[4]; > - > - audio_format_ids[0] = audio_format_id1; > - audio_format_ids[1] = audio_format_id2; > - audio_format_ids[2] = audio_format_id3; > - audio_format_ids[3] = audio_format_id4; > - return audio_format_ids; > + static std::array<__u8, 4> audio_format_ids{ > + audio_format_id1, > + audio_format_id2, > + audio_format_id3, > + audio_format_id4, > + }; > + return audio_format_ids.data(); > } > > static __u8 *args2short_aud_fmt_codes(__u8 audio_format_code1, > @@ -136,13 +137,13 @@ static __u8 *args2short_aud_fmt_codes(__u8 audio_format_code1, > __u8 audio_format_code3, > __u8 audio_format_code4) > { > - static __u8 audio_format_codes[4]; > - > - audio_format_codes[0] = audio_format_code1; > - audio_format_codes[1] = audio_format_code2; > - audio_format_codes[2] = audio_format_code3; > - audio_format_codes[3] = audio_format_code4; > - return audio_format_codes; > + static std::array<__u8, 4> audio_format_codes{ > + audio_format_code1, > + audio_format_code2, > + audio_format_code3, > + audio_format_code4, > + }; > + return audio_format_codes.data(); > } > > int cec_parse_subopt(char **subs, const char * const *subopts, char **value) > diff --git a/utils/v4l2-compliance/v4l2-test-buffers.cpp b/utils/v4l2-compliance/v4l2-test-buffers.cpp > index e515fea48..5b0c5452b 100644 > --- a/utils/v4l2-compliance/v4l2-test-buffers.cpp > +++ b/utils/v4l2-compliance/v4l2-test-buffers.cpp > @@ -36,8 +36,8 @@ static cv4l_fmt cur_fmt; > static cv4l_fmt cur_m2m_fmt; > static int stream_from_fd = -1; > static bool stream_use_hdr; > -static unsigned max_bytesused[VIDEO_MAX_PLANES]; > -static unsigned min_data_offset[VIDEO_MAX_PLANES]; > +static std::array<unsigned int, VIDEO_MAX_PLANES> max_bytesused; > +static std::array<unsigned int, VIDEO_MAX_PLANES> min_data_offset; > > bool operator<(struct timeval const& n1, struct timeval const& n2) > { > @@ -60,7 +60,7 @@ struct buf_seq { > > static struct buf_seq last_seq, last_m2m_seq; > > -static int buf_req_fds[VIDEO_MAX_FRAME * 2]; > +static std::array<int, VIDEO_MAX_FRAME * 2> buf_req_fds; > > static inline int named_ioctl_fd(int fd, bool trace, const char *cmd_name, unsigned long cmd, void *arg) > { > @@ -845,7 +845,7 @@ static int captureBufs(struct node *node, struct node *node_m2m_cap, const cv4l_ > cv4l_queue &m2m_q, unsigned frame_count, int pollmode, > unsigned &capture_count) > { > - static constexpr const char *pollmode_str[] = { > + static constexpr std::array<const char *, 3> pollmode_str{ > "", > " (select)", > " (epoll)", > @@ -1677,8 +1677,8 @@ int testUserPtr(struct node *node, struct node *node_m2m_cap, unsigned frame_cou > } > } > // captureBufs() will update these values > - memset(max_bytesused, 0, sizeof(max_bytesused)); > - memset(min_data_offset, 0xff, sizeof(min_data_offset)); > + max_bytesused = {}; > + min_data_offset.fill(0xff); > > fail_on_test(setupUserPtr(node, q)); > > @@ -2900,9 +2900,10 @@ static void streamFmt(struct node *node, __u32 pixelformat, __u32 w, __u32 h, > return; > } > > - v4l2_selection *selections[2][4] = { > - { &min_crop, &max_crop, &min_compose, &max_compose }, > - { &min_compose, &max_compose, &min_crop, &max_crop } > + using sel = std::array<v4l2_selection *, 4>; > + std::array<sel, 2> selections{ > + sel{ &min_crop, &max_crop, &min_compose, &max_compose }, > + sel{ &min_compose, &max_compose, &min_crop, &max_crop }, > }; > > selTest test = createSelTest(node); > diff --git a/utils/v4l2-compliance/v4l2-test-formats.cpp b/utils/v4l2-compliance/v4l2-test-formats.cpp > index 3761b1fa9..0ef89544c 100644 > --- a/utils/v4l2-compliance/v4l2-test-formats.cpp > +++ b/utils/v4l2-compliance/v4l2-test-formats.cpp > @@ -27,7 +27,7 @@ > #include "compiler.h" > #include "v4l2-compliance.h" > > -static constexpr __u32 buftype2cap[] = { > +static constexpr std::array<__u32, 15> buftype2cap{ > 0, > V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_M2M, > V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_M2M, > @@ -1095,7 +1095,7 @@ int testSetFormats(struct node *node) > { > struct v4l2_clip clip, clip_set; > struct v4l2_format fmt, fmt_set; > - struct v4l2_format initial_fmts[V4L2_BUF_TYPE_LAST + 1]; > + std::array<v4l2_format, V4L2_BUF_TYPE_LAST + 1> initial_fmts; > int type; > int ret; > >
On Wed, May 26, 2021 at 4:15 AM Hans Verkuil <hverkuil@xs4all.nl> wrote: > > On 24/04/2021 04:47, Rosen Penev wrote: > > std::array avoids having to decay the array into a pointer. Also allows > > using the at() member function for debugging. > > > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > > --- > > utils/cec-follower/cec-follower.h | 9 ++--- > > utils/cec-follower/cec-processing.cpp | 24 ++++++------ > > utils/libcecutil/cec-parse.cpp | 43 +++++++++++---------- > > utils/v4l2-compliance/v4l2-test-buffers.cpp | 19 ++++----- > > utils/v4l2-compliance/v4l2-test-formats.cpp | 4 +- > > 5 files changed, 49 insertions(+), 50 deletions(-) > > > > diff --git a/utils/cec-follower/cec-follower.h b/utils/cec-follower/cec-follower.h > > index 391b9ab40..b0c9e980d 100644 > > --- a/utils/cec-follower/cec-follower.h > > +++ b/utils/cec-follower/cec-follower.h > > @@ -8,6 +8,8 @@ > > #ifndef _CEC_FOLLOWER_H_ > > #define _CEC_FOLLOWER_H_ > > > > +#include <array> > > + > > #include <linux/cec-funcs.h> > > #include "cec-htng-funcs.h" > > > > @@ -78,14 +80,11 @@ struct node { > > > > struct la_info { > > __u64 ts; > > - struct { > > - unsigned count; > > - __u64 ts; > > - } feature_aborted[256]; > > + std::array<std::pair<unsigned, __u64>, 256> feature_aborted; > > Ah, no. This turns perfectly understandable 'count' and 'ts' fields > into vague 'first' and 'second' fields. I believe the reason I switched to std::pair(which I now learned is a bad idea) is that I would have to declare the struct and array separately. But there is a better way to do that. > > But to be honest, I see no real benefits at all to this patch. I've decided not > to take this one. > > Sorry about that, but I think normal arrays are perfectly fine. std::array has several C++ advantages. For example, a size of a C array is sizeof(a) / sizeof(*a). std::array is a.size(). It can make the code look a little cleaner while being the same speed(or faster) than a C style array. Your call though. > > Regards, > > Hans > > > __u16 phys_addr; > > }; > > > > -extern struct la_info la_info[15]; > > +extern std::array<struct la_info, 15> la_info; > > > > struct short_audio_desc { > > /* Byte 1 */ > > diff --git a/utils/cec-follower/cec-processing.cpp b/utils/cec-follower/cec-processing.cpp > > index 9acaf7ec9..51eab1ae8 100644 > > --- a/utils/cec-follower/cec-processing.cpp > > +++ b/utils/cec-follower/cec-processing.cpp > > @@ -3,6 +3,7 @@ > > * Copyright 2016 Cisco Systems, Inc. and/or its affiliates. All rights reserved. > > */ > > > > +#include <array> > > #include <cerrno> > > #include <ctime> > > #include <string> > > @@ -37,7 +38,7 @@ struct cec_enum_values { > > __u8 value; > > }; > > > > -struct la_info la_info[15]; > > +std::array<struct la_info, 15> la_info; > > > > static struct timespec start_monotonic; > > static struct timeval start_timeofday; > > @@ -120,8 +121,8 @@ void reply_feature_abort(struct node *node, struct cec_msg *msg, __u8 reason) > > if (cec_msg_is_broadcast(msg) || cec_msg_initiator(msg) == CEC_LOG_ADDR_UNREGISTERED) > > return; > > if (reason == CEC_OP_ABORT_UNRECOGNIZED_OP) { > > - la_info[la].feature_aborted[opcode].count++; > > - if (la_info[la].feature_aborted[opcode].count == 2) { > > + la_info[la].feature_aborted[opcode].first++; > > + if (la_info[la].feature_aborted[opcode].first == 2) { > > /* If the Abort Reason was "Unrecognized opcode", the Initiator should not send > > the same message to the same Follower again at that time to avoid saturating > > the bus. */ > > @@ -129,13 +130,11 @@ void reply_feature_abort(struct node *node, struct cec_msg *msg, __u8 reason) > > opcode2s(msg).c_str(), la, cec_la2s(la)); > > warn("replying Feature Abort [Unrecognized Opcode] to the same message.\n"); > > } > > - } > > - else if (la_info[la].feature_aborted[opcode].count) { > > + } else if (la_info[la].feature_aborted[opcode].first) { > > warn("Replying Feature Abort with abort reason different than [Unrecognized Opcode]\n"); > > warn("to message that has previously been replied Feature Abort to with [Unrecognized Opcode].\n"); > > - } > > - else > > - la_info[la].feature_aborted[opcode].ts = ts_now; > > + } else > > + la_info[la].feature_aborted[opcode].second = ts_now; > > > > cec_msg_reply_feature_abort(msg, reason); > > transmit(node, msg); > > @@ -939,7 +938,7 @@ void testProcessing(struct node *node, bool wallclock) > > node->state.active_source_pa = CEC_PHYS_ADDR_INVALID; > > me = CEC_LOG_ADDR_INVALID; > > } > > - memset(la_info, 0, sizeof(la_info)); > > + la_info = {}; > > } > > } > > if (FD_ISSET(fd, &rd_fds)) { > > @@ -962,9 +961,8 @@ void testProcessing(struct node *node, bool wallclock) > > if (node->ignore_opcode[msg.msg[1]] & (1 << from)) > > continue; > > > > - if (from != CEC_LOG_ADDR_UNREGISTERED && > > - la_info[from].feature_aborted[opcode].ts && > > - ts_to_ms(get_ts() - la_info[from].feature_aborted[opcode].ts) < 200) { > > + if (from != CEC_LOG_ADDR_UNREGISTERED && la_info[from].feature_aborted[opcode].second && > > + ts_to_ms(get_ts() - la_info[from].feature_aborted[opcode].second) < 200) { > > warn("Received message %s from LA %d (%s) less than 200 ms after\n", > > opcode2s(&msg).c_str(), from, cec_la2s(from)); > > warn("replying Feature Abort (not [Unrecognized Opcode]) to the same message.\n"); > > @@ -1016,7 +1014,7 @@ void testProcessing(struct node *node, bool wallclock) > > transmit(node, &msg); > > if (msg.tx_status & CEC_TX_STATUS_NACK) { > > dev_info("Logical address %d stopped responding to polling message.\n", poll_la); > > - memset(&la_info[poll_la], 0, sizeof(la_info[poll_la])); > > + la_info[poll_la] = {}; > > node->remote_la_mask &= ~(1 << poll_la); > > node->remote_phys_addr[poll_la] = CEC_PHYS_ADDR_INVALID; > > } > > diff --git a/utils/libcecutil/cec-parse.cpp b/utils/libcecutil/cec-parse.cpp > > index fd37f5b83..f48170500 100644 > > --- a/utils/libcecutil/cec-parse.cpp > > +++ b/utils/libcecutil/cec-parse.cpp > > @@ -3,6 +3,7 @@ > > * Copyright 2019 Cisco Systems, Inc. and/or its affiliates. All rights reserved. > > */ > > > > +#include <array> > > #include <cctype> > > #include <cstring> > > #include <string> > > @@ -108,13 +109,13 @@ static __u32 *args2short_descrs(__u32 descriptor1, > > __u32 descriptor3, > > __u32 descriptor4) > > { > > - static __u32 descriptors[4]; > > - > > - descriptors[0] = descriptor1; > > - descriptors[1] = descriptor2; > > - descriptors[2] = descriptor3; > > - descriptors[3] = descriptor4; > > - return descriptors; > > + static std::array<__u32, 4> descriptors{ > > + descriptor1, > > + descriptor2, > > + descriptor3, > > + descriptor4, > > + }; > > + return descriptors.data(); > > } > > > > static __u8 *args2short_aud_fmt_ids(__u8 audio_format_id1, > > @@ -122,13 +123,13 @@ static __u8 *args2short_aud_fmt_ids(__u8 audio_format_id1, > > __u8 audio_format_id3, > > __u8 audio_format_id4) > > { > > - static __u8 audio_format_ids[4]; > > - > > - audio_format_ids[0] = audio_format_id1; > > - audio_format_ids[1] = audio_format_id2; > > - audio_format_ids[2] = audio_format_id3; > > - audio_format_ids[3] = audio_format_id4; > > - return audio_format_ids; > > + static std::array<__u8, 4> audio_format_ids{ > > + audio_format_id1, > > + audio_format_id2, > > + audio_format_id3, > > + audio_format_id4, > > + }; > > + return audio_format_ids.data(); > > } > > > > static __u8 *args2short_aud_fmt_codes(__u8 audio_format_code1, > > @@ -136,13 +137,13 @@ static __u8 *args2short_aud_fmt_codes(__u8 audio_format_code1, > > __u8 audio_format_code3, > > __u8 audio_format_code4) > > { > > - static __u8 audio_format_codes[4]; > > - > > - audio_format_codes[0] = audio_format_code1; > > - audio_format_codes[1] = audio_format_code2; > > - audio_format_codes[2] = audio_format_code3; > > - audio_format_codes[3] = audio_format_code4; > > - return audio_format_codes; > > + static std::array<__u8, 4> audio_format_codes{ > > + audio_format_code1, > > + audio_format_code2, > > + audio_format_code3, > > + audio_format_code4, > > + }; > > + return audio_format_codes.data(); > > } > > > > int cec_parse_subopt(char **subs, const char * const *subopts, char **value) > > diff --git a/utils/v4l2-compliance/v4l2-test-buffers.cpp b/utils/v4l2-compliance/v4l2-test-buffers.cpp > > index e515fea48..5b0c5452b 100644 > > --- a/utils/v4l2-compliance/v4l2-test-buffers.cpp > > +++ b/utils/v4l2-compliance/v4l2-test-buffers.cpp > > @@ -36,8 +36,8 @@ static cv4l_fmt cur_fmt; > > static cv4l_fmt cur_m2m_fmt; > > static int stream_from_fd = -1; > > static bool stream_use_hdr; > > -static unsigned max_bytesused[VIDEO_MAX_PLANES]; > > -static unsigned min_data_offset[VIDEO_MAX_PLANES]; > > +static std::array<unsigned int, VIDEO_MAX_PLANES> max_bytesused; > > +static std::array<unsigned int, VIDEO_MAX_PLANES> min_data_offset; > > > > bool operator<(struct timeval const& n1, struct timeval const& n2) > > { > > @@ -60,7 +60,7 @@ struct buf_seq { > > > > static struct buf_seq last_seq, last_m2m_seq; > > > > -static int buf_req_fds[VIDEO_MAX_FRAME * 2]; > > +static std::array<int, VIDEO_MAX_FRAME * 2> buf_req_fds; > > > > static inline int named_ioctl_fd(int fd, bool trace, const char *cmd_name, unsigned long cmd, void *arg) > > { > > @@ -845,7 +845,7 @@ static int captureBufs(struct node *node, struct node *node_m2m_cap, const cv4l_ > > cv4l_queue &m2m_q, unsigned frame_count, int pollmode, > > unsigned &capture_count) > > { > > - static constexpr const char *pollmode_str[] = { > > + static constexpr std::array<const char *, 3> pollmode_str{ > > "", > > " (select)", > > " (epoll)", > > @@ -1677,8 +1677,8 @@ int testUserPtr(struct node *node, struct node *node_m2m_cap, unsigned frame_cou > > } > > } > > // captureBufs() will update these values > > - memset(max_bytesused, 0, sizeof(max_bytesused)); > > - memset(min_data_offset, 0xff, sizeof(min_data_offset)); > > + max_bytesused = {}; > > + min_data_offset.fill(0xff); > > > > fail_on_test(setupUserPtr(node, q)); > > > > @@ -2900,9 +2900,10 @@ static void streamFmt(struct node *node, __u32 pixelformat, __u32 w, __u32 h, > > return; > > } > > > > - v4l2_selection *selections[2][4] = { > > - { &min_crop, &max_crop, &min_compose, &max_compose }, > > - { &min_compose, &max_compose, &min_crop, &max_crop } > > + using sel = std::array<v4l2_selection *, 4>; > > + std::array<sel, 2> selections{ > > + sel{ &min_crop, &max_crop, &min_compose, &max_compose }, > > + sel{ &min_compose, &max_compose, &min_crop, &max_crop }, > > }; > > > > selTest test = createSelTest(node); > > diff --git a/utils/v4l2-compliance/v4l2-test-formats.cpp b/utils/v4l2-compliance/v4l2-test-formats.cpp > > index 3761b1fa9..0ef89544c 100644 > > --- a/utils/v4l2-compliance/v4l2-test-formats.cpp > > +++ b/utils/v4l2-compliance/v4l2-test-formats.cpp > > @@ -27,7 +27,7 @@ > > #include "compiler.h" > > #include "v4l2-compliance.h" > > > > -static constexpr __u32 buftype2cap[] = { > > +static constexpr std::array<__u32, 15> buftype2cap{ > > 0, > > V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_M2M, > > V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_M2M, > > @@ -1095,7 +1095,7 @@ int testSetFormats(struct node *node) > > { > > struct v4l2_clip clip, clip_set; > > struct v4l2_format fmt, fmt_set; > > - struct v4l2_format initial_fmts[V4L2_BUF_TYPE_LAST + 1]; > > + std::array<v4l2_format, V4L2_BUF_TYPE_LAST + 1> initial_fmts; > > int type; > > int ret; > > > > >
diff --git a/utils/cec-compliance/cec-test-adapter.cpp b/utils/cec-compliance/cec-test-adapter.cpp index cf1b6191f..df7feb218 100644 --- a/utils/cec-compliance/cec-test-adapter.cpp +++ b/utils/cec-compliance/cec-test-adapter.cpp @@ -14,8 +14,8 @@ #include "cec-compliance.h" -static const __u8 tx_ok_retry_mask = CEC_TX_STATUS_OK | CEC_TX_STATUS_MAX_RETRIES; -static const __u32 msg_fl_mask = CEC_MSG_FL_REPLY_TO_FOLLOWERS | CEC_MSG_FL_RAW; +static constexpr __u8 tx_ok_retry_mask = CEC_TX_STATUS_OK | CEC_TX_STATUS_MAX_RETRIES; +static constexpr __u32 msg_fl_mask = CEC_MSG_FL_REPLY_TO_FOLLOWERS | CEC_MSG_FL_RAW; // Flush any pending messages static int flush_pending_msgs(struct node *node) @@ -107,24 +107,24 @@ static int testAdapPhysAddr(struct node *node) static int testAdapLogAddrs(struct node *node) { - static const __u8 la_types[] = { + static constexpr __u8 la_types[] = { CEC_LOG_ADDR_TYPE_TV, CEC_LOG_ADDR_TYPE_RECORD, CEC_LOG_ADDR_TYPE_TUNER, CEC_LOG_ADDR_TYPE_AUDIOSYSTEM }; - static const __u8 prim_dev_types[] = { + static constexpr __u8 prim_dev_types[] = { CEC_OP_PRIM_DEVTYPE_TV, CEC_OP_PRIM_DEVTYPE_RECORD, CEC_OP_PRIM_DEVTYPE_TUNER, CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM }; - static const __u8 all_dev_types[2] = { + static constexpr __u8 all_dev_types[2] = { CEC_OP_ALL_DEVTYPE_TV | CEC_OP_ALL_DEVTYPE_RECORD | CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM, CEC_OP_ALL_DEVTYPE_RECORD | CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM, }; - static const __u8 features[12] = { + static constexpr __u8 features[12] = { 0x90, 0x00, 0x8e, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff diff --git a/utils/cec-ctl/cec-ctl.cpp b/utils/cec-ctl/cec-ctl.cpp index c17265a5c..d9391ab72 100644 --- a/utils/cec-ctl/cec-ctl.cpp +++ b/utils/cec-ctl/cec-ctl.cpp @@ -2179,7 +2179,7 @@ int main(int argc, char **argv) usage(); return 1; case OptVendorCommand: { - static const char *arg_names[] = { + static constexpr const char *arg_names[] = { "payload", nullptr }; @@ -2213,7 +2213,7 @@ int main(int argc, char **argv) break; } case OptCustomCommand: { - static const char *arg_names[] = { + static constexpr const char *arg_names[] = { "cmd", "payload", nullptr @@ -2256,7 +2256,7 @@ int main(int argc, char **argv) break; } case OptVendorCommandWithID: { - static const char *arg_names[] = { + static constexpr const char *arg_names[] = { "vendor-id", "cmd", nullptr @@ -2295,7 +2295,7 @@ int main(int argc, char **argv) break; } case OptVendorRemoteButtonDown: { - static const char *arg_names[] = { + static constexpr const char *arg_names[] = { "rc-code", nullptr }; @@ -2344,7 +2344,7 @@ int main(int argc, char **argv) break; case OptTestPowerCycle: { - static const char *arg_names[] = { + static constexpr const char *arg_names[] = { "polls", "sleep", nullptr @@ -2371,7 +2371,7 @@ int main(int argc, char **argv) } case OptStressTestPowerCycle: { - static const char *arg_names[] = { + static constexpr const char *arg_names[] = { "cnt", "min-sleep", "max-sleep", diff --git a/utils/cec-follower/cec-processing.cpp b/utils/cec-follower/cec-processing.cpp index 93db40598..9acaf7ec9 100644 --- a/utils/cec-follower/cec-processing.cpp +++ b/utils/cec-follower/cec-processing.cpp @@ -41,8 +41,8 @@ struct la_info la_info[15]; static struct timespec start_monotonic; static struct timeval start_timeofday; -static const time_t time_to_transient = 1; -static const time_t time_to_stable = 8; +static constexpr time_t time_to_transient = 1; +static constexpr time_t time_to_stable = 8; static const char *get_ui_cmd_string(__u8 ui_cmd) { diff --git a/utils/common/media-info.cpp b/utils/common/media-info.cpp index 3a5477e84..410e18cd7 100644 --- a/utils/common/media-info.cpp +++ b/utils/common/media-info.cpp @@ -33,7 +33,7 @@ static std::string num2s(unsigned num, bool is_hex = true) return buf; } -static struct { +static constexpr struct { const char *devname; enum media_type type; } media_types[] = { @@ -255,7 +255,7 @@ int mi_get_media_fd(int fd, const char *bus_info) return media_fd; } -static const flag_def entity_flags_def[] = { +static constexpr flag_def entity_flags_def[] = { { MEDIA_ENT_FL_DEFAULT, "default" }, { MEDIA_ENT_FL_CONNECTOR, "connector" }, { 0, nullptr } @@ -266,7 +266,7 @@ std::string mi_entflags2s(__u32 flags) return flags2s(flags, entity_flags_def); } -static const flag_def interface_types_def[] = { +static constexpr flag_def interface_types_def[] = { { MEDIA_INTF_T_DVB_FE, "DVB Front End" }, { MEDIA_INTF_T_DVB_DEMUX, "DVB Demuxer" }, { MEDIA_INTF_T_DVB_DVR, "DVB DVR" }, @@ -299,7 +299,7 @@ std::string mi_ifacetype2s(__u32 type) return "FAIL: Unknown (" + num2s(type) + ")"; } -static const flag_def entity_functions_def[] = { +static constexpr flag_def entity_functions_def[] = { { MEDIA_ENT_F_UNKNOWN, "FAIL: Uninitialized Function" }, { MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN, "FAIL: Unknown V4L2 Sub-Device" }, { MEDIA_ENT_T_DEVNODE_UNKNOWN, "FAIL: Unknown Device Node" }, @@ -392,7 +392,7 @@ bool mi_func_requires_intf(__u32 function) } } -static const flag_def pad_flags_def[] = { +static constexpr flag_def pad_flags_def[] = { { MEDIA_PAD_FL_SINK, "Sink" }, { MEDIA_PAD_FL_SOURCE, "Source" }, { MEDIA_PAD_FL_MUST_CONNECT, "Must Connect" }, @@ -404,7 +404,7 @@ std::string mi_padflags2s(__u32 flags) return flags2s(flags, pad_flags_def); } -static const flag_def link_flags_def[] = { +static constexpr flag_def link_flags_def[] = { { MEDIA_LNK_FL_ENABLED, "Enabled" }, { MEDIA_LNK_FL_IMMUTABLE, "Immutable" }, { MEDIA_LNK_FL_DYNAMIC, "Dynamic" }, diff --git a/utils/common/v4l2-info.cpp b/utils/common/v4l2-info.cpp index cb3cb91f7..b8f2c865d 100644 --- a/utils/common/v4l2-info.cpp +++ b/utils/common/v4l2-info.cpp @@ -201,7 +201,7 @@ std::string buftype2s(int type) } } -static const flag_def bufcap_def[] = { +static constexpr flag_def bufcap_def[] = { { V4L2_BUF_CAP_SUPPORTS_MMAP, "mmap" }, { V4L2_BUF_CAP_SUPPORTS_USERPTR, "userptr" }, { V4L2_BUF_CAP_SUPPORTS_DMABUF, "dmabuf" }, @@ -345,7 +345,7 @@ std::string quantization2s(int val) } } -static const flag_def pixflags_def[] = { +static constexpr flag_def pixflags_def[] = { { V4L2_PIX_FMT_FLAG_PREMUL_ALPHA, "premultiplied-alpha" }, { 0, nullptr } }; @@ -355,7 +355,7 @@ std::string pixflags2s(unsigned flags) return flags2s(flags, pixflags_def); } -static const flag_def service_def[] = { +static constexpr flag_def service_def[] = { { V4L2_SLICED_TELETEXT_B, "teletext" }, { V4L2_SLICED_VPS, "vps" }, { V4L2_SLICED_CAPTION_525, "cc" }, @@ -369,7 +369,7 @@ std::string service2s(unsigned service) } #define FMTDESC_DEF(enc_type) \ -static const flag_def fmtdesc_ ## enc_type ## _def[] = { \ +static constexpr flag_def fmtdesc_ ## enc_type ## _def[] = { \ { V4L2_FMT_FLAG_COMPRESSED, "compressed" }, \ { V4L2_FMT_FLAG_EMULATED, "emulated" }, \ { V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM, "continuous-bytestream" }, \ @@ -393,7 +393,7 @@ std::string fmtdesc2s(unsigned flags, bool is_hsv) } #define MBUS_DEF(enc_type) \ -static const flag_def mbus_ ## enc_type ## _def[] = { \ +static constexpr flag_def mbus_ ## enc_type ## _def[] = { \ { V4L2_SUBDEV_MBUS_CODE_CSC_COLORSPACE, "csc-colorspace" }, \ { V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC, "csc-"#enc_type }, \ { V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION, "csc-quantization" }, \ @@ -411,7 +411,7 @@ std::string mbus2s(unsigned flags, bool is_hsv) return flags2s(flags, mbus_ycbcr_def); } -static const flag_def selection_targets_def[] = { +static constexpr flag_def selection_targets_def[] = { { V4L2_SEL_TGT_CROP_ACTIVE, "crop" }, { V4L2_SEL_TGT_CROP_DEFAULT, "crop_default" }, { V4L2_SEL_TGT_CROP_BOUNDS, "crop_bounds" }, @@ -519,7 +519,7 @@ std::string std2s(v4l2_std_id std, const char *sep) std::string ctrlflags2s(__u32 flags) { - static const flag_def def[] = { + static constexpr flag_def def[] = { { V4L2_CTRL_FLAG_GRABBED, "grabbed" }, { V4L2_CTRL_FLAG_DISABLED, "disabled" }, { V4L2_CTRL_FLAG_READ_ONLY, "read-only" }, @@ -536,7 +536,7 @@ std::string ctrlflags2s(__u32 flags) return flags2s(flags, def); } -static const flag_def in_status_def[] = { +static constexpr flag_def in_status_def[] = { { V4L2_IN_ST_NO_POWER, "no power" }, { V4L2_IN_ST_NO_SIGNAL, "no signal" }, { V4L2_IN_ST_NO_COLOR, "no color" }, @@ -560,7 +560,7 @@ std::string in_status2s(__u32 status) return status ? flags2s(status, in_status_def) : "ok"; } -static const flag_def input_cap_def[] = { +static constexpr flag_def input_cap_def[] = { { V4L2_IN_CAP_DV_TIMINGS, "DV timings" }, { V4L2_IN_CAP_STD, "SDTV standards" }, { V4L2_IN_CAP_NATIVE_SIZE, "Native Size" }, @@ -572,7 +572,7 @@ std::string input_cap2s(__u32 capabilities) return capabilities ? flags2s(capabilities, input_cap_def) : "not defined"; } -static const flag_def output_cap_def[] = { +static constexpr flag_def output_cap_def[] = { { V4L2_OUT_CAP_DV_TIMINGS, "DV timings" }, { V4L2_OUT_CAP_STD, "SDTV standards" }, { V4L2_OUT_CAP_NATIVE_SIZE, "Native Size" }, @@ -630,7 +630,7 @@ std::string fbufflags2s(unsigned fl) return s; } -static const flag_def dv_standards_def[] = { +static constexpr flag_def dv_standards_def[] = { { V4L2_DV_BT_STD_CEA861, "CTA-861" }, { V4L2_DV_BT_STD_DMT, "DMT" }, { V4L2_DV_BT_STD_CVT, "CVT" }, @@ -675,7 +675,7 @@ std::string dvflags2s(unsigned vsync, int val) return s; } -static const flag_def dv_caps_def[] = { +static constexpr flag_def dv_caps_def[] = { { V4L2_DV_BT_CAP_INTERLACED, "Interlaced" }, { V4L2_DV_BT_CAP_PROGRESSIVE, "Progressive" }, { V4L2_DV_BT_CAP_REDUCED_BLANKING, "Reduced Blanking" }, @@ -688,7 +688,7 @@ std::string dv_caps2s(__u32 flags) return flags2s(flags, dv_caps_def); } -static const flag_def tc_flags_def[] = { +static constexpr flag_def tc_flags_def[] = { { V4L2_TC_FLAG_DROPFRAME, "dropframe" }, { V4L2_TC_FLAG_COLORFRAME, "colorframe" }, { V4L2_TC_USERBITS_field, "userbits-field" }, @@ -702,7 +702,7 @@ std::string tc_flags2s(__u32 flags) return flags2s(flags, tc_flags_def); } -static const flag_def buffer_flags_def[] = { +static constexpr flag_def buffer_flags_def[] = { { V4L2_BUF_FLAG_MAPPED, "mapped" }, { V4L2_BUF_FLAG_QUEUED, "queued" }, { V4L2_BUF_FLAG_DONE, "done" }, diff --git a/utils/rds-ctl/rds-ctl.cpp b/utils/rds-ctl/rds-ctl.cpp index 8161aa453..80a9396ab 100644 --- a/utils/rds-ctl/rds-ctl.cpp +++ b/utils/rds-ctl/rds-ctl.cpp @@ -382,7 +382,7 @@ static void parse_freq_seek(char *optarg, struct v4l2_hw_freq_seek &seek) char *subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "dir", "wrap", "spacing", diff --git a/utils/v4l2-compliance/v4l2-compliance.cpp b/utils/v4l2-compliance/v4l2-compliance.cpp index 90a503612..b25e34640 100644 --- a/utils/v4l2-compliance/v4l2-compliance.cpp +++ b/utils/v4l2-compliance/v4l2-compliance.cpp @@ -1618,7 +1618,7 @@ int main(int argc, char **argv) case OptStreamAllColorTest: subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "color", "skip", "perc", diff --git a/utils/v4l2-compliance/v4l2-test-buffers.cpp b/utils/v4l2-compliance/v4l2-test-buffers.cpp index 045f8d54a..e515fea48 100644 --- a/utils/v4l2-compliance/v4l2-test-buffers.cpp +++ b/utils/v4l2-compliance/v4l2-test-buffers.cpp @@ -845,7 +845,7 @@ static int captureBufs(struct node *node, struct node *node_m2m_cap, const cv4l_ cv4l_queue &m2m_q, unsigned frame_count, int pollmode, unsigned &capture_count) { - static const char *pollmode_str[] = { + static constexpr const char *pollmode_str[] = { "", " (select)", " (epoll)", diff --git a/utils/v4l2-compliance/v4l2-test-colors.cpp b/utils/v4l2-compliance/v4l2-test-colors.cpp index 55a816949..887b2fd41 100644 --- a/utils/v4l2-compliance/v4l2-test-colors.cpp +++ b/utils/v4l2-compliance/v4l2-test-colors.cpp @@ -59,22 +59,22 @@ struct color { double r, g, b, a; }; -static const double bt601[3][3] = { +static constexpr double bt601[3][3] = { { 1, 0, 1.4020 }, { 1, -0.3441, -0.7141 }, { 1, 1.7720, 0 }, }; -static const double rec709[3][3] = { +static constexpr double rec709[3][3] = { { 1, 0, 1.5748 }, { 1, -0.1873, -0.4681 }, { 1, 1.8556, 0 }, }; -static const double smpte240m[3][3] = { +static constexpr double smpte240m[3][3] = { { 1, 0, 1.5756 }, { 1, -0.2253, -0.4767 }, { 1, 1.8270, 0 }, }; -static const double bt2020[3][3] = { +static constexpr double bt2020[3][3] = { { 1, 0, 1.4746 }, { 1, -0.1646, -0.5714 }, { 1, 1.8814, 0 }, @@ -465,7 +465,7 @@ static void getColor(const cv4l_fmt &fmt, __u8 * const planes[3], } } -static const char * const colors[] = { +static constexpr const char *colors[] = { "red", "green", "blue" diff --git a/utils/v4l2-compliance/v4l2-test-formats.cpp b/utils/v4l2-compliance/v4l2-test-formats.cpp index 60ebf559a..3761b1fa9 100644 --- a/utils/v4l2-compliance/v4l2-test-formats.cpp +++ b/utils/v4l2-compliance/v4l2-test-formats.cpp @@ -27,7 +27,7 @@ #include "compiler.h" #include "v4l2-compliance.h" -static const __u32 buftype2cap[] = { +static constexpr __u32 buftype2cap[] = { 0, V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_M2M, V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_M2M, diff --git a/utils/v4l2-ctl/v4l2-ctl-edid.cpp b/utils/v4l2-ctl/v4l2-ctl-edid.cpp index 80ea151f5..5b5d715da 100644 --- a/utils/v4l2-ctl/v4l2-ctl-edid.cpp +++ b/utils/v4l2-ctl/v4l2-ctl-edid.cpp @@ -658,19 +658,19 @@ static void print_edid_mods(const struct v4l2_edid *e) } loc = get_edid_vid_cap_location(e->edid, e->blocks * 128); if (loc >= 0) { - static const char *pt_scan[] = { + static constexpr const char *pt_scan[] = { "No Data", "Always Overscanned", "Always Underscanned", "Supports both over- and underscan" }; - static const char *it_scan[] = { + static constexpr const char *it_scan[] = { "IT Formats not supported", "Always Overscanned", "Always Underscanned", "Supports both over- and underscan" }; - static const char *ce_scan[] = { + static constexpr const char *ce_scan[] = { "CE Formats not supported", "Always Overscanned", "Always Underscanned", @@ -1087,7 +1087,7 @@ void edid_cmd(int ch, char *optarg) break; subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "pad", "type", "edid", @@ -1307,7 +1307,7 @@ void edid_cmd(int ch, char *optarg) break; subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "pad", "startblock", "blocks", diff --git a/utils/v4l2-ctl/v4l2-ctl-misc.cpp b/utils/v4l2-ctl/v4l2-ctl-misc.cpp index 1853608a3..dc587aeb1 100644 --- a/utils/v4l2-ctl/v4l2-ctl-misc.cpp +++ b/utils/v4l2-ctl/v4l2-ctl-misc.cpp @@ -178,7 +178,7 @@ void misc_cmd(int ch, char *optarg) case OptSetJpegComp: subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "app0", "app1", "app2", "app3", "app4", "app5", "app6", "app7", "app8", "app9", "appa", "appb", @@ -235,7 +235,7 @@ void misc_cmd(int ch, char *optarg) case OptTryEncoderCmd: subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "cmd", "flags", nullptr @@ -258,7 +258,7 @@ void misc_cmd(int ch, char *optarg) case OptTryDecoderCmd: subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "cmd", "flags", "stop_pts", diff --git a/utils/v4l2-ctl/v4l2-ctl-overlay.cpp b/utils/v4l2-ctl/v4l2-ctl-overlay.cpp index 639a41757..5493222dd 100644 --- a/utils/v4l2-ctl/v4l2-ctl-overlay.cpp +++ b/utils/v4l2-ctl/v4l2-ctl-overlay.cpp @@ -209,7 +209,7 @@ void overlay_cmd(int ch, char *optarg) case OptTryOverlayFormat: subs = optarg; while (subs && *subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "chromakey", "global_alpha", "left", @@ -260,7 +260,7 @@ void overlay_cmd(int ch, char *optarg) subs = optarg; memset(&r, 0, sizeof(r)); while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "left", "top", "width", @@ -303,12 +303,12 @@ void overlay_cmd(int ch, char *optarg) case OptSetFBuf: subs = optarg; while (*subs != '\0') { - const unsigned chroma_flags = V4L2_FBUF_FLAG_CHROMAKEY | + constexpr unsigned chroma_flags = V4L2_FBUF_FLAG_CHROMAKEY | V4L2_FBUF_FLAG_SRC_CHROMAKEY; - const unsigned alpha_flags = V4L2_FBUF_FLAG_GLOBAL_ALPHA | + constexpr unsigned alpha_flags = V4L2_FBUF_FLAG_GLOBAL_ALPHA | V4L2_FBUF_FLAG_LOCAL_ALPHA | V4L2_FBUF_FLAG_LOCAL_INV_ALPHA; - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "chromakey", "src_chromakey", "global_alpha", diff --git a/utils/v4l2-ctl/v4l2-ctl-selection.cpp b/utils/v4l2-ctl/v4l2-ctl-selection.cpp index 4633776fb..68a39c149 100644 --- a/utils/v4l2-ctl/v4l2-ctl-selection.cpp +++ b/utils/v4l2-ctl/v4l2-ctl-selection.cpp @@ -93,7 +93,7 @@ static void parse_crop(char *optarg, unsigned int &set_crop, v4l2_rect &vcrop) char *subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "left", "top", "width", @@ -153,7 +153,7 @@ static int parse_selection(char *optarg, unsigned int &set_sel, v4l2_selection & char *subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "target", "flags", "left", diff --git a/utils/v4l2-ctl/v4l2-ctl-stds.cpp b/utils/v4l2-ctl/v4l2-ctl-stds.cpp index 82571f932..08154df45 100644 --- a/utils/v4l2-ctl/v4l2-ctl-stds.cpp +++ b/utils/v4l2-ctl/v4l2-ctl-stds.cpp @@ -160,7 +160,7 @@ static int parse_timing_subopt(char **subopt_str, int *value) int opt; char *opt_str; - static const char * const subopt_list[] = { + static constexpr const char *subopt_list[] = { "width", "height", "interlaced", diff --git a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp index b8dc30fb3..62424e4cc 100644 --- a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp +++ b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp @@ -503,7 +503,7 @@ static void print_buffer(FILE *f, struct v4l2_buffer &buf) static_cast<__u64>(buf.timestamp.tv_sec), static_cast<__u64>(buf.timestamp.tv_usec), timestamp_type2s(buf.flags).c_str(), timestamp_src2s(buf.flags).c_str()); if (buf.flags & V4L2_BUF_FLAG_TIMECODE) { - static const int fps_types[] = { 0, 24, 25, 30, 50, 60 }; + static constexpr int fps_types[] = { 0, 24, 25, 30, 50, 60 }; int fps = buf.timecode.type; if (fps > 5) diff --git a/utils/v4l2-ctl/v4l2-ctl-subdev.cpp b/utils/v4l2-ctl/v4l2-ctl-subdev.cpp index ecfd32443..33cc13427 100644 --- a/utils/v4l2-ctl/v4l2-ctl-subdev.cpp +++ b/utils/v4l2-ctl/v4l2-ctl-subdev.cpp @@ -97,7 +97,7 @@ void subdev_cmd(int ch, char *optarg) case OptListSubDevFrameSizes: subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "pad", "code", nullptr @@ -119,7 +119,7 @@ void subdev_cmd(int ch, char *optarg) case OptListSubDevFrameIntervals: subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "pad", "code", "width", @@ -153,7 +153,7 @@ void subdev_cmd(int ch, char *optarg) case OptGetSubDevSelection: subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "pad", "target", nullptr @@ -187,7 +187,7 @@ void subdev_cmd(int ch, char *optarg) ffmt.field = V4L2_FIELD_ANY; subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "width", "height", "code", @@ -256,7 +256,7 @@ void subdev_cmd(int ch, char *optarg) subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "target", "flags", "left", @@ -309,7 +309,7 @@ void subdev_cmd(int ch, char *optarg) subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "pad", "fps", nullptr diff --git a/utils/v4l2-ctl/v4l2-ctl-tuner.cpp b/utils/v4l2-ctl/v4l2-ctl-tuner.cpp index 7d6f6f3e7..177aa8e60 100644 --- a/utils/v4l2-ctl/v4l2-ctl-tuner.cpp +++ b/utils/v4l2-ctl/v4l2-ctl-tuner.cpp @@ -157,7 +157,7 @@ static void parse_freq_seek(char *optarg, struct v4l2_hw_freq_seek &seek) char *subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "dir", "wrap", "spacing", diff --git a/utils/v4l2-ctl/v4l2-ctl-vbi.cpp b/utils/v4l2-ctl/v4l2-ctl-vbi.cpp index 33191aa64..dc7b4282c 100644 --- a/utils/v4l2-ctl/v4l2-ctl-vbi.cpp +++ b/utils/v4l2-ctl/v4l2-ctl-vbi.cpp @@ -123,7 +123,7 @@ void vbi_cmd(int ch, char *optarg) subs = optarg; memset(&raw->fmt.vbi, 0, sizeof(raw->fmt.vbi)); while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "samplingrate", "offset", "samplesperline", diff --git a/utils/v4l2-ctl/v4l2-ctl-vidcap.cpp b/utils/v4l2-ctl/v4l2-ctl-vidcap.cpp index c66c248a3..cca2d4b42 100644 --- a/utils/v4l2-ctl/v4l2-ctl-vidcap.cpp +++ b/utils/v4l2-ctl/v4l2-ctl-vidcap.cpp @@ -133,7 +133,7 @@ void vidcap_cmd(int ch, char *optarg) case OptListFrameIntervals: subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "width", "height", "pixelformat", @@ -395,7 +395,7 @@ void vidcap_list(cv4l_fd &fd) void print_touch_buffer(FILE *f, cv4l_buffer &buf, cv4l_fmt &fmt, cv4l_queue &q) { - static const char img[16] = { + static constexpr char img[16] = { '.', ',', ':', ';', '!', '|', 'i', 'c', 'n', 'o', 'm', 'I', 'C', 'N', 'O', 'M', }; diff --git a/utils/v4l2-ctl/v4l2-ctl.cpp b/utils/v4l2-ctl/v4l2-ctl.cpp index d91577e14..95b8a2e78 100644 --- a/utils/v4l2-ctl/v4l2-ctl.cpp +++ b/utils/v4l2-ctl/v4l2-ctl.cpp @@ -523,7 +523,7 @@ void printfmt(int fd, const struct v4l2_format &vfmt) static std::string frmtype2s(unsigned type) { - static const char *types[] = { + static constexpr const char *types[] = { "Unknown", "Discrete", "Continuous", @@ -764,7 +764,7 @@ int parse_fmt(char *optarg, __u32 &width, __u32 &height, __u32 &pixelformat, flags = 0; subs = optarg; while (*subs != '\0') { - static const char *const subopts[] = { + static constexpr const char *subopts[] = { "width", "height", "pixelformat", @@ -1033,7 +1033,7 @@ static int open_media_bus_info(const std::string &bus_info) } static const char *make_devname(const char *device, const char *devname, - const std::string &media_bus_info) + const std::string &media_bus_info) { if (device[0] >= '0' && device[0] <= '9' && strlen(device) <= 3) { static char newdev[32]; diff --git a/utils/v4l2-dbg/v4l2-dbg.cpp b/utils/v4l2-dbg/v4l2-dbg.cpp index 47b1263cf..d711c9e4f 100644 --- a/utils/v4l2-dbg/v4l2-dbg.cpp +++ b/utils/v4l2-dbg/v4l2-dbg.cpp @@ -494,7 +494,7 @@ int main(int argc, char **argv) break; while (*subs != '\0') { - static const char * const subopts[] = { + static constexpr const char *subopts[] = { "min", "max", nullptr
Signed-off-by: Rosen Penev <rosenp@gmail.com> --- utils/cec-compliance/cec-test-adapter.cpp | 12 ++++----- utils/cec-ctl/cec-ctl.cpp | 12 ++++----- utils/cec-follower/cec-processing.cpp | 4 +-- utils/common/media-info.cpp | 12 ++++----- utils/common/v4l2-info.cpp | 28 ++++++++++----------- utils/rds-ctl/rds-ctl.cpp | 2 +- utils/v4l2-compliance/v4l2-compliance.cpp | 2 +- utils/v4l2-compliance/v4l2-test-buffers.cpp | 2 +- utils/v4l2-compliance/v4l2-test-colors.cpp | 10 ++++---- utils/v4l2-compliance/v4l2-test-formats.cpp | 2 +- utils/v4l2-ctl/v4l2-ctl-edid.cpp | 10 ++++---- utils/v4l2-ctl/v4l2-ctl-misc.cpp | 6 ++--- utils/v4l2-ctl/v4l2-ctl-overlay.cpp | 10 ++++---- utils/v4l2-ctl/v4l2-ctl-selection.cpp | 4 +-- utils/v4l2-ctl/v4l2-ctl-stds.cpp | 2 +- utils/v4l2-ctl/v4l2-ctl-streaming.cpp | 2 +- utils/v4l2-ctl/v4l2-ctl-subdev.cpp | 12 ++++----- utils/v4l2-ctl/v4l2-ctl-tuner.cpp | 2 +- utils/v4l2-ctl/v4l2-ctl-vbi.cpp | 2 +- utils/v4l2-ctl/v4l2-ctl-vidcap.cpp | 4 +-- utils/v4l2-ctl/v4l2-ctl.cpp | 6 ++--- utils/v4l2-dbg/v4l2-dbg.cpp | 2 +- 22 files changed, 74 insertions(+), 74 deletions(-)