June 2025 | ||||||
Mo | Tu | We | Th | Fr | Sa | Su |
26 | 27 | 28 | 29 | 30 | 31 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 1 | 2 | 3 | 4 | 5 | 6 |
01: /* 02: Public ivtv API header 03: Copyright (C) 2003-2004 Kevin Thayer <nufan_wfk at yahoo.com> 04: Copyright (C) 2004-2007 Hans Verkuil <hverkuil@xs4all.nl> 05: 06: This program is free software; you can redistribute it and/or modify 07: it under the terms of the GNU General Public License as published by 08: the Free Software Foundation; either version 2 of the License, or 09: (at your option) any later version. 10: 11: This program is distributed in the hope that it will be useful, 12: but WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14: GNU General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with this program; if not, write to the Free Software 18: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19: */ 20: 21: #ifndef __LINUX_IVTV_H__ 22: #define __LINUX_IVTV_H__ 23: 24: 25: #include <linux/types.h> 26: #include <linux/videodev2.h> 27: 28: /* ivtv knows several distinct output modes: MPEG streaming, 29: YUV streaming, YUV updates through user DMA and the passthrough 30: mode. 31: 32: In order to clearly tell the driver that we are in user DMA 33: YUV mode you need to call IVTV_IOC_DMA_FRAME with y_source == NULL 34: first (althrough if you don't then the first time 35: DMA_FRAME is called the mode switch is done automatically). 36: 37: When you close the file handle the user DMA mode is exited again. 38: 39: While in one mode, you cannot use another mode (EBUSY is returned). 40: 41: All this means that if you want to change the YUV interlacing 42: for the user DMA YUV mode you first need to do call IVTV_IOC_DMA_FRAME 43: with y_source == NULL before you can set the correct format using 44: VIDIOC_S_FMT. 45: 46: Eventually all this should be replaced with a proper V4L2 API, 47: but for now we have to do it this way. */ 48: 49: struct ivtv_dma_frame { 50: enum v4l2_buf_type type; /* V4L2_BUF_TYPE_VIDEO_OUTPUT */ 51: __u32 pixelformat; /* 0 == same as destination */ 52: void *y_source; /* if NULL and type == V4L2_BUF_TYPE_VIDEO_OUTPUT, 53: then just switch to user DMA YUV output mode */ 54: void *uv_source; /* Unused for RGB pixelformats */ 55: struct v4l2_rect src; 56: struct v4l2_rect dst; 57: __u32 src_width; 58: __u32 src_height; 59: }; 60: 61: #define IVTV_IOC_DMA_FRAME _IOW ('V', BASE_VIDIOC_PRIVATE+0, struct ivtv_dma_frame) 62: 63: /* Deprecated defines: applications should use the defines from videodev2.h */ 64: #define IVTV_SLICED_TYPE_TELETEXT_B V4L2_MPEG_VBI_IVTV_TELETEXT_B 65: #define IVTV_SLICED_TYPE_CAPTION_525 V4L2_MPEG_VBI_IVTV_CAPTION_525 66: #define IVTV_SLICED_TYPE_WSS_625 V4L2_MPEG_VBI_IVTV_WSS_625 67: #define IVTV_SLICED_TYPE_VPS V4L2_MPEG_VBI_IVTV_VPS 68: 69: #endif /* _LINUX_IVTV_H */ 70: