← Documents Documentation/userspace-api/media/dvb/dvb-frontend-parameters.rst GitHub 원문 ↗

Linux 6.18.37 · Userspace API / Media / DVB / Frontend

frontend parameters

레거시 frontend union과 시스템별 QPSK·QAM·VSB·OFDM 매개변수를 설명합니다.

Source pathDocumentation/userspace-api/media/dvb/dvb-frontend-parameters.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

dvb-frontend-parameters.rst:1-119

고정 크기 union인 dvb_frontend_parameters는 ABI 확장에 한계가 있어 새 애플리케이션은 DVBv5 property API를 사용해야 합니다. 이 문서는 레거시 시스템별 구조체와 주파수 단위를 보존해 설명합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2
3 .. c:type:: dvb_frontend_parameters
4
5 *******************
6 frontend parameters
7 *******************
8
9 The kind of parameters passed to the frontend device for tuning depend
10 on the kind of hardware you are using.
11
12 The struct ``dvb_frontend_parameters`` uses a union with specific
13 per-system parameters. However, as newer delivery systems required more
14 data, the structure size weren't enough to fit, and just extending its
15 size would break the existing applications. So, those parameters were
16 replaced by the usage of
17 :ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>`
18 ioctl's. The new API is flexible enough to add new parameters to
19 existing delivery systems, and to add newer delivery systems.
20
21 So, newer applications should use
22 :ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>`
23 instead, in order to be able to support the newer System Delivery like
24 DVB-S2, DVB-T2, DVB-C2, ISDB, etc.
25
26 All kinds of parameters are combined as a union in the
27 ``dvb_frontend_parameters`` structure:
28
29
30 .. code-block:: c
31
32 struct dvb_frontend_parameters {
33 uint32_t frequency; /* (absolute) frequency in Hz for QAM/OFDM */
34 /* intermediate frequency in kHz for QPSK */
35 fe_spectral_inversion_t inversion;
36 union {
37 struct dvb_qpsk_parameters qpsk;
38 struct dvb_qam_parameters qam;
39 struct dvb_ofdm_parameters ofdm;
40 struct dvb_vsb_parameters vsb;
41 } u;
42 };
43
44 In the case of QPSK frontends the ``frequency`` field specifies the
45 intermediate frequency, i.e. the offset which is effectively added to
46 the local oscillator frequency (LOF) of the LNB. The intermediate
47 frequency has to be specified in units of kHz. For QAM and OFDM
48 frontends the ``frequency`` specifies the absolute frequency and is
49 given in Hz.
50
51
52 .. c:type:: dvb_qpsk_parameters
53
54 QPSK parameters
55 ===============
56
57 For satellite QPSK frontends you have to use the ``dvb_qpsk_parameters``
58 structure:
59
60
61 .. code-block:: c
62
63 struct dvb_qpsk_parameters {
64 uint32_t symbol_rate; /* symbol rate in Symbols per second */
65 fe_code_rate_t fec_inner; /* forward error correction (see above) */
66 };
67
68
69 .. c:type:: dvb_qam_parameters
70
71 QAM parameters
72 ==============
73
74 for cable QAM frontend you use the ``dvb_qam_parameters`` structure:
75
76
77 .. code-block:: c
78
79 struct dvb_qam_parameters {
80 uint32_t symbol_rate; /* symbol rate in Symbols per second */
81 fe_code_rate_t fec_inner; /* forward error correction (see above) */
82 fe_modulation_t modulation; /* modulation type (see above) */
83 };
84
85
86 .. c:type:: dvb_vsb_parameters
87
88 VSB parameters
89 ==============
90
91 ATSC frontends are supported by the ``dvb_vsb_parameters`` structure:
92
93
94 .. code-block:: c
95
96 struct dvb_vsb_parameters {
97 fe_modulation_t modulation; /* modulation type (see above) */
98 };
99
100
101 .. c:type:: dvb_ofdm_parameters
102
103 OFDM parameters
104 ===============
105
106 DVB-T frontends are supported by the ``dvb_ofdm_parameters`` structure:
107
108
109 .. code-block:: c
110
111 struct dvb_ofdm_parameters {
112 fe_bandwidth_t bandwidth;
113 fe_code_rate_t code_rate_HP; /* high priority stream code rate */
114 fe_code_rate_t code_rate_LP; /* low priority stream code rate */
115 fe_modulation_t constellation; /* modulation type (see above) */
116 fe_transmit_mode_t transmission_mode;
117 fe_guard_interval_t guard_interval;
118 fe_hierarchy_t hierarchy_information;
119 };
120

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

하드웨어별 매개변수와 새 property API

1-27

이 문서는 GFDL-1.1-no-invariants-or-later 라이선스를 따르며 C 자료형 `dvb_frontend_parameters`를 설명합니다.

튜닝을 위해 frontend 장치에 전달하는 매개변수 종류는 사용하는 하드웨어에 따라 달라집니다.

기존 `struct dvb_frontend_parameters`는 전송 시스템별 구조체를 union으로 포함합니다. 그러나 새 delivery system이 더 많은 데이터를 요구하면서 기존 구조체 크기로는 부족해졌고, 크기를 단순 확장하면 기존 애플리케이션의 ABI가 깨집니다.

그래서 이 매개변수들은 `FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>` ioctl 사용으로 대체되었습니다. 새 API는 기존 delivery system에 속성을 추가하거나 새로운 delivery system을 도입할 수 있을 만큼 유연합니다.

DVB-S2, DVB-T2, DVB-C2, ISDB 같은 새 시스템을 지원하려는 애플리케이션은 property API를 사용해야 합니다.

Frontend API 전환 배경
기존 dvb_frontend_parameters union 사용새 delivery system의 데이터 증가구조체 확장 시 기존 ABI 손상 위험FE_GET_PROPERTY/FE_SET_PROPERTY로 전환속성과 delivery system을 유연하게 확장

고정 크기 union의 ABI를 유지하면서 새 전송 시스템을 지원합니다.

.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later

.. c:type:: dvb_frontend_parameters

*******************
frontend parameters
*******************

The kind of parameters passed to the frontend device for tuning depend
on the kind of hardware you are using.

The struct ``dvb_frontend_parameters`` uses a union with specific
per-system parameters. However, as newer delivery systems required more
data, the structure size weren't enough to fit, and just extending its
size would break the existing applications. So, those parameters were
replaced by the usage of
:ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>`
ioctl's. The new API is flexible enough to add new parameters to
existing delivery systems, and to add newer delivery systems.

So, newer applications should use
:ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>`
instead, in order to be able to support the newer System Delivery like
DVB-S2, DVB-T2, DVB-C2, ISDB, etc.

All kinds of parameters are combined as a union in the
``dvb_frontend_parameters`` structure:

공통 구조체와 주파수 단위

28-49

`dvb_frontend_parameters`는 `frequency`, spectral `inversion`, 그리고 QPSK·QAM·OFDM·VSB별 구조체를 담는 union `u`로 구성됩니다.

QPSK frontend에서 `frequency`는 LNB의 local oscillator frequency(LOF)에 실질적으로 더해지는 offset, 즉 intermediate frequency를 뜻하며 kHz 단위로 지정합니다.

QAM과 OFDM frontend에서는 `frequency`가 절대 주파수를 뜻하며 Hz 단위로 지정합니다.

dvb_frontend_parameters 구성
필드형식 또는 의미
frequencyQPSK는 중간 주파수(kHz), QAM/OFDM은 절대 주파수(Hz)
inversionfe_spectral_inversion_t 형식의 spectral inversion
u.qpskstruct dvb_qpsk_parameters
u.qamstruct dvb_qam_parameters
u.ofdmstruct dvb_ofdm_parameters
u.vsbstruct dvb_vsb_parameters

공통 필드와 시스템별 union을 정리합니다.



.. code-block:: c

    struct dvb_frontend_parameters {
	uint32_t frequency;     /* (absolute) frequency in Hz for QAM/OFDM */
		    /* intermediate frequency in kHz for QPSK */
	fe_spectral_inversion_t inversion;
	union {
	    struct dvb_qpsk_parameters qpsk;
	    struct dvb_qam_parameters  qam;
	    struct dvb_ofdm_parameters ofdm;
	    struct dvb_vsb_parameters  vsb;
	} u;
    };

In the case of QPSK frontends the ``frequency`` field specifies the
intermediate frequency, i.e. the offset which is effectively added to
the local oscillator frequency (LOF) of the LNB. The intermediate
frequency has to be specified in units of kHz. For QAM and OFDM
frontends the ``frequency`` specifies the absolute frequency and is
given in Hz.

QPSK 매개변수

50-67

위성 QPSK frontend는 `dvb_qpsk_parameters` 구조체를 사용합니다.

`symbol_rate`는 초당 symbol 수이고, `fec_inner`는 forward error correction 설정입니다.

dvb_qpsk_parameters
필드의미
symbol_rateSymbols per second 단위의 symbol rate
fec_innerfe_code_rate_t 형식의 forward error correction

위성 QPSK 튜닝 필드입니다.



.. c:type:: dvb_qpsk_parameters

QPSK parameters
===============

For satellite QPSK frontends you have to use the ``dvb_qpsk_parameters``
structure:


.. code-block:: c

     struct dvb_qpsk_parameters {
	 uint32_t        symbol_rate;  /* symbol rate in Symbols per second */
	 fe_code_rate_t  fec_inner;    /* forward error correction (see above) */
     };

QAM 매개변수

68-84

케이블 QAM frontend는 `dvb_qam_parameters` 구조체를 사용합니다.

구조체는 `symbol_rate`, 내부 FEC인 `fec_inner`, 변조 형식인 `modulation`을 포함합니다.

dvb_qam_parameters
필드의미
symbol_rateSymbols per second 단위의 symbol rate
fec_innerfe_code_rate_t 형식의 forward error correction
modulationfe_modulation_t 형식의 변조 방식

케이블 QAM 튜닝 필드입니다.


.. c:type:: dvb_qam_parameters

QAM parameters
==============

for cable QAM frontend you use the ``dvb_qam_parameters`` structure:


.. code-block:: c

     struct dvb_qam_parameters {
	 uint32_t         symbol_rate; /* symbol rate in Symbols per second */
	 fe_code_rate_t   fec_inner;   /* forward error correction (see above) */
	 fe_modulation_t  modulation;  /* modulation type (see above) */
     };

VSB 매개변수

85-99

ATSC frontend는 `dvb_vsb_parameters` 구조체로 지원합니다.

이 구조체는 `fe_modulation_t` 형식의 `modulation` 필드 하나로 변조 방식을 지정합니다.

dvb_vsb_parameters
필드의미
modulationfe_modulation_t 형식의 변조 방식

ATSC VSB 튜닝 필드입니다.


.. c:type:: dvb_vsb_parameters

VSB parameters
==============

ATSC frontends are supported by the ``dvb_vsb_parameters`` structure:


.. code-block:: c

    struct dvb_vsb_parameters {
	fe_modulation_t modulation; /* modulation type (see above) */
    };

OFDM 매개변수

100-119

DVB-T frontend는 `dvb_ofdm_parameters` 구조체로 지원합니다.

이 구조체는 대역폭, high/low priority stream의 code rate, constellation, transmission mode, guard interval, hierarchy 정보를 포함합니다.

dvb_ofdm_parameters
필드의미
bandwidthfe_bandwidth_t 형식의 채널 대역폭
code_rate_HPhigh priority stream code rate
code_rate_LPlow priority stream code rate
constellationfe_modulation_t 형식의 변조 방식
transmission_modefe_transmit_mode_t 형식의 전송 모드
guard_intervalfe_guard_interval_t 형식의 guard interval
hierarchy_informationfe_hierarchy_t 형식의 hierarchy 정보

DVB-T OFDM 튜닝 필드입니다.


.. c:type:: dvb_ofdm_parameters

OFDM parameters
===============

DVB-T frontends are supported by the ``dvb_ofdm_parameters`` structure:


.. code-block:: c

     struct dvb_ofdm_parameters {
	 fe_bandwidth_t      bandwidth;
	 fe_code_rate_t      code_rate_HP;  /* high priority stream code rate */
	 fe_code_rate_t      code_rate_LP;  /* low priority stream code rate */
	 fe_modulation_t     constellation; /* modulation type (see above) */
	 fe_transmit_mode_t  transmission_mode;
	 fe_guard_interval_t guard_interval;
	 fe_hierarchy_t      hierarchy_information;
     };