This is an automatic generated email to let you know that the following patch were queued at the http://git.linuxtv.org/cgit.cgi/v4l-utils.git tree:
Subject: v4l2-compliance: store entity/pad/link data in node Author: Hans Verkuil <hans.verk...@cisco.com> Date: Sat Feb 3 10:17:44 2018 +0100 Adding this to the node makes it easy to use this information in tests. Signed-off-by: Hans Verkuil <hans.verk...@cisco.com> utils/v4l2-compliance/v4l2-compliance.cpp | 39 +++++++++++++++++-------------- utils/v4l2-compliance/v4l2-compliance.h | 4 ++++ utils/v4l2-compliance/v4l2-test-media.cpp | 2 +- 3 files changed, 26 insertions(+), 19 deletions(-) --- http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=31edb959b5e6c06d2d142ef85fbb97cc30c6e646 diff --git a/utils/v4l2-compliance/v4l2-compliance.cpp b/utils/v4l2-compliance/v4l2-compliance.cpp index 4b73c0e16711..4650af2061ff 100644 --- a/utils/v4l2-compliance/v4l2-compliance.cpp +++ b/utils/v4l2-compliance/v4l2-compliance.cpp @@ -38,8 +38,6 @@ #include <signal.h> #include <vector> -#include <linux/media.h> - #include "v4l2-compliance.h" #ifndef ANDROID #include "version.h" @@ -877,12 +875,15 @@ static std::string linkflags2s(__u32 flags) } } -static void mdev_info(int fd, int media_fd) +static void mdev_info(node *node, int media_fd) { struct media_device_info mdinfo; struct stat sb; + int fd = node->g_fd(); - if (fd >= 0 && fstat(fd, &sb) == -1) { + if (media_fd < 0) + media_fd = fd; + else if (fd >= 0 && fstat(fd, &sb) == -1) { fprintf(stderr, "failed to stat file\n"); exit(1); } @@ -890,7 +891,7 @@ static void mdev_info(int fd, int media_fd) if (ioctl(media_fd, MEDIA_IOC_DEVICE_INFO, &mdinfo)) return; - struct media_entity_desc ent; + struct media_entity_desc &ent = node->entity; bool found = false; printf("Media Driver Info:\n"); @@ -909,7 +910,7 @@ static void mdev_info(int fd, int media_fd) (mdinfo.driver_version >> 8) & 0xff, mdinfo.driver_version & 0xff); - if (fd < 0) + if (node->is_media()) return; memset(&ent, 0, sizeof(ent)); @@ -922,8 +923,10 @@ static void mdev_info(int fd, int media_fd) } ent.id |= MEDIA_ENT_ID_FLAG_NEXT; } - if (!found) + if (!found) { + ent.id = 0; return; + } printf("Entity Info:\n"); printf("\tID : %u\n", ent.id); @@ -936,24 +939,24 @@ static void mdev_info(int fd, int media_fd) } struct media_links_enum links_enum; - struct media_pad_desc pads[ent.pads]; - struct media_link_desc links[ent.links]; + node->pads = new media_pad_desc[ent.pads]; + node->links = new media_link_desc[ent.links]; memset(&links_enum, 0, sizeof(links_enum)); links_enum.entity = ent.id; - links_enum.pads = pads; - links_enum.links = links; + links_enum.pads = node->pads; + links_enum.links = node->links; if (ioctl(media_fd, MEDIA_IOC_ENUM_LINKS, &links_enum)) return; for (unsigned i = 0; i < ent.pads; i++) - printf("\tPad %u: %s\n", pads[i].index, - padflags2s(pads[i].flags).c_str()); + printf("\tPad %u: %s\n", node->pads[i].index, + padflags2s(node->pads[i].flags).c_str()); for (unsigned i = 0; i < ent.links; i++) printf("\tLinks %u->%u: %s\n", - links[i].source.entity, - links[i].sink.entity, - linkflags2s(links[i].flags).c_str()); + node->links[i].source.entity, + node->links[i].sink.entity, + linkflags2s(node->links[i].flags).c_str()); } @@ -1353,9 +1356,9 @@ int main(int argc, char **argv) } } if (node.is_media()) - mdev_info(-1, node.g_fd()); + mdev_info(&node, -1); else if (media_fd >= 0) - mdev_info(node.g_fd(), media_fd); + mdev_info(&node, media_fd); printf("\nCompliance test for device %s%s:\n\n", device, direct ? "" : " (using libv4l2)"); diff --git a/utils/v4l2-compliance/v4l2-compliance.h b/utils/v4l2-compliance/v4l2-compliance.h index 7c43db5ba933..831a51c472bb 100644 --- a/utils/v4l2-compliance/v4l2-compliance.h +++ b/utils/v4l2-compliance/v4l2-compliance.h @@ -28,6 +28,7 @@ #include <set> #include <map> #include <linux/videodev2.h> +#include <linux/media.h> #ifdef ANDROID #include <android-config.h> @@ -91,6 +92,9 @@ struct base_node { unsigned std_compound_controls; unsigned priv_controls; unsigned priv_compound_controls; + struct media_entity_desc entity; + struct media_pad_desc *pads; + struct media_link_desc *links; __u32 fbuf_caps; pixfmt_map buftype_pixfmts[V4L2_BUF_TYPE_LAST + 1]; frmsizes_set frmsizes; diff --git a/utils/v4l2-compliance/v4l2-test-media.cpp b/utils/v4l2-compliance/v4l2-test-media.cpp index ea66548e6b0f..624eadd74ca4 100644 --- a/utils/v4l2-compliance/v4l2-test-media.cpp +++ b/utils/v4l2-compliance/v4l2-test-media.cpp @@ -30,7 +30,7 @@ #include <errno.h> #include <sys/ioctl.h> #include <assert.h> -#include <linux/media.h> + #include "v4l2-compliance.h" int testMediaDeviceInfo(struct node *node) _______________________________________________ linuxtv-commits mailing list linuxtv-commits@linuxtv.org https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits