Dr Andrew Scott G7VAV

My photo
 
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


ivtv.h
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: 


for client (none)
© Andrew Scott 2006 - 2025,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/