# Qualcomm Linux 마이그레이션

이 가이드는 소프트웨어를 Qualcomm^®^ Linux^®^ 1.4로 마이그레이션하는 데 도움이 됩니다. 주요 업데이트와 개선 사항을 중심으로 1.3 릴리스와 비교하여 1.4 릴리스의 동작과 관련된 변경 사항을 자세히 설명합니다. 특히 기존 소프트웨어를 최신 Qualcomm Linux 릴리스로 업데이트하려는 개발자에게 유용합니다.

Qualcomm Linux 사용이 처음이고 최신 릴리스를 사용하고 있다면 소프트웨어를 마이그레이션할 필요가 없습니다.

1.4 릴리스에서 Qualcomm Linux는 Yocto `scarthgap` 이라는 Yocto 5.0의 최신 장기 지원(LTS) 버전으로 업그레이드되었습니다. 또한 일반 버퍼 관리(GBM) 메모리 관리자 및 Weston 드라이버가 업스트림 버전으로 전환되어 1.3 이전 릴리스에서 사용된 다운스트림 버전을 대체합니다.

최신 릴리스의 새로운 기능, 향상된 기능 및 제한 사항 목록은 [*Qualcomm Linux 1.4 Release Notes*](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/ReleaseNote.html) 를 참조하세요.

## Yocto의 변경 사항

1.4 릴리스에서 Yocto의 변경 사항은 다음과 같습니다.

- Yocto 릴리스가 `kirkstone` (v4.0.22)에서 `scarthgap` (v5.0.6)으로 업그레이드되었습니다. `scarthgap` 의 기능 및 개선 사항은 [5.0(scarthgap)의 릴리스 노트](https://docs.yoctoproject.org/5.0.6/singleindex.html#release-notes-for-5-0-scarthgap) 를 참조하세요.
- GNU 컴파일러 컬렉션(GCC) 컴파일러가 v13.2로 업그레이드되었습니다. 호환성 문제를 방지하려면 사전 빌드된 애플리케이션을 최신 1.4 릴리스로 다시 컴파일하세요.

## 메모리 관리자의 변경 사항

1.4 릴리스에서는 메모리 관리를 위한 [`libgbm` package](https://git.openembedded.org/openembedded-core/tree/meta/recipes-graphics/mesa?h=scarthgap&amp;id=00a662c5e28235fb64348aab4ce9aeb5e7f95d06) 업스트림이 다운스트림 변형을 대체합니다. 이 변경 사항은 디스플레이, 그래픽, 비디오 및 카메라 모듈 전반의 메모리 형식과 GBM 기능에 영향을 미칩니다.

업스트림 GBM에서 지원되는 형식 목록은 [`mesa` repository](https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/gbm/main/gbm.h) 를 참조하세요.

## 디스플레이의 변경 사항

1.4 릴리스에서는 QCS6490 및 QCS5430 시스템온칩(SoC) 플랫폼의 디스플레이 스택이 완전한 업스트림 솔루션으로 마이그레이션되었고, 이에 따라 독점 Snapdragon^®^ 디스플레이 매니저(SDM) 백엔드가 필요하지 않게 되었습니다. QCS8275 및 QCS9075 SoC 플랫폼은 이미 업스트림 디스플레이 솔루션을 사용합니다.

이 마이그레이션으로 인해 SDM 구성 요소에 의존하는 일부 기능을 이제 기본적으로 사용할 수 없습니다. 해당 기능이 필요한 경우, 디스플레이 스택을 다운스트림 구현으로 전환하면 됩니다.

이러한 기능을 활성화하려면 다음 표의 정보를 사용하세요.

| 기능 | 1.4에서 활성화 |
| --- | --- |
| Embedded DisplayPort(eDP) 지원 | [*Qualcomm Linux Display Guide - Addendum*](https://docs.qualcomm.com/bundle/resource/topics/80-70018-18A/configure.html#enable-sdm-and-downstream-display-drivers) 의 설명대로 다운스트림 경로를 활성화하세요. |
| TypeC over DisplayPort(DP) | [*Qualcomm Linux Display Guide - Addendum*](https://docs.qualcomm.com/bundle/resource/topics/80-70018-18A/configure.html#enable-sdm-and-downstream-display-drivers) 의 설명대로 다운스트림 경로를 활성화하세요. |
| modetest 바이너리 사전 빌드 | `libdrm_2.4.120.bb` 파일에서 `install-test-programs` 옵션을 활성화하세요. 자세한 내용은 [*Qualcomm Linux Display Guide*](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-18/debug.html#generate-the-drm-mode-test-binary) 를 참조하세요. |

## 카메라의 변경 사항

1.4 릴리스에서는 버퍼 관리 유틸리티가 다운스트림 구성 요소 대신 업스트림 GBM 구성 요소를 사용합니다. 따라서 카메라 버퍼 관리를 호출하는 Qualcomm 지능형 멀티미디어(QIM) 명령어를 변경하세요.

기본 버퍼의 기본 형식은 이제 `memory:GBM` 입니다. `gst` 명령어에서 메모리 형식을 지정할 필요가 없습니다.

**파이프라인 예시**

- 1.3 릴리스의 파이프라인은 다음과 같습니다.

gst-launch-1.0 qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1,compression=ubwc ! waylandsink fullscreen=true async=true sync=false
    Copy to clipboard

- 1.4 릴리스의 파이프라인은 다음과 같습니다.

gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_1::type=preview ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! waylandsink fullscreen=true sync=false
    Copy to clipboard

플러그인의 변경 사항에 대한 자세한 내용은 [QIM SDK의 변경 사항](https://docs.qualcomm.com/doc/80-70018-150K/topic/introduction.html#qim-sdk) 을 참조하세요.

## 비디오의 변경 사항

비디오 인코딩 또는 디코딩을 위한 버퍼를 관리하기 위해 1.4 릴리스에서는 직접 메모리 액세스(DMA) 내보내기 모드(4), DMA 가져오기 모드(5) 및 메모리 맵(MMAP) 모드(2)를 지원합니다. 특정 사용 사례에 따라 적절한 모드를 선택하세요.

**예시**

카메라에서 인코딩하면 이미 DMA 버퍼가 생성됩니다. 이런 경우 다음을 수행하세요.

> 
> 
> - 인코더 입력을 DMA 가져오기 모드(5)로 설정합니다. 이 모드에서는 카메라 버퍼 파일 설명자(FD)를 직접 사용하며, 비디오 드라이버 측에서 새 버퍼를 할당하고 내용을 복사하지 않습니다.
> - 인코더 출력을 DMA 가져오기 모드(5)로 설정합니다. 이 모드를 사용하면 비디오 드라이버가 출력 버퍼를 할당합니다.

이 예시의 비디오 파이프라인은 다음과 같습니다.

gst-launch-1.0 qtiqmmfsrc ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! v4l2h264enc output-io-mode=5 capture-io-mode=4 ! h264parse ! mp4mux ! filesink location=/opt/cam_enc.mp4
    Copy to clipboard

이 파이프라인에서 `output-io-mode` 는 DMA 가져오기 모드(5)로 인코더에 대한 입력을 나타내고 `capture-io-mode` 는 DMA 내보내기 모드(4)로 인코드에 대한 출력을 나타냅니다.

## QIM SDK의 변경 사항

QIM SDK 1.4 릴리스에서는 메모리 관리자 구성 요소의 업스트림 마이그레이션으로 인해 `waylandsink`, `qtiqmmfsrc`, `v4l2h264dec` 및 `v4l2h264enc` 플러그인의 동작이 변경되었습니다. 자세한 내용은 [메모리 관리자의 변경 사항](https://docs.qualcomm.com/doc/80-70018-150K/topic/introduction.html#memory-manager) 을 참조하세요.

QIM SDK 플러그인의 변경 사항과 업스트림 GBM 정렬을 반영하려면 다음과 같이 샘플 애플리케이션을 업데이트하세요.

### waylandsink 플러그인

이전 버전의 QIM SDK는 `waylandsink` 플러그인의 다운스트림 버전을 사용했으며, 여기에는 `x,y,width,height` 좌표가 추가 인수로 포함되었습니다. 이후 릴리스에서는 업스트림 `waylandsink` 플러그인으로 전환되어 이 기능을 사용할 수 없습니다. 이제 애플리케이션은 이 기능을 위해 `qtivcomposer` 플러그인을 사용해야 합니다.

플러그인 변경 사항과 그에 따라 수행해야 하는 작업은 다음과 같습니다.

| 변경 사항 | 변경 사항 | 작업 |
| --- | --- | --- |
| 1.3 | 1.4 | 작업 |
| `x,y,width,height` 좌표가 있습니다. | `qtivcomposer` 플러그인을 통해 기능을 제공합니다. | 컴포지션에 `qtivcomposer` 플러그인을 사용합니다. |
|  |  |  |

**파이프라인 예시**

- 1.3 릴리스의 파이프라인은 다음과 같습니다.

gst-launch-1.0 -e qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<1280, 720>" sink_1::position="<590, 310>" sink_1::dimensions="<640, 360>" mixer. ! queue ! waylandsink enable-last-sample=false sync=true fullscreen=true filesrc location=/opt/mux1.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! mixer. filesrc location=/opt/mux1.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! mixer.
    Copy to clipboard

- 1.4 릴리스의 파이프라인은 다음과 같습니다.

gst-launch-1.0 -e qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<1280, 720>" sink_1::position="<590, 310>" sink_1::dimensions="<640, 360>" mixer. ! queue ! waylandsink fullscreen=true filesrc location=/opt/mux1.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mixer. filesrc location=/opt/mux1.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw, format=NV12 ! mixer.
    Copy to clipboard

### qtiqmmfsrc 플러그인

1.4 릴리스부터 `qtiqmmfsrc` 플러그인은 유니버설 대역폭 압축(UBWC) NV12의 압축 필드를 지원하지 않습니다. 대신 클라이언트는 UBWC 압축 NV12 이미지용으로 특별히 설계된 새로운 형식을 사용해야 합니다.

플러그인 변경 사항과 그에 따라 수행해야 하는 작업은 다음과 같습니다.

| 변경 사항 | 변경 사항 | 작업 |
| --- | --- | --- |
| 1.3 | 1.4 | 작업 |
| `format=NV12`<br><br><br>`compression=ubwc` | `format=NV12_Q08C` 추가됨 | <ul class="simple"><br><li><p>형식을 <code class="docutils literal notranslate"><span class="pre">format=NV12</span></code> 에서 <code class="docutils literal notranslate"><span class="pre">format=NV12_Q08C</span></code> 로 변경하세요.</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">compression=ubwc</span></code> 매개변수를 제거하세요.</p></li><br></ul> |
|  |  |  |

**파이프라인 예시**

- 1.3 릴리스의 파이프라인은 다음과 같습니다.

gst-launch-1.0 qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1,compression=ubwc ! v4l2h264enc output-io-mode=5 capture-io-mode=5 ! h264parse ! filesink location=/opt/video.h264
    Copy to clipboard

- 1.4 릴리스의 파이프라인은 다음과 같습니다.

gst-launch-1.0 -ev qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12_Q08C,width=1920,height=1080,framerate=30/1 ! queue ! v4l2h264enc output-io-mode=5 capture-io-mode=4 ! h264parse ! filesink location=/opt/video.h264
    Copy to clipboard

### v4l2h264enc 및 v4l2h264dec 플러그인

이전 릴리스에서는 GST 프레임워크가 애플리케이션 버퍼를 관리했습니다. 1.4 릴리스부터는 `v4l2` 드라이버가 내부적으로 버퍼 관리를 지원합니다.

이 향상된 기능을 드라이버에 추가하려면 다음을 수행하세요.

- `v4l2h264enc` 플러그인과 함께 카메라 소스를 사용하는 애플리케이션의 경우 파이프라인 구성을 `output-io-mode=5`/ `capture-io-mode=5` 에서 `output-io-mode=5`/ `capture-io-mode=4` 로 변경하세요.
- `v4l2h264dec` 플러그인과 함께 파일 소스를 사용하는 애플리케이션의 경우 파이프라인 구성을 `output-io-mode=5`/ `capture-io-mode=5` 에서 `output-io-mode=4`/ `capture-io-mode=4` 로 변경하세요.

플러그인 변경 사항과 그에 따라 수행해야 하는 작업은 다음과 같습니다.

| 사용 사례 | 변경 사항 | 변경 사항 | 작업 |
| --- | --- | --- | --- |
| 사용 사례 | 1.3 | 1.4 | 작업 |
| 비디오 인코딩 | `format=NV12`<br><br><br>`compression=ubwc` | `format=NV12_Q08C` 추가됨 | <ul class="simple"><br><li><p>형식을 <code class="docutils literal notranslate"><span class="pre">format=NV12</span></code> 에서 <code class="docutils literal notranslate"><span class="pre">format=NV12_Q08C</span></code> 로 변경하세요.</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">compression=ubwc</span></code> 매개변수를 제거하세요.</p></li><br></ul> |
| 비디오 인코딩 | `output-io-mode=5` 및 `capture-io-mode=5` | `output-io-mode=5` 및 `capture-io-mode=4` 로 업데이트됨 | `output-io-mode=5` 및 `capture-io-mode=4` 로 모드를 변경하세요. |
| 비디오 디코딩 | `output-io-mode=5` 및 `capture-io-mode=5` | <ul class="simple"><br><li><p>caps 및 <code class="docutils literal notranslate"><span class="pre">format=NV12</span></code> 추가됨</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">output-io-mode=4</span></code> 및 <code class="docutils literal notranslate"><span class="pre">capture-io-mode=4</span></code> 로 업데이트됨</p></li><br></ul> | <ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">video/x-raw,format=NV12</span></code> 를 추가하세요.</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">output-io-mode=4</span></code> 및 <code class="docutils literal notranslate"><span class="pre">capture-io-mode=4</span></code> 로 모드를 변경하세요.</p></li><br></ul> |
|  |  |  |  |

**파이프라인 예시**

- 1.3 릴리스의 비디오 디코더 파이프라인은 다음과 같습니다.

gst-launch-1.0 -e filesrc location=/opt/mux1.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 !  waylandsink fullscreen=true
    Copy to clipboard

- 1.4 릴리스의 비디오 디코더 파이프라인은 다음과 같습니다.

gst-launch-1.0 -e filesrc location=/opt/mux1.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw,format=NV12 ! waylandsink fullscreen=true
    Copy to clipboard

- 1.3 릴리스의 비디오 인코더 파이프라인은 다음과 같습니다.

gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw\(memory:GBM\),format=NV12,width=3840,height=2160,framerate=30/1,compression=ubwc,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=5 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux1.mp4"
    Copy to clipboard

- 1.4 릴리스의 비디오 인코더 파이프라인은 다음과 같습니다.

gst-launch-1.0 -e qtiqmmfsrc name=camsrc video_0::type=preview ! video/x-raw,format=NV12_Q08C,width=3840,height=2160,framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! queue ! v4l2h264enc capture-io-mode=4 output-io-mode=5 ! queue ! h264parse ! mp4mux ! queue ! filesink location="/opt/mux1.mp4"
    Copy to clipboard

## 다음 단계

- Qualcomm Linux를 무선(OTA) 업데이트하려면 [*Qualcomm Linux Yocto Guide*](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-27/qualcomm_linux_software_components.html#ota-update-for-qualcomm-linux) 를 참조하세요.
- Qualcomm 지능형 멀티미디어 제품(QIMP) SDK의 새로운 기능, 향상된 기능 및 제한 사항에 대해 자세히 알아보려면 [*Qualcomm Linux QIMP SDK Release Notes*](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-52/qimp_sdk_release_1_4.html) 를 참조하세요.
- 최신 릴리스의 새로운 기능, 향상된 기능 및 제한 사항에 대해 자세히 알아보려면 [*Qualcomm Linux 1.4 Release Notes*](https://docs.qualcomm.com/bundle/publicresource/topics/RNO-250403001134/ReleaseNote.html) 를 참조하세요.

Last Published: Aug 06, 2025

[Next Topic
참조](https://docs.qualcomm.com/bundle/publicresource/80-70018-150K/topics/references.md)

Source: [https://docs.qualcomm.com/doc/80-70018-150K/topic/introduction.html](https://docs.qualcomm.com/doc/80-70018-150K/topic/introduction.html)