요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
digraph board {
rankdir=TB
n00000001 [label="{{<port0> 0 | <port1> 1} | c3-isp-core\n/dev/v4l-subdev0 | {<port2> 2 | <port3> 3 | <port4> 4 | <port5> 5}}", shape=Mrecord, style=filled, fillcolor=green]
n00000001:port3 -> n00000008:port0
n00000001:port4 -> n0000000b:port0
n00000001:port5 -> n0000000e:port0
n00000001:port2 -> n00000027
n00000008 [label="{{<port0> 0} | c3-isp-resizer0\n/dev/v4l-subdev1 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000008:port1 -> n00000016 [style=bold]
n0000000b [label="{{<port0> 0} | c3-isp-resizer1\n/dev/v4l-subdev2 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000b:port1 -> n0000001a [style=bold]
n0000000e [label="{{<port0> 0} | c3-isp-resizer2\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000e:port1 -> n00000023 [style=bold]
n00000011 [label="{{<port0> 0} | c3-mipi-adapter\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000011:port1 -> n00000001:port0 [style=bold]
n00000016 [label="c3-isp-cap0\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
n0000001a [label="c3-isp-cap1\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
n0000001e [label="{{<port0> 0} | c3-mipi-csi2\n/dev/v4l-subdev5 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000001e:port1 -> n00000011:port0 [style=bold]
n00000023 [label="c3-isp-cap2\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
n00000027 [label="c3-isp-stats\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
n0000002b [label="c3-isp-params\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
n0000002b -> n00000001:port1
n0000003f [label="{{} | imx290 2-001a\n/dev/v4l-subdev6 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n0000003f:port0 -> n0000001e:port0 [style=bold]
}
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
센서 입력, ISP 처리와 캡처 출력
1-26이 DOT 그래프는 C3 ISP의 V4L2 미디어 토폴로지를 위에서 아래로(`rankdir=TB`) 배치합니다. 녹색 `Mrecord` 노드는 포트를 가진 서브디바이스이고, 노란색 상자는 사용자 공간에서 접근하는 비디오 장치입니다. 포트 번호는 각 링크의 정확한 소스·싱크 패드를 나타내며 굵은 간선은 활성화된 미디어 링크를 표시합니다.
센서 `imx290 2-001a`의 포트 0은 `c3-mipi-csi2` 포트 0에 연결되고, CSI-2 포트 1은 `c3-mipi-adapter` 포트 0으로 이어집니다. 어댑터 포트 1은 `c3-isp-core` 입력 포트 0에 연결되어 센서 영상이 ISP 코어에 도달합니다. 이 세 링크는 모두 `style=bold`입니다.
`c3-isp-params`(`/dev/video4`)는 ISP 코어 포트 1로 처리 매개변수를 공급합니다. 코어 포트 2는 `c3-isp-stats`(`/dev/video3`)로 통계 데이터를 내보냅니다. 영상 출력은 코어 포트 3·4·5에서 각각 `c3-isp-resizer0`·`1`·`2`의 포트 0으로 분기됩니다.
세 리사이저의 포트 1은 각각 `c3-isp-cap0`(`/dev/video0`), `c3-isp-cap1`(`/dev/video1`), `c3-isp-cap2`(`/dev/video2`)로 굵게 연결됩니다. 따라서 하나의 센서 입력을 ISP 코어가 처리한 뒤 세 개의 독립 크기 조정·캡처 경로로 내보내고, 별도의 통계 출력과 매개변수 입력을 함께 제공하는 구조입니다.
센서에서 CSI-2와 어댑터를 거쳐 ISP 코어에 도달한 뒤 세 캡처 장치로 분기됩니다.
DOT에 선언된 모든 서브디바이스와 비디오 노드를 정리합니다.
포트 좌표와 굵은 링크 여부를 원문 그대로 대응합니다.
digraph board {
rankdir=TB
n00000001 [label="{{<port0> 0 | <port1> 1} | c3-isp-core\n/dev/v4l-subdev0 | {<port2> 2 | <port3> 3 | <port4> 4 | <port5> 5}}", shape=Mrecord, style=filled, fillcolor=green]
n00000001:port3 -> n00000008:port0
n00000001:port4 -> n0000000b:port0
n00000001:port5 -> n0000000e:port0
n00000001:port2 -> n00000027
n00000008 [label="{{<port0> 0} | c3-isp-resizer0\n/dev/v4l-subdev1 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000008:port1 -> n00000016 [style=bold]
n0000000b [label="{{<port0> 0} | c3-isp-resizer1\n/dev/v4l-subdev2 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000b:port1 -> n0000001a [style=bold]
n0000000e [label="{{<port0> 0} | c3-isp-resizer2\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000e:port1 -> n00000023 [style=bold]
n00000011 [label="{{<port0> 0} | c3-mipi-adapter\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000011:port1 -> n00000001:port0 [style=bold]
n00000016 [label="c3-isp-cap0\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
n0000001a [label="c3-isp-cap1\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
n0000001e [label="{{<port0> 0} | c3-mipi-csi2\n/dev/v4l-subdev5 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000001e:port1 -> n00000011:port0 [style=bold]
n00000023 [label="c3-isp-cap2\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
n00000027 [label="c3-isp-stats\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
n0000002b [label="c3-isp-params\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
n0000002b -> n00000001:port1
n0000003f [label="{{} | imx290 2-001a\n/dev/v4l-subdev6 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n0000003f:port0 -> n0000001e:port0 [style=bold]
}
요약·해설
c3-isp.dot:1-26IMX290 센서에서 C3 MIPI·ISP 코어를 거쳐 세 캡처 출력, 통계 출력과 매개변수 입력으로 이어지는 V4L2 미디어 토폴로지를 설명합니다.