728x90
반응형
Chapter 14. Zero-copy Pipelines
이 섹션에서는 GStreamer 파이프라인을 사용하여 zero-copy 작업에 접근한다. zero-copy 지원은 CPU가 하나의 요소에서 생성된 데이터를 사용하지만 어떤 유형의 변환도 요구하지 않는 작업니다.
14.1. Pushing buffers (버퍼 밀어 넣기)
zero-copy 파이프라인 작업으로 버퍼를 사용하는 한 가지 방법은 io-mode와 같은 속성을 사용하는 것이다. 이 프로세스는 비디오 처리 파이프라인의 실행 속도를 향상 시키는 데 매우 유용할 수 있다. 이러한 유형 중 일부는 아래에서 볼 수 있다 :
14.1.1. Dmabuf
dmabuf는 아래와 같이 zero-copy 파이프라인을 수행하기 위해 하드웨어 DMA 버퍼를 사용한다 :
$ gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=300 io-mode=dmabuf ! \
'video/x-raw,format=(string)NV12,width=1920,height=1080,framerate=(fraction)30/1' ! \
queue ! v4l2h264enc output-io-mode=dmabuf-import ! avimux ! filesink location=test.avi
정보
이 파이프라인에서 RAW 형식은 io-mode 속성에 의해 저장된 다음 H.264 인코딩 프로세스에서 추가적으로 사용된다.
14.1.2. MMAP
MMAP은 zero-copy 절차를 수행할 수 있는 Kernel에서 제공하는 메모리 할당 프로세스이다. 한 가지 사용 예제가 아래에 나와 있다 :
$ gst-launch-1.0 v4l2src io-mode=2 device=/dev/video0 do-timestamp=true ! \
'video/x-raw, width=1280, height=720, framerate=30/1, format=UYVY' ! autoconvert ! \
'video/x-raw, width=1280, height=720, framerate=30/1, format=I420' ! autovideosink sync=false
14.2. CPU performance (CPU 성능)
위에서 설명한 파이프라인에서 버퍼 사용 유형별로 CPU 사용량을 비교하면 아래 표와 같이 zero-copy를 적용한 경우 CPU 사용량이 줄어드는 것을 확인할 수 있다 :
Type of encode | Average CPU usage |
Direct encode | 102% |
Encode with Dmabuf (dmabuf를 사용한 인코딩) | 15% |
Encode with MMAP (MMAP를 사용한 인코딩) | 70% |
따라서 이러한 파이프라인에서 CPU 사용량이 평균 87% 감소하는 것을 볼 수 있다.
정보
위의 표에 설명된 테스트에서 사용된 보드는 i.MX 8QuadXPlus MEK B0이었고, CPU 사용량은 top 명령으로 측정되었다. 하지만 다른 보드는 파이프라인에 대해 다른 결과를 표시할 수 있다.
728x90
반응형
'NXP i.MX SoC Family > i.MX 8 GStreamer User Guide' 카테고리의 다른 글
i.MX 8 GStreamer User Guide - Debug Tools (0) | 2022.04.22 |
---|---|
i.MX 8 GStreamer User Guide - Video Scaling and Rotation (0) | 2022.04.22 |
i.MX 8 GStreamer User Guide - Video Composition (0) | 2022.04.22 |
i.MX 8 GStreamer User Guide - Multi-Display Examples (0) | 2022.04.20 |
i.MX 8 GStreamer User Guide - Video Streaming (0) | 2022.04.20 |