linux_dsm_epyc7002/drivers/media/platform/vivid/vivid-vid-common.h
Hans Verkuil ef834f7836 [media] vivid: add the video capture and output parts
This adds the ioctl and vb2 queue support for video capture and output.
Part of this is common to both, so that is placed in a vid-common source.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
2014-09-02 17:15:26 -03:00

62 lines
2.9 KiB
C

/*
* vivid-vid-common.h - common video support functions.
*
* Copyright 2014 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#ifndef _VIVID_VID_COMMON_H_
#define _VIVID_VID_COMMON_H_
typedef int (*fmtfunc)(struct file *file, void *priv, struct v4l2_format *f);
/*
* Conversion function that converts a single-planar format to a
* single-plane multiplanar format.
*/
void fmt_sp2mp(const struct v4l2_format *sp_fmt, struct v4l2_format *mp_fmt);
int fmt_sp2mp_func(struct file *file, void *priv,
struct v4l2_format *f, fmtfunc func);
extern const struct v4l2_dv_timings_cap vivid_dv_timings_cap;
const struct vivid_fmt *get_format(struct vivid_dev *dev, u32 pixelformat);
bool vivid_vid_can_loop(struct vivid_dev *dev);
void vivid_send_source_change(struct vivid_dev *dev, unsigned type);
bool rect_overlap(const struct v4l2_rect *r1, const struct v4l2_rect *r2);
void rect_set_size_to(struct v4l2_rect *r, const struct v4l2_rect *size);
void rect_set_min_size(struct v4l2_rect *r, const struct v4l2_rect *min_size);
void rect_set_max_size(struct v4l2_rect *r, const struct v4l2_rect *max_size);
void rect_map_inside(struct v4l2_rect *r, const struct v4l2_rect *boundary);
bool rect_same_size(const struct v4l2_rect *r1, const struct v4l2_rect *r2);
struct v4l2_rect rect_intersect(const struct v4l2_rect *a, const struct v4l2_rect *b);
void rect_scale(struct v4l2_rect *r, const struct v4l2_rect *from,
const struct v4l2_rect *to);
int vivid_vid_adjust_sel(unsigned flags, struct v4l2_rect *r);
int vivid_enum_fmt_vid(struct file *file, void *priv, struct v4l2_fmtdesc *f);
int vidioc_enum_fmt_vid_mplane(struct file *file, void *priv, struct v4l2_fmtdesc *f);
int vidioc_enum_fmt_vid(struct file *file, void *priv, struct v4l2_fmtdesc *f);
int vidioc_g_std(struct file *file, void *priv, v4l2_std_id *id);
int vidioc_g_dv_timings(struct file *file, void *_fh, struct v4l2_dv_timings *timings);
int vidioc_enum_dv_timings(struct file *file, void *_fh, struct v4l2_enum_dv_timings *timings);
int vidioc_dv_timings_cap(struct file *file, void *_fh, struct v4l2_dv_timings_cap *cap);
int vidioc_g_edid(struct file *file, void *_fh, struct v4l2_edid *edid);
int vidioc_subscribe_event(struct v4l2_fh *fh, const struct v4l2_event_subscription *sub);
#endif