요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
# SPDX-License-Identifier: GPL-2.0
digraph board {
rankdir=TB
n00000001 [label="{{} | Sensor A\n/dev/v4l-subdev0 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n00000001:port0 -> n00000005:port0 [style=bold]
n00000001:port0 -> n0000000b [style=bold]
n00000001 -> n00000002
n00000002 [label="{{} | Lens A\n/dev/v4l-subdev5 | {<port0>}}", shape=Mrecord, style=filled, fillcolor=green]
n00000003 [label="{{} | Sensor B\n/dev/v4l-subdev1 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n00000003:port0 -> n00000008:port0 [style=bold]
n00000003:port0 -> n0000000f [style=bold]
n00000003 -> n00000004
n00000004 [label="{{} | Lens B\n/dev/v4l-subdev6 | {<port0>}}", shape=Mrecord, style=filled, fillcolor=green]
n00000005 [label="{{<port0> 0} | Debayer A\n/dev/v4l-subdev2 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000005:port1 -> n00000015:port0
n00000008 [label="{{<port0> 0} | Debayer B\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000008:port1 -> n00000015:port0 [style=dashed]
n0000000b [label="Raw Capture 0\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
n0000000f [label="Raw Capture 1\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
n00000013 [label="{{} | RGB/YUV Input\n/dev/v4l-subdev4 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n00000013:port0 -> n00000015:port0 [style=dashed]
n00000015 [label="{{<port0> 0} | Scaler\n/dev/v4l-subdev5 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000015:port1 -> n00000018 [style=bold]
n00000018 [label="RGB/YUV Capture\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
}
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
두 센서의 RAW·Debayer 경로와 RGB/YUV 스케일링
1-26이 Graphviz DOT 원문은 VIMC(Virtual Media Controller)의 V4L2 미디어 토폴로지를 나타냅니다. 가상 Sensor A와 Sensor B는 각각 Lens A와 Lens B에 연관되고, 센서 출력은 RAW 캡처 노드로 직접 전달되거나 Debayer A/B를 거쳐 RGB/YUV 처리 경로로 들어갑니다.
Sensor A는 `Raw Capture 0` `/dev/video0`과 `Debayer A` `/dev/v4l-subdev2`로, Sensor B는 `Raw Capture 1` `/dev/video1`과 `Debayer B` `/dev/v4l-subdev3`으로 연결됩니다. Debayer 출력 또는 `RGB/YUV Input` `/dev/v4l-subdev4`는 `Scaler` 입력 port0에 도달하고, Scaler 출력 port1은 `RGB/YUV Capture` `/dev/video2`로 이어집니다.
원문은 굵은 선 5개, 점선 2개, 스타일 속성이 없는 일반 실선 3개를 사용합니다. 센서에서 렌즈로 향하는 두 일반 실선은 패드 데이터 링크가 아닌 엔티티 연관 관계로 그려져 있습니다. 또한 원문은 Lens A와 Scaler의 장치 경로를 모두 `/dev/v4l-subdev5`로 표기하므로, 이 페이지는 값을 임의 수정하지 않고 그대로 보존합니다.
각 센서는 RAW 캡처와 Debayer 경로를 제공하고, 세 RGB/YUV 후보 입력 중 하나가 Scaler를 거쳐 최종 캡처로 이어집니다.
두 가상 센서의 렌즈 연관, Debayer 입력과 RAW 직접 캡처를 함께 정리합니다.
Scaler port0으로 들어오는 세 경로와 port1의 고정 출력입니다.
원문의 여덟 초록색 서브디바이스와 세 노란색 비디오 노드입니다.
26줄 DOT 원문에서 전용 감사가 검증하는 구조입니다.
각 엔티티와 링크가 나타나는 범위를 원문 순서대로 정리합니다.
아래 코드는 Linux v6.18.37 원문 1-26줄 전체입니다. 표시 안정성을 위해 탭만 여덟 칸으로 정규화했으며 중복 장치 경로를 포함한 노드 ID, 엔티티명, 패드 번호, 링크 방향과 스타일은 그대로 보존했습니다.
# SPDX-License-Identifier: GPL-2.0
digraph board {
rankdir=TB
n00000001 [label="{{} | Sensor A\n/dev/v4l-subdev0 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n00000001:port0 -> n00000005:port0 [style=bold]
n00000001:port0 -> n0000000b [style=bold]
n00000001 -> n00000002
n00000002 [label="{{} | Lens A\n/dev/v4l-subdev5 | {<port0>}}", shape=Mrecord, style=filled, fillcolor=green]
n00000003 [label="{{} | Sensor B\n/dev/v4l-subdev1 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n00000003:port0 -> n00000008:port0 [style=bold]
n00000003:port0 -> n0000000f [style=bold]
n00000003 -> n00000004
n00000004 [label="{{} | Lens B\n/dev/v4l-subdev6 | {<port0>}}", shape=Mrecord, style=filled, fillcolor=green]
n00000005 [label="{{<port0> 0} | Debayer A\n/dev/v4l-subdev2 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000005:port1 -> n00000015:port0
n00000008 [label="{{<port0> 0} | Debayer B\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000008:port1 -> n00000015:port0 [style=dashed]
n0000000b [label="Raw Capture 0\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
n0000000f [label="Raw Capture 1\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
n00000013 [label="{{} | RGB/YUV Input\n/dev/v4l-subdev4 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n00000013:port0 -> n00000015:port0 [style=dashed]
n00000015 [label="{{<port0> 0} | Scaler\n/dev/v4l-subdev5 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000015:port1 -> n00000018 [style=bold]
n00000018 [label="RGB/YUV Capture\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
}
요약·해설
vimc.dot:1-26VIMC의 두 가상 센서가 RAW 직접 캡처와 Debayer 경로를 제공하고, Debayer 또는 RGB/YUV 입력이 Scaler를 거쳐 최종 캡처로 이어지는 미디어 토폴로지를 해설합니다.
센서별 RAW 경로와 공통 RGB/YUV 스케일링 경로를 구분합니다.