# Download source code for development

The eSDK (extensible SDK) needs to be setup to develop
application/plugin code. See the [Qualcomm Intelligent Multimedia Software Development Kit (IM SDK) Quick Start Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-51/introduction.html)
for instructions on setting up the eSDK and downloading and compiling the source code.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export develop-own-app-imsdk-plugins.svg develop-own-app -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="16.1806in" height="8.06944in" viewbox="0 0 1165 581" xml:space="preserve" color-interpolation-filters="sRGB" class="st11" aria-label="../_images/develop-own-app-imsdk-plugins.svg" svgdefaultwidth="1164"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #ffffff; stroke: #ffffff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st2 { fill: #ffffff; stroke: #7f7f7f; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st3 { fill: #2a2aea; font-family: Roboto; font-size: 1.33333em; font-weight: bold }
.svg-1 .st4 { fill: #2a2aea; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st5 { fill: #ffffff; font-family: Roboto; font-size: 1.5em; font-weight: bold }
.svg-1 .st6 { font-size: 1em; font-weight: normal }
.svg-1 .st7 { marker-end: url("#mrkr13-44"); stroke: #000000; stroke-linecap: butt; stroke-width: 2 }
.svg-1 .st8 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.52631578947368 }
.svg-1 .st9 { marker-end: url("#mrkr4-50"); stroke: #000000; stroke-linecap: butt; stroke-width: 2 }
.svg-1 .st10 { fill: #ffffff; font-family: Roboto; font-size: 1.5em; font-weight: bold; letter-spacing: -0.00555556em }
.svg-1 .st11 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="mrkr13-44" class="st8" v:arrowtype="13" v:arrowsize="1" v:setback="5.7" refx="-5.7" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-1.9,-1.9) "></use>	</marker>	<g id="lend4">		<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"></path>	</g>	<marker id="mrkr4-50" class="st8" v:arrowtype="4" v:arrowsize="1" v:setback="3.8" refx="-3.8" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-1.9,-1.9) "></use>	</marker></defs><g v:mid="5" v:index="1" v:groupcontext="foregroundPage">	<title>develop-own-app</title>	<v:pageproperties v:drawingscale="0.0138889" v:pagescale="0.0138889" v:drawingunits="29" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape2-1" v:mid="2" v:groupcontext="shape" transform="translate(18.5,-18.5)">		<title>Sheet.2</title>		<rect x="0" y="37" width="1128" height="544" rx="8" ry="8" class="st1"></rect>	</g>	<g id="shape14-3" v:mid="14" v:groupcontext="shape" transform="translate(29,-390.5)">		<title>Sheet.14</title>		<desc>Preprocessing</desc>		<v:textblock v:margins="rect(8,8,8,8)" v:verticalalign="0"></v:textblock>		<v:textrect cx="165" cy="502" width="330.01" height="158"></v:textrect>		<rect x="0" y="423" width="330" height="158" rx="4" ry="4" class="st2"></rect>		<text x="8" y="445.4" class="st3" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>Preprocessing</text>		</g>	<g id="shape1-6" v:mid="1" v:groupcontext="shape" transform="translate(47.4397,-406.817)">		<title>Sheet.1</title>		<desc>qtimlvconverter</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="80.66" y="550.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimlvconverter</text>		</g>	<g id="shape3-9" v:mid="3" v:groupcontext="shape" transform="translate(421,-210.5)">		<title>Sheet.3</title>		<desc>ML inference plugins</desc>		<v:textblock v:margins="rect(8,8,8,8)" v:verticalalign="0"></v:textblock>		<v:textrect cx="162.5" cy="411.25" width="325" height="339.5"></v:textrect>		<rect x="0" y="241.5" width="325" height="339.5" rx="4" ry="4" class="st2"></rect>		<text x="8" y="267.5" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>ML inference plugins</text>		</g>	<g id="shape4-12" v:mid="4" v:groupcontext="shape" transform="translate(808.451,-29)">		<title>Sheet.4</title>		<desc>Qualcomm IM SDK postprocessing plugins</desc>		<v:textblock v:margins="rect(8,8,8,8)" v:verticalalign="0"></v:textblock>		<v:textrect cx="162.5" cy="321.105" width="325" height="519.79"></v:textrect>		<rect x="0" y="61.2096" width="325" height="519.79" rx="4" ry="4" class="st2"></rect>		<text x="8" y="87.21" class="st3" v:langid="1033"><v:paragraph v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Qualcomm IM SDK postprocessing plugins  </text>		</g>	<g id="shape5-15" v:mid="5" v:groupcontext="shape" transform="translate(439.391,-225.817)">		<title>Sheet.5</title>		<desc>Qtimlqnn Used by BIN models</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="107.63" y="538.57" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qtimlqnn<v:newlinechar></v:newlinechar><tspan x="64.14" dy="1.5em" class="st6">Used by BIN models</tspan></text>		</g>	<g id="shape6-19" v:mid="6" v:groupcontext="shape" transform="translate(439.391,-315.817)">		<title>Sheet.6</title>		<desc>Qtimlsnpe Used by DLC models</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="103.19" y="538.57" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qtimlsnpe<v:newlinechar></v:newlinechar><tspan x="62.01" dy="1.5em" class="st6">Used by DLC models</tspan></text>		</g>	<g id="shape7-23" v:mid="7" v:groupcontext="shape" transform="translate(439.391,-406.817)">		<title>Sheet.7</title>		<desc>qtimltflite Used by TFLite models</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="104.98" y="538.57" class="st5" v:langid="1033"><v:paragraph v:spline="-1.5" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimltflite<v:newlinechar></v:newlinechar><tspan x="53.53" dy="1.5em" class="st6">Used by TFLite models</tspan></text>		</g>	<g id="shape8-27" v:mid="8" v:groupcontext="shape" transform="translate(827.391,-225.817)">		<title>Sheet.8</title>		<desc>qtimlvsegmentation</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="63.62" y="550.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimlvsegmentation</text>		</g>	<g id="shape9-30" v:mid="9" v:groupcontext="shape" transform="translate(827.391,-315.817)">		<title>Sheet.9</title>		<desc>qtimlvdetection</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="81.28" y="550.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimlvdetection</text>		</g>	<g id="shape10-33" v:mid="10" v:groupcontext="shape" transform="translate(827.391,-406.817)">		<title>Sheet.10</title>		<desc>qtimlvclassification</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="65.14" y="550.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimlvclassification</text>		</g>	<g id="shape11-36" v:mid="11" v:groupcontext="shape" transform="translate(827.391,-135.817)">		<title>Sheet.11</title>		<desc>qtimlvpose</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="99.72" y="550.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>qtimlvpose</text>		</g>	<g id="shape24-39" v:mid="24" v:groupcontext="shape" v:layermember="0" transform="translate(359,-430)">		<title>Dynamic connector</title>		<path d="M0 568.5 L50.6 568.5" class="st7"></path>	</g>	<g id="shape26-45" v:mid="26" v:groupcontext="shape" transform="translate(746,-442.5)">		<title>Sheet.26</title>		<path d="M0 581 L54.4 581" class="st9"></path>	</g>	<g id="shape27-51" v:mid="27" v:groupcontext="shape" transform="translate(827.391,-45.8166)">		<title>Sheet.27</title>		<desc>qtimlvsuperresolution</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144.609" cy="545.317" width="289.22" height="71.3667"></v:textrect>		<rect x="0" y="509.633" width="289.219" height="71.3667" rx="4" ry="4" class="st4"></rect>		<text x="56.7" y="550.72" class="st10" v:langid="1033"><v:paragraph v:spbefore="2.95" v:horizalign="1" v:bulletsize="0.166667"></v:paragraph><v:tablist></v:tablist>qtimlvsuperresolution</text>		</g></g>
</svg>

The following pre-/postprocessing ML plugins are available with
the Qualcomm IM SDK. Use these plugins to develop your own use case.

| **Plugin** | **Functionality** |
| --- | --- |
| qtimlvconverter | Transforms incoming video buffers into neural-network tensors<br>while performing required format conversion and resizing. |
| qtimlvclassification | Performs postprocessing of output tensors for classification use<br>cases. |
| qtimlvdetection | Performs postprocessing of output tensors for detection use<br>cases. |
| qtimlvsegmentation | Performs postprocessing of output tensors for pixel-level use<br>cases, like image segmentation, depth-map, etc. |
| qtimlvpose | Performs postprocessing of output tensors for pose estimation<br>use cases. |
| qtimlvsuperresolution | Performs postprocessing of the output tensors for video super<br>resolution use cases. |

The Qualcomm IM SDK, supports the following use cases and related models.

| **Use cases supported by Qualcomm IM SDK** | **Supported Models** |
| --- | --- |
| Classification | Models like Mobilenet. Currently Qualcomm AI Hub has 11<br>classification models supported. New models will keep getting<br>added to AI Hub. |
| Detection | Models like ssd-mobilenet, yolov5, yolo-nas, and yolov8 |
| Segmentation | Models like deeplabv3\_resnet and ffnet |
| Pose detection | Models like posenet\_mobilenet |
| Super resolution | Models like QuickSRNet, XLSR, etc. |

Note

A list of verified models from Qualcomm AI Hub is available
in a [Integrate an AI Hub model in an application](https://docs.qualcomm.com/doc/80-70018-15B/topic/integrate-ai-hub-models.html).

You can use many other models with similar postprocessing
requirements, however it’s recommended to verify postprocessing
support in the relevant Qualcomm IM SDK plugins before integrating
your own model.

Last Published: Oct 13, 2025

[Previous Topic
Develop your own AI/ML application with the Qualcomm IM SDK](https://docs.qualcomm.com/bundle/publicresource/80-70018-15B/topics/develop-your-own-application-im-sdk.md) [Next Topic
Integrate a custom AI model in an application](https://docs.qualcomm.com/bundle/publicresource/80-70018-15B/topics/integrate-custom-model.md)