xref: /OK3568_Linux_fs/kernel/Documentation/userspace-api/media/v4l/vidioc-g-jpegcomp.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2*4882a593Smuzhiyun.. c:namespace:: V4L
3*4882a593Smuzhiyun
4*4882a593Smuzhiyun.. _VIDIOC_G_JPEGCOMP:
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun******************************************
7*4882a593Smuzhiyunioctl VIDIOC_G_JPEGCOMP, VIDIOC_S_JPEGCOMP
8*4882a593Smuzhiyun******************************************
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunName
11*4882a593Smuzhiyun====
12*4882a593Smuzhiyun
13*4882a593SmuzhiyunVIDIOC_G_JPEGCOMP - VIDIOC_S_JPEGCOMP
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunSynopsis
16*4882a593Smuzhiyun========
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun.. c:macro:: VIDIOC_G_JPEGCOMP
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun``int ioctl(int fd, VIDIOC_G_JPEGCOMP, v4l2_jpegcompression *argp)``
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun.. c:macro:: VIDIOC_S_JPEGCOMP
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun``int ioctl(int fd, VIDIOC_S_JPEGCOMP, const v4l2_jpegcompression *argp)``
25*4882a593Smuzhiyun
26*4882a593SmuzhiyunArguments
27*4882a593Smuzhiyun=========
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun``fd``
30*4882a593Smuzhiyun    File descriptor returned by :c:func:`open()`.
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun``argp``
33*4882a593Smuzhiyun    Pointer to struct :c:type:`v4l2_jpegcompression`.
34*4882a593Smuzhiyun
35*4882a593SmuzhiyunDescription
36*4882a593Smuzhiyun===========
37*4882a593Smuzhiyun
38*4882a593SmuzhiyunThese ioctls are **deprecated**. New drivers and applications should use
39*4882a593Smuzhiyun:ref:`JPEG class controls <jpeg-controls>` for image quality and JPEG
40*4882a593Smuzhiyunmarkers control.
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun[to do]
43*4882a593Smuzhiyun
44*4882a593SmuzhiyunRonald Bultje elaborates:
45*4882a593Smuzhiyun
46*4882a593SmuzhiyunAPP is some application-specific information. The application can set it
47*4882a593Smuzhiyunitself, and it'll be stored in the JPEG-encoded fields (eg; interlacing
48*4882a593Smuzhiyuninformation for in an AVI or so). COM is the same, but it's comments,
49*4882a593Smuzhiyunlike 'encoded by me' or so.
50*4882a593Smuzhiyun
51*4882a593Smuzhiyunjpeg_markers describes whether the huffman tables, quantization tables
52*4882a593Smuzhiyunand the restart interval information (all JPEG-specific stuff) should be
53*4882a593Smuzhiyunstored in the JPEG-encoded fields. These define how the JPEG field is
54*4882a593Smuzhiyunencoded. If you omit them, applications assume you've used standard
55*4882a593Smuzhiyunencoding. You usually do want to add them.
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun.. tabularcolumns:: |p{1.2cm}|p{3.0cm}|p{13.3cm}|
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun.. c:type:: v4l2_jpegcompression
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun.. flat-table:: struct v4l2_jpegcompression
62*4882a593Smuzhiyun    :header-rows:  0
63*4882a593Smuzhiyun    :stub-columns: 0
64*4882a593Smuzhiyun    :widths:       1 1 2
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun    * - int
67*4882a593Smuzhiyun      - ``quality``
68*4882a593Smuzhiyun      - Deprecated. If
69*4882a593Smuzhiyun	:ref:`V4L2_CID_JPEG_COMPRESSION_QUALITY <jpeg-quality-control>`
70*4882a593Smuzhiyun	control is exposed by a driver applications should use it instead
71*4882a593Smuzhiyun	and ignore this field.
72*4882a593Smuzhiyun    * - int
73*4882a593Smuzhiyun      - ``APPn``
74*4882a593Smuzhiyun      -
75*4882a593Smuzhiyun    * - int
76*4882a593Smuzhiyun      - ``APP_len``
77*4882a593Smuzhiyun      -
78*4882a593Smuzhiyun    * - char
79*4882a593Smuzhiyun      - ``APP_data``\ [60]
80*4882a593Smuzhiyun      -
81*4882a593Smuzhiyun    * - int
82*4882a593Smuzhiyun      - ``COM_len``
83*4882a593Smuzhiyun      -
84*4882a593Smuzhiyun    * - char
85*4882a593Smuzhiyun      - ``COM_data``\ [60]
86*4882a593Smuzhiyun      -
87*4882a593Smuzhiyun    * - __u32
88*4882a593Smuzhiyun      - ``jpeg_markers``
89*4882a593Smuzhiyun      - See :ref:`jpeg-markers`. Deprecated. If
90*4882a593Smuzhiyun	:ref:`V4L2_CID_JPEG_ACTIVE_MARKER <jpeg-active-marker-control>`
91*4882a593Smuzhiyun	control is exposed by a driver applications should use it instead
92*4882a593Smuzhiyun	and ignore this field.
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun.. _jpeg-markers:
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun.. flat-table:: JPEG Markers Flags
99*4882a593Smuzhiyun    :header-rows:  0
100*4882a593Smuzhiyun    :stub-columns: 0
101*4882a593Smuzhiyun    :widths:       3 1 4
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun    * - ``V4L2_JPEG_MARKER_DHT``
104*4882a593Smuzhiyun      - (1<<3)
105*4882a593Smuzhiyun      - Define Huffman Tables
106*4882a593Smuzhiyun    * - ``V4L2_JPEG_MARKER_DQT``
107*4882a593Smuzhiyun      - (1<<4)
108*4882a593Smuzhiyun      - Define Quantization Tables
109*4882a593Smuzhiyun    * - ``V4L2_JPEG_MARKER_DRI``
110*4882a593Smuzhiyun      - (1<<5)
111*4882a593Smuzhiyun      - Define Restart Interval
112*4882a593Smuzhiyun    * - ``V4L2_JPEG_MARKER_COM``
113*4882a593Smuzhiyun      - (1<<6)
114*4882a593Smuzhiyun      - Comment segment
115*4882a593Smuzhiyun    * - ``V4L2_JPEG_MARKER_APP``
116*4882a593Smuzhiyun      - (1<<7)
117*4882a593Smuzhiyun      - App segment, driver will always use APP0
118*4882a593Smuzhiyun
119*4882a593SmuzhiyunReturn Value
120*4882a593Smuzhiyun============
121*4882a593Smuzhiyun
122*4882a593SmuzhiyunOn success 0 is returned, on error -1 and the ``errno`` variable is set
123*4882a593Smuzhiyunappropriately. The generic error codes are described at the
124*4882a593Smuzhiyun:ref:`Generic Error Codes <gen-errors>` chapter.
125