This is an automatic generated email to let you know that the following patch were queued at the http://git.linuxtv.org/v4l-utils.git tree:
Subject: media-ctl: libv4l2subdev: Add DV timings support Author: Laurent Pinchart <[email protected]> Date: Mon Jun 2 16:49:15 2014 +0200 Expose the pad-level get caps, query, get and set DV timings ioctls. Signed-off-by: Laurent Pinchart <[email protected]> utils/media-ctl/libv4l2subdev.c | 72 +++++++++++++++++++++++++++++++++++++++ utils/media-ctl/v4l2subdev.h | 53 ++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+), 0 deletions(-) --- http://git.linuxtv.org/v4l-utils.git?a=commitdiff;h=12b025d2d2eb566ae9037b2c936a543eca67ab35 diff --git a/utils/media-ctl/libv4l2subdev.c b/utils/media-ctl/libv4l2subdev.c index 14daffa..8015330 100644 --- a/utils/media-ctl/libv4l2subdev.c +++ b/utils/media-ctl/libv4l2subdev.c @@ -189,6 +189,78 @@ int v4l2_subdev_set_selection(struct media_entity *entity, return 0; } +int v4l2_subdev_get_dv_timings_caps(struct media_entity *entity, + struct v4l2_dv_timings_cap *caps) +{ + unsigned int pad = caps->pad; + int ret; + + ret = v4l2_subdev_open(entity); + if (ret < 0) + return ret; + + memset(caps, 0, sizeof(*caps)); + caps->pad = pad; + + ret = ioctl(entity->fd, VIDIOC_SUBDEV_DV_TIMINGS_CAP, caps); + if (ret < 0) + return -errno; + + return 0; +} + +int v4l2_subdev_query_dv_timings(struct media_entity *entity, + struct v4l2_dv_timings *timings) +{ + int ret; + + ret = v4l2_subdev_open(entity); + if (ret < 0) + return ret; + + memset(timings, 0, sizeof(*timings)); + + ret = ioctl(entity->fd, VIDIOC_SUBDEV_QUERY_DV_TIMINGS, timings); + if (ret < 0) + return -errno; + + return 0; +} + +int v4l2_subdev_get_dv_timings(struct media_entity *entity, + struct v4l2_dv_timings *timings) +{ + int ret; + + ret = v4l2_subdev_open(entity); + if (ret < 0) + return ret; + + memset(timings, 0, sizeof(*timings)); + + ret = ioctl(entity->fd, VIDIOC_SUBDEV_G_DV_TIMINGS, timings); + if (ret < 0) + return -errno; + + return 0; +} + +int v4l2_subdev_set_dv_timings(struct media_entity *entity, + struct v4l2_dv_timings *timings) +{ + int ret; + + ret = v4l2_subdev_open(entity); + if (ret < 0) + return ret; + + ret = ioctl(entity->fd, VIDIOC_SUBDEV_S_DV_TIMINGS, timings); + if (ret < 0) + return -errno; + + return 0; +} + int v4l2_subdev_get_frame_interval(struct media_entity *entity, struct v4l2_fract *interval) { diff --git a/utils/media-ctl/v4l2subdev.h b/utils/media-ctl/v4l2subdev.h index c2ca1e5..1cb53ff 100644 --- a/utils/media-ctl/v4l2subdev.h +++ b/utils/media-ctl/v4l2subdev.h @@ -132,6 +132,59 @@ int v4l2_subdev_set_selection(struct media_entity *entity, enum v4l2_subdev_format_whence which); /** + * @brief Query the digital video capabilities of a pad. + * @param entity - subdev-device media entity. + * @param cap - capabilities to be filled. + * + * Retrieve the digital video capabilities of the @a entity pad specified by + * @a cap.pad and store it in the @a cap structure. + * + * @return 0 on success, or a negative error code on failure. + */ +int v4l2_subdev_get_dv_timings_caps(struct media_entity *entity, + struct v4l2_dv_timings_cap *caps); + +/** + * @brief Query the digital video timings of a sub-device + * @param entity - subdev-device media entity. + * @param timings timings to be filled. + * + * Retrieve the detected digital video timings for the currently selected input + * of @a entity and store them in the @a timings structure. + * + * @return 0 on success, or a negative error code on failure. + */ +int v4l2_subdev_query_dv_timings(struct media_entity *entity, + struct v4l2_dv_timings *timings); + +/** + * @brief Get the current digital video timings of a sub-device + * @param entity - subdev-device media entity. + * @param timings timings to be filled. + * + * Retrieve the current digital video timings for the currently selected input + * of @a entity and store them in the @a timings structure. + * + * @return 0 on success, or a negative error code on failure. + */ +int v4l2_subdev_get_dv_timings(struct media_entity *entity, + struct v4l2_dv_timings *timings); + +/** + * @brief Set the digital video timings of a sub-device + * @param entity - subdev-device media entity. + * @param timings timings to be set. + * + * Set the digital video timings of @a entity to @a timings. The driver is + * allowed to modify the requested format, in which case @a timings is updated + * with the modifications. + * + * @return 0 on success, or a negative error code on failure. + */ +int v4l2_subdev_set_dv_timings(struct media_entity *entity, + struct v4l2_dv_timings *timings); + +/** * @brief Retrieve the frame interval on a sub-device. * @param entity - subdev-device media entity. * @param interval - frame interval to be filled. _______________________________________________ linuxtv-commits mailing list [email protected] http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits
