# Software

Source: [https://docs.qualcomm.com/doc/80-70014-20/topic/software.html](https://docs.qualcomm.com/doc/80-70014-20/topic/software.html)

The video software modules are compiled as part of the entire software build package, and
            the corresponding binaries are available in the `meta-qcom-multimedia`
            image. For more information on the steps to sync and build the
                `meta-qcom-multimedia` image, see [Qualcomm Linux Build Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70014-254/introduction.html). Information
            related to the video software, V4L2 build instructions, and the GStreamer plugins is
            provided here.

## V4L2 for video

The following is the information related to the source tree and build instructions
                for the VPU driver, and the commands that help push the video firmware.

**Source tree**

The video software modules include the Adreno VPU driver, the video device tree, and
                the firmware binary.
- Adreno VPU driver BitBake recipe file
| Product | VPU driver BitBake recipe file path |
    | --- | --- |
    | QCS6490 | &lt;workspace-path&gt;/layers/meta-qcom-hwe/recipes-multimedia/video/videodlkm\_1.0.bb |
- Video device tree BitBake recipe file: The video device tree node is a part
                        of the root device tree file.
| Product | Device tree BitBake recipe file path |
    | --- | --- |
    | QCS6490 | &lt;workspace-path&gt;/layers/meta-qcom-hwe/recipes-multimedia/video<br>                                                  /videodtb\_1.0.bb |

**VPU driver build instructions**

Use `devtool` to add the debug changes and compile the VPU driver
                    (`iris_vpu.ko`). Following are the instructions:
- The source code for VPU drivers is available for access with the following
                        BitBake command:

        devtool modify videodlkmCopy to clipboard

You
                            can make the required debug changes to the VPU driver code that is
                            synced at:
                                &lt;workspace-path&gt;/build-qcom-wayland/workspace/sources/videodlkm.
                            After making the debug changes, use the following command to build the
                            VPU
                            driver:

        devtool build videodlkmCopy to clipboard
- After the compilation is complete, the corresponding
                            `iris_vpu.ko` is created at:
                            &lt;workspace-path&gt;/build-qcom-wayland/workspace/sources/videodlkm/iris\_vpu.ko.
- Push the compiled library to the device using the following command after
                        you enter into the SSH shell: 
Note: Before an SSH
                            command is run, ensure that you enable SSH in the Permissive mode. For
                            instructions, see [How to
                            SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-70014-254/how_to.html#how-to-ssh-).

        mount -o rw,remount /Copy to clipboard

    Change
                            the following command according to your &lt;workspace-path&gt; and the
                            &lt;IP address of the device&gt; and run on the
                            host:

        scp <workspace-path>/build-qcom-wayland/workspace/sources/videodlkm/iris_vpu.ko root@<IP address of the device>/lib/modules/6.6.28/updates/Copy to clipboard

Note: When prompted for a
                            password, enter `oelinux123`.
- After executing the preceding commands, power Off and power On the target to
                        reflect the updated debug changes.

**Video device tree**

The video device tree node is a part of the root device tree file. The source code
                for VPU device tree is available for access with the following BitBake command:

devtool modify videodtbCopy to clipboard

The VPU device tree code is synced at:
                    &lt;workspace-path&gt;/build-qcom-wayland/workspace/sources/videodtb

**Video firmware**

The video firmware binary is a prebuilt image from Qualcomm. Use the following
                command to push the video firmware binary to your device:

| Product | Command |
| --- | --- |
| QCS6490 | cd <workspace-path>/build-qcom-wayland/tmp-glibc/work/qcm6490-qcom-linux/qcom-multimedia-image/1.0-r0/rootfs/lib/firmware/qcom/vpu-2.0/Copy to clipboard<br><br><br>                                    <br><br>    scp vpu20_1v.mbn root@<IP address of the device>/lib/firmware/qcom/vpu-2.0/Copy to clipboard<br><br><br>                                    <br><br>    scp vpu20_1v_unsigned.mbn root@<IP address of the device>/lib/firmware/qcom/vpu-2.0/Copy to clipboard |

Note: When prompted for a
                    password, enter `oelinux123`.

## GStreamer plugins for video

The GStreamer plugins for video decoder and encoder are part of the QIM SDK. Download
                the entire QIM SDK to use the `v4l2h264dec`,
                    `v4l2h265dec`, `v4l2h264enc`,
                    `v4l2h265enc`, and the `v4l2vp9dec` plugins. For
                more information on the steps to download and build the QIM SDK, see [Qualcomm Linux Intelligent Multimedia SDK (QIM
                    SDK) Quick Start Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70014-51/introduction.html).

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

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

Last Published: Jul 12, 2024

[Previous Topic
Interfaces](https://docs.qualcomm.com/bundle/publicresource/80-70014-20/topics/interfaces.md) [Next Topic
Verify](https://docs.qualcomm.com/bundle/publicresource/80-70014-20/topics/bring-up.md)