# Deploy Qualcomm IM SDK as a container
Source: [https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html](https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html)
Build Qualcomm IM SDK within the docker container and prepare the final device docker
image, which can be deployed to the Qualcomm Linux enabled Edge device. This enables you to
use the AI workflow microservices to build various types of AI pipelines using Qualcomm IM
SDK.
Figure : Qualcomm IM SDK within a container - architecture

The table lists the components that are required to build the Qualcomm IM SDK docker
container from the source code:
Table : Components for Qualcomm IM SDK docker container
| Component | Description |
| :--- | :--- |
| Platform eSDK |
- Provides the platform dependencies for Qualcomm IM SDK.
- Contains platform libraries and header files.
|
| Qualcomm IM SDK source code | Contains the source code of the plugins and recipe files, which
build and define the compile time dependencies. |
| solutions-microservices | Provides the AI pipelines that are required for
microservices. |
| sdk-tools |
- Provides the docker files and a set of helper scripts to
generate the Qualcomm IM SDK device docker container.
- Provides the run commands for the reference docker,
and the YAML compose files to run the docker
containers.
- Maps all the required platform devices and libraries to
provide hardware acceleration inside the docker
container.
|
## Build Qualcomm IM SDK docker image
Source: [https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html](https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html)
### Procedure
1. Create a root workspace:
mkdir /iot-solutionsCopy to clipboard
This root workspace contains the following:
- Extracted platform eSDK
- meta-qti-gst
- gst-plugins-qti-oss
- solutions-microservices
- sdk-tools
2. Get the Platform eSDK.
The Platform eSDK provides a collection of platform libraries for a
specialized environment, which provides the developers with
cross-development toolchain and libraries that are tailored to a specific
Yocto-based Qualcomm Linux release.
You can either use a pre-built Platform eSDK or generate your own. The table
guides you to the specific instructions to do both:
| Use Platform eSDK | Instructions |
| :--- | :--- |
| Pre-built Platform eSDK | [Download and install
Platform eSDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-51/install-sdk.html) |
| Generate your own Platform eSDK | [Generate an
eSDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-254/how_to.html#generate-an-esdk) |
3. Clone the following projects:
1. Qualcomm IM SDK
projects:
# Clone QIM SDK plugins source
cd /iot-solutions
git clone https://git.codelinaro.org/clo/le/platform/vendor/qcom-opensource/gst-plugins-qti-oss.git -b imsdk.lnx.2.0.0.r2-rel
cd gst-plugins-qti-oss
git fetch origin imsdk.lnx.2.0.0.r2-rel
git checkout 49256b26148d10257959b2b8d55879f72888cb0f
# Clone QIM SDK recipes
cd /iot-solutions
git clone https://git.codelinaro.org/clo/le/meta-qti-gst.git -b imsdk.lnx.2.0.0.r2-rel
cd meta-qti-gst
git fetch origin imsdk.lnx.2.0.0.r2-rel
git checkout a4eea711214340f6b82412c971beca3d68adc551
Copy to clipboard
2. Solutions-Microservices
project:
cd /iot-solutions
git clone https://git.codelinaro.org/clo/le/solutions-microservices.git -b iot-solutions.lnx.1.0
cd solutions-microservices
git fetch origin iot-solutions.lnx.1.0
git checkout dbb4b5c065da1d66b07714ee634848caf32ff9dfCopy to clipboard
3. SDK-tools
project:
cd /iot-solutions
git clone https://git.codelinaro.org/clo/le/sdk-tools.git -b imsdk-tools.lnx.1.0
cd sdk-tools
git fetch origin imsdk-tools.lnx.1.0
git checkout bf0bcfcd87d2f4bc5e8724caaebf1f0d23cfd6f3Copy to clipboard
4. Linux Embedded (LE) services
project:
cd /iot-solutions
git clone https://git.codelinaro.org/clo/le/platform/vendor/qcom-opensource/le-services.git --single-branch -b le-services.lnx.1.0.r1-rel
cd le-services
git fetch origin le-services.lnx.1.0.r1-rel
git checkout d6ebee13e44cc0d5ebf1fbd7751cb613567eb164Copy to clipboard
4. Configure the build:
Note: If you are building the Qualcomm IM SDK docker build
for the first time, to set up the docker on your machine, see [https://git.codelinaro.org/clo/le/sdk-tools/-/blob/imsdk-tools.lnx.1.0/qimsdk/README.md#Prerequisites](https://git.codelinaro.org/clo/le/sdk-tools/-/blob/imsdk-tools.lnx.1.0/qimsdk/README.md#Prerequisites).
Update the JSON configuration file for the required target. Go to the
targets
directory.
cd /sdk-tools/qimsdk/targetsCopy to clipboard
Update the following entries in the config\_qcm6490.json
file:
"Additional_tag_container" [Optional] Append this string to docker image name.
"Additional_tag_image" [Optional] Docker image Tag.
"Docker_image_path" [Mandatory] Path to directory where docker image and docker run script will be exported to.
"Target_device_ID" [Optional] adb device ID. You can check device ID with “adb devices” command. Keep it empty if device is not attached to PC.
"Supported_targets" [Mandatory] Set device which you about to use (“qcm6490” or "qcs9100"). This will be removed soon.
"IM_SDK_Source_Dir" [Mandatory] Path to director with QIM GST plugins source code.
"IM_SDK_Meta_Dir" [Mandatory] Path to director with QIM GST plugins bitbake recipes folder.
"Solution_Microservices_Dir" [Mandatory] Path to solutions-microservices directory, which contains all qimsdk microservices shell scripts. ***Note: Path provided must point to solutions-microservices directory!***
"LE_Services_Source_Dir" [Mandatory] Path to le-services directroy which contains all LE source files.
"Path_to_eSDK_dir" [Mandatory] Path to directory where Platform eSDK is extracted.
Copy to clipboard

5. Build and export the docker image:
1. Set the environment:
cd /sdk-tools/qimsdkCopy to clipboard
source scripts/docker_env_setup.shCopy to clipboard
2. Build the docker image:
qimsdk-docker-build-image targets/config.jsonCopy to clipboard
3. Export the docker image and the docker run scripts to the
Docker\_image\_path directory.
qimsdk-docker-device-save-image targets/config.jsonCopy to clipboard
6. Install the docker image on the device:
ssh root@Copy to clipboard
The password is `oelinux123`.
1. Create the docker directory in the device shell:
mkdir -p /opt/dockerCopy to clipboard
chmod -R 777 /opt/dockerCopy to clipboard
2. Copy the docker image from Linux host to the target device:
scp /* root@:/opt/dockerCopy to clipboard
3. Configure read/write privileges for /opt/data
directory.
The /opt/data directory is mounted from the platform device file
system to device container file system.
echo '{"data-root": "/mnt/overlay/docker"}' > /etc/docker/daemon.jsonCopy to clipboard
Restart the
docker:
systemctl restart dockerCopy to clipboard
rm -rf /var/lib/dockerCopy to clipboard
Verify if the docker directory configuration is
successful:
docker info | grep StorageCopy to clipboard
4. Run the commands in the device shell:
cd /opt/dockerCopy to clipboard
docker load -i /opt/docker/Copy to clipboard
mv docker-compose-qcm6490.yml docker-compose.ymlCopy to clipboard
chmod 777 docker_run_qcm6490.shCopy to clipboard
| Field | Description |
| :--- | :--- |
| <Docker\_image\_path> | Directory where the docker image TAR file and
scripts are installed. |
| <qimsdk-docker-image> | Name of the file that contains the Qualcomm IM
SDK docker image. For example,
qimsdk.tar. |
## Run docker image for camera
Source: [https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html](https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html)
Note: This procedure is not merged with the current build and will be
available for execution in a future release.
### Prerequisite
[Build Qualcomm IM SDK docker image](https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html#build-and-run-qualcomm-im-sdk-docker-image).
### Procedure
Run the Qualcomm IM SDK docker image using either of the following options:
- Docker run commands:
A docker run command is available in the shell
script.
1. In a device shell, run the docker
script:
sh /opt/docker/docker_run_qcm6490.shCopy to clipboard
2. List all the running containers:
docker ps -aCopy to clipboard
3. Enter the Qualcomm IM SDK container
docker exec -it bashCopy to clipboard
- Docker compose commands:
Docker compose provides options to run multiple
docker containers simultaneously.
1. In a device shell, go to the docker
directory:
cd /opt/dockerCopy to clipboard
2. Run the docker-compose bash
script:
docker-compose run bashCopy to clipboard
| Field | Description |
| :--- | :--- |
| <qimsdk-docker-image-name> | The name of the Qualcomm IM SDK docker
image. |
| qimsdk | The default docker image. |
To check the action name, run the `docker
images` command.
## Container use cases for camera
Source: [https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html](https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html)
### Prerequisites
- Enable the
display:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1Copy to clipboard
- Set the the following permissions and ensure that the docker runs with root
access:
chmod 730 /dev/socket/weston
chmod 776 /dev/socket/weston/wayland-1
chmod 644 /dev/dma_heap/system
chmod 644 /dev/dma_heap/qcom,system
chmod 775 /tmp/socket/cam_server/le_cam_socket
chmod 775 /tmp/socket/cam_serverCopy to clipboard
### Use cases
See [Multimedia use cases](https://docs.qualcomm.com/doc/80-70017-50/topic/multimedia-use-cases.html).
## Run docker image for GStD
Source: [https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html](https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html)
Install GStD in the existing Qualcomm IM SDK container, and then perform port mapping
to enable the client to communicate with GStD from the host and from within the
container.
### Prerequisite
[Build Qualcomm IM SDK docker image](https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html#build-and-run-qualcomm-im-sdk-docker-image).
### Procedure
Run the Qualcomm IM SDK docker image using either of the following options:
- Docker run commands:
1. In a device shell, run the following docker
scripts:
sed -i 's/--user qimsdk/--user root -p 5001:5001/g' /opt/docker/docker_run_qcm6490.shCopy to clipboard
sh /opt/docker/docker_run_qcm6490.shCopy to clipboard
docker ps -aCopy to clipboard
docker exec -it bashCopy to clipboard
2. In the docker shell, configure and enable the
display:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1Copy to clipboard
Run
GStD in the
background:
gstd-1.0 -a 0.0.0.0 -p 5001Copy to clipboard
- Docker compose commands:
Docker compose provides options to run multiple
docker containers simultaneously.
1. In a device shell, go to the docker
directory:
cd /opt/dockerCopy to clipboard
2. Run the docker-compose bash
script:
docker-compose run bashCopy to clipboard
| Field | Description |
| :--- | :--- |
| <qimsdk-docker-image-name> | The name of the Qualcomm IM SDK docker
image. |
| qimsdk | The default docker image. |
To check the action name, run the `docker
images` command.
## Container use cases using GStD
Source: [https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html](https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html)
The following are a few container use cases for video encode and AI pipelines using
GStD:
Before running the use cases, ensure that you complete the [Prerequisites](https://docs.qualcomm.com/doc/80-70017-50/topic/application-deployment-within-container-api-gstd.html#container-use-cases-camera__section_zns_tgl_sdc).
### Video encode
Encode a decoded stream, multiplex it, and save it to a common directory shared
between the host and docker.
1. In the container, create the
pipeline:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_create enc filesrc location=/opt/data/1280_720_h264_30fps_1min.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! v4l2h264enc capture-io-mode=5 output-io-mode=5 ! h264parse ! queue ! mp4mux ! queue ! filesink location=/opt/data/docker_video.mp4Copy to clipboard
2. Control the
pipeline:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_play encCopy to clipboard
gst-client-1.0 -a 0.0.0.0 -p 5001 bus_filter enc error+eosCopy to clipboard
gst-client-1.0 -a 0.0.0.0 -p 5001 bus_read encCopy to clipboard
The
shell is blocked to check for errors for end of stream (EOS).
3. Stop the pipeline after the shell is
unblocked:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_stop encCopy to clipboard
### AI pipeline: Inference on a decoded stream and preview
Perform the inference on a decoded stream, draw bounding boxes/text using the [qtioverlay](https://docs.qualcomm.com/doc/80-70017-50/topic/qtioverlay.html) plugin, and render it live on the display.
1. Do the post-processing in the docker:
1. Create the
pipeline:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_create postproc qtisocketsrc socket=/opt/data/tensors.sock ! neural-network/tensors, type=INT8, dimensions="<<1,8400,4>,<1,8400>,<1,8400>>" ! queue ! qtimlvdetection threshold=75.0 results=4 module=yolov8 constants="YoloV8,q-offsets=<-107.0,-128.0,0.0>,q-scales=<3.093529462814331,0.00390625,1.0>;" labels=/opt/data/yolov8n.labels ! text/x-raw ! filesink buffer-mode=unbuffered location=/opt/data/mloutput1.txtCopy to clipboard
2. Control the
pipeline:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_play postprocCopy to clipboard
gst-client-1.0 -a 0.0.0.0 -p 5001 bus_filter postproc error+eos && gst-client-1.0 -a 0.0.0.0 -p 5001 bus_read postprocCopy to clipboard
The
shell is blocked to check for errors for EOS.
2. On the device, perform the
inference:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1 && gst-launch-1.0 -e \
qtimlvconverter name=preproc mode=image-batch-non-cumulative \
qtimltflite name=inference delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp,htp_precision=(string)1;" model=/opt/data/YoloV8N_Detection_Quantized.tflite \
filesrc location=/opt/data/1280_720_h264_30fps_1min.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! \
preproc. preproc. ! queue ! inference. inference. ! neural-network/tensors, type=INT8, dimensions="<<1,8400,4>,<1,8400>,<1,8400>>" ! qtisocketsink socket=/opt/data/tensors.sockCopy to clipboard
3. In the docker shell, stop the pipeline after the shell is
unblocked:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_stop postprocCopy to clipboard
### AI pipeline: Postprocessing of tensors within container, and preprocessing and
inference in Native layer
Transfer output tensors to the docker container using the [qtisocketsrc](https://docs.qualcomm.com/doc/80-70017-50/topic/qtisocketsrc.html) and [qtisocketsink](https://docs.qualcomm.com/doc/80-70017-50/topic/qtisocketsink.html) plugins. The
use case shows how the multi-dimension tensors layout can be understood by the
application that is running within a container.
1. In the docker:
1. Create the
pipeline:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_create postproc qtisocketsrc socket=/opt/data/tensors.sock ! neural-network/tensors, type=INT8, dimensions="<<1,8400,4>,<1,8400>,<1,8400>>" ! queue ! qtimlvdetection threshold=75.0 results=4 module=yolov8 constants="YoloV8,q-offsets=<-107.0,-128.0,0.0>,q-scales=<3.093529462814331,0.00390625,1.0>;" labels=/opt/data/yolov8n.labels ! text/x-raw ! filesink buffer-mode=unbuffered location=/opt/data/mloutput1.txtCopy to clipboard
2. Control the
pipeline:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_play postprocCopy to clipboard
gst-client-1.0 -a 0.0.0.0 -p 5001 bus_filter postproc error+eos && gst-client-1.0 -a 0.0.0.0 -p 5001 bus_read postprocCopy to clipboard
The
shell is blocked to check for errors for EOS.
2. On the device, run the
inference:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1 && gst-launch-1.0 -e \
qtimlvconverter name=preproc mode=image-batch-non-cumulative \
qtimltflite name=inference delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp,htp_precision=(string)1;" model=/opt/data/YoloV8N_Detection_Quantized.tflite \
filesrc location=/opt/data/1280_720_h264_30fps_1min.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! \
preproc. preproc. ! queue ! inference. inference. ! neural-network/tensors, type=INT8, dimensions="<<1,8400,4>,<1,8400>,<1,8400>>" ! qtisocketsink socket=/opt/data/tensors.sockCopy to clipboard
3. In the docker shell, stop the pipeline after the shell
unblocks:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_stop postprocCopy to clipboard
### AI pipeline: Preprocessing within container, and inference and postprocessing in
Native layer
The use case shows how to transfer the camera frames with zero copy using the [qtisocketsrc](https://docs.qualcomm.com/doc/80-70017-50/topic/qtisocketsrc.html) and [qtisocketsink](https://docs.qualcomm.com/doc/80-70017-50/topic/qtisocketsink.html) plugins.
1. On the device, run the
inference:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1 && gst-launch-1.0 -e \
qtimltflite name=inference delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp,htp_precision=(string)1;" model=/opt/data/YoloV8N_Detection_Quantized.tflite \
qtimlvdetection name=postproc threshold=75.0 results=4 module=yolov8 constants="YoloV8,q-offsets=<-107.0,-128.0,0.0>,q-scales=<3.093529462814331,0.00390625,1.0>;" labels=/opt/data/yolov8n.labels \
qtisocketsrc socket=/opt/data/tensors.sock ! neural-network/tensors, type=INT8, dimensions="<<1,640,640,3>>" ! queue ! inference. inference. ! postproc. \
postproc. ! queue ! text/x-raw ! filesink buffer-mode=unbuffered location=/opt/data/mloutput2.txtCopy to clipboard
2. In the docker, create the
pipeline:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_create preproc filesrc location=/opt/data/1280_720_h264_30fps_1min.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! qtimlvconverter mode=image-batch-non-cumulative ! queue ! neural-network/tensors, type=INT8, dimensions="<<1,640,640,3>>" ! qtisocketsink socket=/opt/data/tensors.sockCopy to clipboard
1. Control the
pipeline:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_play preprocCopy to clipboard
gst-client-1.0 -a 0.0.0.0 -p 5001 bus_filter preproc error+eos && gst-client-1.0 -a 0.0.0.0 -p 5001 bus_read preprocCopy to clipboard
The
shell is blocked to check for errors for EOS.
2. Stop the pipeline after the shell
unblocks:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_stop preprocCopy to clipboard
### AI Pipeline: Pre and post processing in container, and inference in Native
layer
Use [qtisocketsrc](https://docs.qualcomm.com/doc/80-70017-50/topic/qtisocketsrc.html) and [qtisocketsink](https://docs.qualcomm.com/doc/80-70017-50/topic/qtisocketsink.html) plugins to
pass the data (camera frames and output tensors) with zero copy.
1. In the docker, create the
pipeline:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_create post qtisocketsrc socket=/opt/data/output.sock ! neural-network/tensors, type=INT8, dimensions="<<1,8400,4>,<1,8400>,<1,8400>>" ! queue ! qtimlvdetection threshold=75.0 results=4 module=yolov8 constants="YoloV8,q-offsets=<-107.0,-128.0,0.0>,q-scales=<3.093529462814331,0.00390625,1.0>;" labels=/opt/data/yolov8n.labels ! text/x-raw ! filesink buffer-mode=unbuffered location=/opt/data/mloutput3.txtCopy to clipboard
2. Control the pipeline:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_play postCopy to clipboard
gst-client-1.0 -a 0.0.0.0 -p 5001 bus_filter post error+eos && gst-client-1.0 -a 0.0.0.0 -p 5001 bus_read postCopy to clipboard
The
shell is blocked to check for errors for EOS.
3. On the device, run the
inference:
export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1 && gst-launch-1.0 -e \
qtimltflite name=inference delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp,htp_precision=(string)1;" model=/opt/data/YoloV8N_Detection_Quantized.tflite \
qtisocketsrc socket=/opt/data/input.sock ! neural-network/tensors, type=INT8, dimensions="<<1,640,640,3>>" ! queue ! inference. inference. ! \
qtisocketsink socket=/opt/data/output.sockCopy to clipboard
4. In the docker, create the
pipeline:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_create pre qtimlvconverter name=preproc mode=image-batch-non-cumulative \
filesrc location=/opt/data/1280_720_h264_30fps_1min.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! \
preproc. preproc. ! queue ! neural-network/tensors, type=INT8, dimensions="<<1,640,640,3>>" ! qtisocketsink socket=/opt/data/input.sockCopy to clipboard
5. Control the
pipeline:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_play preCopy to clipboard
gst-client-1.0 -a 0.0.0.0 -p 5001 bus_filter pre error+eos && gst-client-1.0 -a 0.0.0.0 -p 5001 bus_read preCopy to clipboard
The
shell is blocked to check for errors for EOS.
6. In the docker shell, stop the pipeline after the shell
unblocks:
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_stop preCopy to clipboard
gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_stop postCopy to clipboard
Last Published: Oct 01, 2026
[Previous Topic
Customize a Python sample application](https://docs.qualcomm.com/bundle/publicresource/80-70017-50/topics/customize-a-python-sample-application.md) [Next Topic
GStreamer command-line use cases](https://docs.qualcomm.com/bundle/publicresource/80-70017-50/topics/gstreamer-application-use-cases.md)