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