요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
.. c:namespace:: V4L
.. _VIDIOC_G_JPEGCOMP:
******************************************
ioctl VIDIOC_G_JPEGCOMP, VIDIOC_S_JPEGCOMP
******************************************
Name
====
VIDIOC_G_JPEGCOMP - VIDIOC_S_JPEGCOMP
Synopsis
========
.. c:macro:: VIDIOC_G_JPEGCOMP
``int ioctl(int fd, VIDIOC_G_JPEGCOMP, v4l2_jpegcompression *argp)``
.. c:macro:: VIDIOC_S_JPEGCOMP
``int ioctl(int fd, VIDIOC_S_JPEGCOMP, const v4l2_jpegcompression *argp)``
Arguments
=========
``fd``
File descriptor returned by :c:func:`open()`.
``argp``
Pointer to struct :c:type:`v4l2_jpegcompression`.
Description
===========
These ioctls are **deprecated**. New drivers and applications should use
:ref:`JPEG class controls <jpeg-controls>` for image quality and JPEG
markers control.
[to do]
Ronald Bultje elaborates:
APP is some application-specific information. The application can set it
itself, and it'll be stored in the JPEG-encoded fields (eg; interlacing
information for in an AVI or so). COM is the same, but it's comments,
like 'encoded by me' or so.
jpeg_markers describes whether the huffman tables, quantization tables
and the restart interval information (all JPEG-specific stuff) should be
stored in the JPEG-encoded fields. These define how the JPEG field is
encoded. If you omit them, applications assume you've used standard
encoding. You usually do want to add them.
.. tabularcolumns:: |p{1.2cm}|p{3.0cm}|p{13.1cm}|
.. c:type:: v4l2_jpegcompression
.. flat-table:: struct v4l2_jpegcompression
:header-rows: 0
:stub-columns: 0
:widths: 1 1 2
* - int
- ``quality``
- Deprecated. If
:ref:`V4L2_CID_JPEG_COMPRESSION_QUALITY <jpeg-quality-control>`
control is exposed by a driver applications should use it instead
and ignore this field.
* - int
- ``APPn``
-
* - int
- ``APP_len``
-
* - char
- ``APP_data``\ [60]
-
* - int
- ``COM_len``
-
* - char
- ``COM_data``\ [60]
-
* - __u32
- ``jpeg_markers``
- See :ref:`jpeg-markers`. Deprecated. If
:ref:`V4L2_CID_JPEG_ACTIVE_MARKER <jpeg-active-marker-control>`
control is exposed by a driver applications should use it instead
and ignore this field.
.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.5cm}|
.. _jpeg-markers:
.. flat-table:: JPEG Markers Flags
:header-rows: 0
:stub-columns: 0
:widths: 3 1 4
* - ``V4L2_JPEG_MARKER_DHT``
- (1<<3)
- Define Huffman Tables
* - ``V4L2_JPEG_MARKER_DQT``
- (1<<4)
- Define Quantization Tables
* - ``V4L2_JPEG_MARKER_DRI``
- (1<<5)
- Define Restart Interval
* - ``V4L2_JPEG_MARKER_COM``
- (1<<6)
- Comment segment
* - ``V4L2_JPEG_MARKER_APP``
- (1<<7)
- App segment, driver will always use APP0
Return Value
============
On success 0 is returned, on error -1 and the ``errno`` variable is set
appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
호출 형식과 폐기 상태
1-34`VIDIOC_G_JPEGCOMP`와 `VIDIOC_S_JPEGCOMP`는 `v4l2_jpegcompression` 구조체로 JPEG 압축 설정을 조회·설정하는 옛 ioctl입니다. 두 명령은 폐기 예정입니다.
새 드라이버와 애플리케이션은 영상 품질과 JPEG marker를 제어할 때 JPEG class controls를 사용해야 합니다. 조회는 수정 가능한 포인터, 설정은 `const v4l2_jpegcompression *argp`를 받습니다.
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
.. c:namespace:: V4L
.. _VIDIOC_G_JPEGCOMP:
******************************************
ioctl VIDIOC_G_JPEGCOMP, VIDIOC_S_JPEGCOMP
******************************************
Name
====
VIDIOC_G_JPEGCOMP - VIDIOC_S_JPEGCOMP
Synopsis
========
.. c:macro:: VIDIOC_G_JPEGCOMP
``int ioctl(int fd, VIDIOC_G_JPEGCOMP, v4l2_jpegcompression *argp)``
.. c:macro:: VIDIOC_S_JPEGCOMP
``int ioctl(int fd, VIDIOC_S_JPEGCOMP, const v4l2_jpegcompression *argp)``
Arguments
=========
``fd``
File descriptor returned by :c:func:`open()`.
``argp``
Pointer to struct :c:type:`v4l2_jpegcompression`.
APP·COM과 인코딩 marker
35-56원문에는 미완성 표식 `[to do]`가 남아 있으며 이어지는 설명은 Ronald Bultje의 해설입니다. APP segment는 AVI의 interlacing 정보 같은 애플리케이션 전용 정보를 담고, 애플리케이션이 직접 설정해 JPEG 인코딩 필드에 저장할 수 있습니다.
COM segment는 `encoded by me`와 같은 주석을 저장합니다. `jpeg_markers`는 Huffman table, quantization table, restart interval 정보를 JPEG 데이터 안에 포함할지 결정합니다.
이 marker들은 JPEG가 어떻게 인코딩됐는지 정의합니다. 생략하면 애플리케이션은 표준 인코딩을 사용했다고 가정하며, 일반적으로는 marker를 포함하는 편이 좋습니다.
Description
===========
These ioctls are **deprecated**. New drivers and applications should use
:ref:`JPEG class controls <jpeg-controls>` for image quality and JPEG
markers control.
[to do]
Ronald Bultje elaborates:
APP is some application-specific information. The application can set it
itself, and it'll be stored in the JPEG-encoded fields (eg; interlacing
information for in an AVI or so). COM is the same, but it's comments,
like 'encoded by me' or so.
jpeg_markers describes whether the huffman tables, quantization tables
and the restart interval information (all JPEG-specific stuff) should be
stored in the JPEG-encoded fields. These define how the JPEG field is
encoded. If you omit them, applications assume you've used standard
encoding. You usually do want to add them.
v4l2_jpegcompression과 marker flag
57-118legacy 품질, APP·COM 데이터와 marker 선택을 담습니다.
JPEG bitstream에 포함할 marker segment를 선택합니다.
드라이버가 새 control을 노출하면 legacy 필드를 사용하지 않습니다.
.. tabularcolumns:: |p{1.2cm}|p{3.0cm}|p{13.1cm}|
.. c:type:: v4l2_jpegcompression
.. flat-table:: struct v4l2_jpegcompression
:header-rows: 0
:stub-columns: 0
:widths: 1 1 2
* - int
- ``quality``
- Deprecated. If
:ref:`V4L2_CID_JPEG_COMPRESSION_QUALITY <jpeg-quality-control>`
control is exposed by a driver applications should use it instead
and ignore this field.
* - int
- ``APPn``
-
* - int
- ``APP_len``
-
* - char
- ``APP_data``\ [60]
-
* - int
- ``COM_len``
-
* - char
- ``COM_data``\ [60]
-
* - __u32
- ``jpeg_markers``
- See :ref:`jpeg-markers`. Deprecated. If
:ref:`V4L2_CID_JPEG_ACTIVE_MARKER <jpeg-active-marker-control>`
control is exposed by a driver applications should use it instead
and ignore this field.
.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.5cm}|
.. _jpeg-markers:
.. flat-table:: JPEG Markers Flags
:header-rows: 0
:stub-columns: 0
:widths: 3 1 4
* - ``V4L2_JPEG_MARKER_DHT``
- (1<<3)
- Define Huffman Tables
* - ``V4L2_JPEG_MARKER_DQT``
- (1<<4)
- Define Quantization Tables
* - ``V4L2_JPEG_MARKER_DRI``
- (1<<5)
- Define Restart Interval
* - ``V4L2_JPEG_MARKER_COM``
- (1<<6)
- Comment segment
* - ``V4L2_JPEG_MARKER_APP``
- (1<<7)
- App segment, driver will always use APP0
반환값
119-124성공하면 0을 반환합니다. 오류가 발생하면 -1을 반환하고 `errno`를 적절히 설정하며, 이 문서는 별도 전용 오류를 열거하지 않고 Generic Error Codes 장을 따릅니다.
Return Value
============
On success 0 is returned, on error -1 and the ``errno`` variable is set
appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter.
요약·해설
vidioc-g-jpegcomp.rst:1-124legacy JPEG 압축 설정과 marker flag를 다루며 새 코드는 JPEG class control을 사용해야 합니다.