/* * M2M One-shot header file * - Handling H/W accellerators for non-streaming media processing * * Copyright (C) 2014 Samsung Electronics Co., Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * Alternatively you can redistribute this file under the terms of the * BSD license as stated below: * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3. The names of its contributors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _UAPI__M2M1SHOT_H_ #define _UAPI__M2M1SHOT_H_ #include #include #include #define M2M1SHOT_MAX_PLANES 3 struct m2m1shot_rect { __s16 left; __s16 top; __u16 width; __u16 height; }; struct m2m1shot_pix_format { __u32 fmt; __u32 width; __u32 height; struct v4l2_rect crop; }; enum m2m1shot_buffer_type { M2M1SHOT_BUFFER_NONE, /* no buffer is set */ M2M1SHOT_BUFFER_DMABUF, M2M1SHOT_BUFFER_USERPTR, }; struct m2m1shot_buffer_plane { union { __s32 fd; unsigned long userptr; }; size_t len; }; struct m2m1shot_buffer { struct m2m1shot_buffer_plane plane[M2M1SHOT_MAX_PLANES]; __u8 type; __u8 num_planes; }; #define M2M1SHOT_OP_FLIP_VIRT (1 << 0) #define M2M1SHOT_OP_FLIP_HORI (1 << 1) #define M2M1SHOT_OP_CSC_WIDE (1 << 8) #define M2M1SHOT_OP_CSC_NARROW (1 << 9) #define M2M1SHOT_OP_CSC_601 (1 << 10) #define M2M1SHOT_OP_CSC_709 (1 << 11) #define M2M1SHOT_OP_PREMULTIPLIED_ALPHA (1 << 16) #define M2M1SHOT_OP_DITHERING (1 << 17) struct m2m1shot_operation { __s16 quality_level; __s16 rotate; __u32 op; /* or-ing M2M1SHOT_FLIP_OP_VIRT/HORI */ }; struct m2m1shot { struct m2m1shot_pix_format fmt_out; struct m2m1shot_pix_format fmt_cap; struct m2m1shot_buffer buf_out; struct m2m1shot_buffer buf_cap; struct m2m1shot_operation op; unsigned long reserved[2]; }; struct m2m1shot_custom_data { unsigned int cmd; unsigned long arg; }; #define M2M1SHOT_IOC_PROCESS _IOWR('M', 0, struct m2m1shot) #define M2M1SHOT_IOC_CUSTOM _IOWR('M', 16, struct m2m1shot_custom_data) #endif /* _UAPI__M2M1SHOT_H_ */