# 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 Compiler Collection（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（system-on-chip）プラットフォームのディスプレイ・スタックが完全にアップストリームソリューションへと移行され、独自の 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) の説明に従い、ダウンストリームパスを有効にします。 |
| モードテスト・バイナリのプリビルド | `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 Intelligent Multimedia（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-150J/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-150J/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 Intelligent Multimedia Product（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: Sep 17, 2025

[Next Topic
参考資料](https://docs.qualcomm.com/bundle/publicresource/80-70018-150J/topics/references.md)

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