# Build video source components

The video software stack consists of GStreamer plugins and V4L2 components.

V4L2 source components are available in the `meta-qcom-multimedia-image` or `qcom-multimedia-prop-image` image as part of the entire software build package. For more information on the procedure to sync and build the `meta-qcom-multimedia` image, see [Qualcomm Linux Build Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-80022-254/build_landing_page.html).

## Verify video software

This section provides information on the video recipe and the steps required to build the VPU driver.

The following BitBake recipe file is used to build the Adreno VPU driver in the `qcom-multimedia-prop-image`:

> 
> 
> `<meta-qcom workspace>/recipes-kernel/iris-video-module/iris-video-dlkm_git.bb`

### VPU driver build instructions - qcom-multimedia-prop-image

1. To apply code changes to the video driver, place your patch files in the following directory:

recipes-kernel/iris-video-module/iris-video-dlkm/
        Copy to clipboard

    Follow the steps to create a patch file:

> 
> 
> 1. Clone the video driver repository using the following command:
> 
> 
> git clone https://github.com/qualcomm-linux/video-driver.git
>             Copy to clipboard
>     2. Change to the cloned repository directory using the following command:
> 
> 
> cd video-driver
>             Copy to clipboard
>     3. Make the required code changes and commit the changes locally.
>     4. Create a patch file from the latest commit using the following command:
> 
> 
> git format-patch HEAD~1
>             Copy to clipboard
>     5. Open the generated patch file and add the following line:
> 
> 
> Upstream-Status: Pending
>             Copy to clipboard
>     6. Copy the patch file to the location specified in the `iris-video-dlkm` recipe.
2. Update the `SRC_URI` in the `recipes-kernel/iris-video-module/iris-video-dlkm_<version>.bb` file to include the patch files as follows:

SRC_URI = " \
            git://github.com/qualcomm-linux/video-driver.git;protocol=https;branch=video.qclinux.main \
            file://0001-video-driver-follow-v4l2_fh_add-_del-API-changes.patch \
            file://0001-video-driver-stop-playing-tricks-with-Kbuild.patch \
        "
        Copy to clipboard
3. To build the Adreno video driver, run the following commands :

kas shell meta-qcom/ci/<MACHINE>:meta-qcom/ci/qcom-distro-prop-image.yml:meta-qcom/ci/linux-qcom-6.18.yml
        bitbake iris-video-dlkm
        Copy to clipboard

Note

For various `<machine>` combinations, see [Release Notes](https://docs.qualcomm.com/doc/80-80022-300).
4. After compilation, the corresponding `iris_vpu.ko` is available at:

    `<meta-qcom workspace>\build\tmp\sysroots-components\<MACHINE>\iris-video-dlkm\usr\lib\modules\<kernel version>\updates\video\>`
5. Enter the SSH shell and transfer the compiled library to the device using the following command:

Note

You must start the SSH shell to access your Linux host computer. For instructions, see [Sign in using SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-80022-254/how_to.html#use-ssh).

mount -o rw,remount /
        Copy to clipboard
6. Change the following command according to your `<workspace-path>`, and the `<IP address of the device>`, and run the following command on the Linux host computer:

scp <meta-qcom workspace>\build\tmp\sysroots-components\<MACHINE>\iris-video-dlkm\usr\lib\modules\<kernel version>\updates\video\iris_vpu.ko root@<IP address of the device>/lib/modules/<kernel version>/updates/video/
        Copy to clipboard

Note

When prompted for a password, enter `oelinux123`.
7. To see the updated debug changes, power OFF and then power ON the device.

### VPU driver build instructions - qcom-multimedia-image

1. To apply code changes to the video driver, place your patch files in the following directory :

<meta qcom workspace>\recipes-kernel\linux\linux-qcom-<kernel version>_git.bb
        Copy to clipboard

    Follow the steps to create a patch file:

> 
> 
> 1. Clone kernel where the video driver is available:
> 
> 
> git clone https://github.com/qualcomm-linux/kernel.git
>             Copy to clipboard
>     2. Change to the cloned repository directory:
> 
> 
> cd drivers/media/platform/qcom
>             Copy to clipboard
> 
>         - QCS6490 uses: `drivers/media/platform/qcom/venus`.
>         - Dragonwing IQ-8275/Dragonwing IQ-9075 uses: `drivers/media/platform/qcom/iris`
>     3. Make the required code changes and commit the changes locally.
>     4. Create a patch file from the latest commit:
> 
> 
> git format-patch HEAD~1
>             Copy to clipboard
>     5. Open the generated patch file and add the following line:
> 
> 
> Upstream-Status: Pending
>             Copy to clipboard
>     6. Copy the patch file to the location specified in the <cite>kernel</cite> recipe.
2. Update the `SRC_URI` in the recipe `(.bb)` file to include the patch files as the following:

SRC_URI = "git://github.com/qualcomm-linux/kernel.git;${SRCBRANCH};protocol=https"
        SRC_URI += "file://0001-tools-use-basename-to-identify-file-in-gen-mach-type.patch"
        SRC_URI += "file://0001-PR_308.patch"
        Copy to clipboard
3. To build the Adreno video driver, run the following commands:

kas shell meta-qcom/ci/<MACHINE>:meta-qcom/ci/qcom-distro-image.yml:meta-qcom/ci/linux-qcom-6.18.yml
        bitbake qcom-multimedia-image
        Copy to clipboard

Note

For different `<machine>` combinations, see [Release Notes](https://docs.qualcomm.com/doc/80-80022-300).
4. Flash the `qcom-multimedia-image`. For more information, see [Qualcomm Linux Build Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-80022-254/build_landing_page.html).

## GStreamer plugins for video

The Qualcomm IM SDK includes GStreamer plugins for video decoding and encoding. Download the Qualcomm IM SDK to use the `v4l2h264dec`, `v4l2h265dec`, `v4l2h264enc`, `v4l2h265enc`, and `v4l2vp9dec` plugins.

The following table lists the GStreamer plugins and their corresponding reference links:

Table: GStreamer plugins for video

| Plug-in | Description/reference link |
| --- | --- |
| `v4l2h264dec` | [Decode the H.264 video stream](https://docs.qualcomm.com/bundle/publicresource/topics/80-80022-50/v4l2h264dec.html) |
| `v4l2h265dec` | [Decode the H.265 video stream](https://docs.qualcomm.com/bundle/publicresource/topics/80-80022-50/v4l2h265dec.html) |
| `v4l2h264enc` | [Encode the H.264 video stream](https://docs.qualcomm.com/bundle/publicresource/topics/80-80022-50/v4l2h264enc.html) |
| `v4l2h265enc` | [Encode the H.265 video stream](https://docs.qualcomm.com/bundle/publicresource/topics/80-80022-50/v4l2h265enc.html) |
| `v4l2vp9dec` | [Decode the VP9 video stream](https://docs.qualcomm.com/bundle/publicresource/topics/80-80022-50/v4l2vp9dec.html) |

For information on the steps to download and build, see [Qualcomm Intelligent Multimedia SDK (IM SDK) quickstart](https://docs.qualcomm.com/bundle/publicresource/topics/80-80022-51/qmi-sdk-qsg-landing-page.html).

## Next steps

- [Troubleshoot video](https://docs.qualcomm.com/doc/80-80022-20/topic/bring-up.html#concept-lkc-ny3-bzb)

Last Published: May 14, 2026

[Previous Topic
Video architecture](https://docs.qualcomm.com/bundle/publicresource/80-80022-20/topics/architecture.md) [Next Topic
Explore video sample applications](https://docs.qualcomm.com/bundle/publicresource/80-80022-20/topics/interfaces.md)