# APIs

Qualcomm Linux provides [Qualcomm® Intelligent Multimedia SDK (IM SDK) GStreamer plugin APIs](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-50/qim-sdk-plugins.html) to
interface with Qualcomm AI stack SDK APIs, to optimally run deep learning models on hardware modules such as NPU, GPU, CPU.

<?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 top_level_ai_hw.svg Page-1 -->
<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="11.1215in" height="7.37153in" viewbox="0 0 800.75 530.75" xml:space="preserve" color-interpolation-filters="sRGB" class="st23" aria-label="../_images/top_level_ai_hw.svg"><v:documentproperties v:langid="1033" v:viewmarkup="false"></v:documentproperties>
<style>.svg-1 .st1 { fill: #ffffff; stroke: #ffffff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st2 { fill: #ffffff; stroke: #d8d8d8; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st3 { fill: #000000; font-family: Roboto; font-size: 1.33333em }
.svg-1 .st4 { font-size: 1em }
.svg-1 .st5 { fill: #040a40; stroke: #4a5a75; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st6 { fill: #ffffff; font-family: Roboto; font-size: 1.33333em }
.svg-1 .st7 { fill: #3253dc; stroke: #d8d8d8; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st8 { baseline-shift: 32.4948%; font-size: 0.649895em }
.svg-1 .st9 { fill: #3253dc; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st10 { fill: #ffffff; font-family: Roboto; font-size: 1.24999em }
.svg-1 .st11 { baseline-shift: 32.495%; font-size: 0.6499em }
.svg-1 .st12 { fill: #dee3ec; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st13 { marker-end: url("#mrkr13-53"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2 }
.svg-1 .st14 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.44247787610619 }
.svg-1 .st15 { marker-end: url("#mrkr13-64"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.75 }
.svg-1 .st16 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.40983606557377 }
.svg-1 .st17 { fill: #7ba0ff; stroke: #7ba0ff; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st18 { fill: #ffffff; font-family: Roboto; font-size: 1.16666em }
.svg-1 .st19 { fill: #3253dc; stroke: #f5f6f7; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st20 { fill: #dee3ec; stroke: #f5f6f7; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st21 { fill: #000000; font-family: Roboto; font-size: 1.16666em }
.svg-1 .st22 { fill: #040a40; stroke: #f5f6f7; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st23 { 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-53" class="st14" v:arrowtype="13" v:arrowsize="2" v:setback="6.78" refx="-6.78" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-2.26,-2.26) "></use>	</marker>	<marker id="mrkr13-64" class="st16" v:arrowtype="13" v:arrowsize="2" v:setback="7.32" refx="-7.32" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-2.44,-2.44) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</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="full" v:index="0"></v:layer>	<g id="shape1313-1" v:mid="1313" v:groupcontext="shape" transform="translate(0.375,-0.375)">		<title>Sheet.1313</title>		<rect x="0" y="0.750019" width="800" height="530" rx="4" ry="4" class="st1"></rect>	</g>	<g id="shape1218-3" v:mid="1218" v:groupcontext="shape" transform="translate(18.584,-54.6081)">		<title>Sheet.1218</title>		<desc>Hardware</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="383.583" cy="473.669" width="767.17" height="114.162"></v:textrect>		<rect x="0" y="416.588" width="767.166" height="114.162" rx="4.5" ry="4.5" class="st2"></rect>		<text x="4" y="434.99" class="st3" v:langid="1041"><v:paragraph></v:paragraph><v:tablist></v:tablist>Hardware</text>		</g>	<g id="shape1219-6" v:mid="1219" v:groupcontext="shape" transform="translate(18.584,-190.967)">		<title>Sheet.1219</title>		<desc>AI SDKs</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="383.583" cy="473.669" width="767.17" height="114.162"></v:textrect>		<rect x="0" y="416.588" width="767.166" height="114.162" rx="4.5" ry="4.5" class="st2"></rect>		<text x="4" y="434.99" class="st3" v:langid="1041"><v:paragraph></v:paragraph><v:tablist></v:tablist>AI SDKs</text>		</g>	<g id="shape1220-9" v:mid="1220" v:groupcontext="shape" transform="translate(18.584,-326.375)">		<title>Sheet.1220</title>		<desc>Qualcomm IMSDK Gstreamer plugins</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:verticalalign="0"></v:textblock>		<v:textrect cx="383.583" cy="473.669" width="767.17" height="114.162"></v:textrect>		<rect x="0" y="416.588" width="767.166" height="114.162" rx="4.5" ry="4.5" class="st2"></rect>		<text x="4" y="434.99" class="st3" v:langid="1041"><v:paragraph></v:paragraph><v:tablist></v:tablist>Qualcomm <tspan class="st4" v:langid="1033">IMSDK </tspan>Gstreamer <tspan class="st4" v:langid="1033">plugins</tspan></text>		</g>	<g id="shape1221-14" v:mid="1221" v:groupcontext="shape" transform="translate(18.584,-467.637)">		<title>Sheet.1221</title>		<desc>AI applications</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="383.583" cy="506.867" width="767.17" height="47.7652"></v:textrect>		<rect x="0" y="482.985" width="767.166" height="47.7652" rx="4.5" ry="4.5" class="st5"></rect>		<text x="330.8" y="511.67" class="st6" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>AI applications</text>		</g>	<g id="shape1222-17" v:mid="1222" v:groupcontext="shape" transform="translate(52.1191,-347.623)">		<title>Sheet.1222</title>		<desc>Qualcomm® Neural Processing Engine plugin (qtimlsnpe)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="155.26" cy="499.333" width="310.52" height="62.8345"></v:textrect>		<rect x="0" y="467.915" width="310.52" height="62.8345" rx="4.5" ry="4.5" class="st7"></rect>		<text x="19.02" y="494.53" class="st6" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm<tspan dy="-0.235em" class="st8" v:basefontsize="16">®</tspan><tspan dy="0.153em" class="st4"> </tspan>Neural Processing Engine <tspan x="90.76" dy="1.2em" class="st4">plugin (qtimlsnpe)</tspan></text>		</g>	<g id="shape1223-23" v:mid="1223" v:groupcontext="shape" transform="translate(52.1191,-212.213)">		<title>Sheet.1223</title>		<desc>Qualcomm Neural Processing Engine</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="155.26" cy="499.356" width="310.52" height="62.7889"></v:textrect>		<rect x="0" y="467.961" width="310.52" height="62.7889" rx="4.5" ry="4.5" class="st9"></rect>		<text x="23.11" y="504.16" class="st6" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm Neural Processing Engine</text>		</g>	<g id="shape1224-26" v:mid="1224" v:groupcontext="shape" transform="translate(421.561,-347.623)">		<title>Sheet.1224</title>		<desc>Qualcomm® AI Engine Direct plugin (qtimlqnn)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="77.6299" cy="499.333" width="155.26" height="62.8345"></v:textrect>		<rect x="0" y="467.915" width="155.26" height="62.8345" rx="4.5" ry="4.5" class="st7"></rect>		<text x="4.07" y="485.83" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm<tspan dy="-0.235em" class="st11" v:basefontsize="15">®</tspan><tspan dy="0.153em" class="st4"> </tspan>AI Engine <tspan x="35.82" dy="1.2em" class="st4">Direct plugin </tspan><tspan x="42.99" dy="1.2em" class="st4">(qtimlqnn)</tspan></text>		</g>	<g id="shape1225-33" v:mid="1225" v:groupcontext="shape" transform="translate(588.237,-347.623)">		<title>Sheet.1225</title>		<desc>TensorFlow Lite plugin (qtimltflite)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="77.6299" cy="499.333" width="155.26" height="62.8345"></v:textrect>		<rect x="0" y="467.915" width="155.26" height="62.8345" rx="4.5" ry="4.5" class="st7"></rect>		<text x="24.35" y="485.83" class="st10" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>TensorFlow Lite <tspan x="57.3" dy="1.2em" class="st4">plugin<v:lf></v:lf></tspan><tspan x="38.56" dy="1.2em" class="st4"> </tspan>(qtimltflite)</text>		</g>	<g id="shape1226-38" v:mid="1226" v:groupcontext="shape" transform="translate(52.1191,-75.0209)">		<title>Sheet.1226</title>		<desc>NPU (DSP/HMX/HTP)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.3293" cy="499.698" width="182.66" height="62.1039"></v:textrect>		<rect x="0" y="468.646" width="182.659" height="62.1039" rx="4.5" ry="4.5" class="st12"></rect>		<text x="75.39" y="494.9" class="st3" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>NPU <v:newlinechar></v:newlinechar><v:paragraph v:horizalign="1"></v:paragraph><tspan x="30.95" dy="1.2em" class="st4">(DSP/HMX/HTP)</tspan></text>		</g>	<g id="shape1227-42" v:mid="1227" v:groupcontext="shape" transform="translate(306.479,-75.0209)">		<title>Sheet.1227</title>		<desc>GPU</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.3293" cy="499.698" width="182.66" height="62.1039"></v:textrect>		<rect x="0" y="468.646" width="182.659" height="62.1039" rx="4.5" ry="4.5" class="st12"></rect>		<text x="75.65" y="504.5" class="st3" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GPU</text>		</g>	<g id="shape1228-45" v:mid="1228" v:groupcontext="shape" transform="translate(560.838,-75.0209)">		<title>Sheet.1228</title>		<desc>CPU</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="91.3293" cy="499.698" width="182.66" height="62.1039"></v:textrect>		<rect x="0" y="468.646" width="182.659" height="62.1039" rx="4.5" ry="4.5" class="st12"></rect>		<text x="75.89" y="504.5" class="st3" v:langid="1041"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>CPU</text>		</g>	<g id="shape1229-48" v:mid="1229" v:groupcontext="shape" v:layermember="0" transform="translate(932.917,63.1128) rotate(90)">		<title>Sheet.1229</title>		<path d="M0 530.75 L13.54 530.75" class="st13"></path>	</g>	<g id="shape1230-54" v:mid="1230" v:groupcontext="shape" transform="translate(738.129,183.37) rotate(90)">		<title>Sheet.1230</title>		<path d="M0 530.75 L58.82 530.75" class="st13"></path>	</g>	<g id="shape1231-59" v:mid="1231" v:groupcontext="shape" v:layermember="0" transform="translate(932.917,339.783) rotate(90)">		<title>Sheet.1231</title>		<path d="M0 530.75 L9.84 530.75" class="st15"></path>	</g>	<g id="shape1233-65" v:mid="1233" v:groupcontext="shape" transform="translate(421.561,-214.434)">		<title>Sheet.1233</title>		<desc>Qualcomm AI Engine Direct</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="160.968" cy="499.356" width="321.94" height="62.7889"></v:textrect>		<rect x="0" y="467.961" width="321.936" height="62.7889" rx="4.5" ry="4.5" class="st9"></rect>		<text x="38" y="493.36" class="st6" v:langid="1033"><v:paragraph v:indentleft="34" v:spline="-1.5"></v:paragraph><v:tablist></v:tablist>Q<tspan class="st4" v:langid="1041">ualcomm AI <v:lf></v:lf></tspan><tspan x="38" dy="1.5em" class="st4" v:langid="1041">Engine Direct</tspan></text>		</g>	<g id="shape1234-70" v:mid="1234" v:groupcontext="shape" transform="translate(1219.45,182.401) rotate(90)">		<title>Sheet.1234</title>		<path d="M0 530.75 L58.77 530.75" class="st13"></path>	</g>	<g id="shape1235-75" v:mid="1235" v:groupcontext="shape" transform="translate(1029.94,182.49) rotate(90)">		<title>Sheet.1235</title>		<path d="M0 530.75 L58.77 530.75" class="st13"></path>	</g>	<g id="shape1240-80" v:mid="1240" v:groupcontext="shape" transform="translate(630.375,-225.851)">		<title>Sheet.1240</title>		<desc>TFLite Delegate</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="48.5695" cy="510.772" width="97.14" height="39.9566"></v:textrect>		<rect x="0" y="490.793" width="97.139" height="39.9566" rx="4.5" ry="4.5" class="st17"></rect>		<text x="29.06" y="506.57" class="st18" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>TFLite <tspan x="21.13" dy="1.2em" class="st4">Delegate</tspan></text>		</g>	<g id="shape1244-84" v:mid="1244" v:groupcontext="shape" transform="translate(361.662,-237.266) rotate(-0.105469)">		<title>Sheet.1244</title>		<path d="M0 530.75 L45.36 530.75" class="st13"></path>	</g>	<g id="shape1310-89" v:mid="1310" v:groupcontext="shape" transform="translate(19.409,-10.3751)">		<title>Sheet.1310</title>		<desc>QTI</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="45.6646" cy="514.342" width="91.33" height="32.8167"></v:textrect>		<rect x="0" y="497.933" width="91.3293" height="32.8167" rx="4" ry="4" class="st19"></rect>		<text x="34.77" y="518.54" class="st18" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>QTI</text>		</g>	<g id="shape1311-92" v:mid="1311" v:groupcontext="shape" transform="translate(125.008,-10.3751)">		<title>Sheet.1311</title>		<desc>Hardware</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="45.8876" cy="514.342" width="91.78" height="32.8167"></v:textrect>		<rect x="0" y="497.933" width="91.7752" height="32.8167" rx="4" ry="4" class="st20"></rect>		<text x="15.63" y="518.54" class="st21" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Hardware</text>		</g>	<g id="shape1312-95" v:mid="1312" v:groupcontext="shape" transform="translate(230.608,-10.3751)">		<title>Sheet.1312</title>		<desc>Third-party</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="62.3835" cy="514.342" width="124.77" height="32.8167"></v:textrect>		<rect x="0" y="497.933" width="124.767" height="32.8167" rx="4" ry="4" class="st22"></rect>		<text x="28.7" y="518.54" class="st18" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Third-party</text>		</g></g>
</svg>

Three GStreamer ML plugin APIs are provided to support two AI stack SDKs, and external TFLite, which provides flexibility for developers to choose the right combination for their AI needs.

> 
> 
> | [Qualcomm IM SDK plugin for Qualcomm Neural Processing Engine (qtimlsnpe)](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-50/qtimlsnpe.html) | Uses [Qualcomm Neural Processing Engine](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-2) APIs to load and execute models.<br><br><br>Choose this plugin for quick prototyping and high-level API support. |
> | --- | --- |
> | [Qualcomm IM SDK plugin for Qualcomm AI Engine Direct plugin (qtimlqnn)](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-50/qtimlqnn.html) | Uses [Qualcomm AI Engine Direct](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-50) APIs, which provide low-level, unified API and improved performance to optimize and execute network models on the desired hardware accelerator.<br><br><br>Choose this plugin for advanced graph execution options and optimizations. |
> | [Qualcomm IM SDK plugin for TensorFlow Lite (qtimltflite)](https://docs.qualcomm.com/bundle/publicresource/topics/80-70018-50/qtimltflite.html) | Accelerates TFLite models directly using [Qualcomm AI Engine Direct](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-50) APIs to load and execute models.<br><br><br>Choose this plugin to directly run TFLite models, without the need of conversion. |

**SDK APIs** - These SDKs provide AI APIs for application developers.

> 
> 
> | [Qualcomm Neural Processing Engine SDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-2/api.html) | C, C++, and Java APIs to support heterogenous computing, system-level configurations, and direct AI workloads to all accelerator cores.<br><br><br>Provides developers with flexibility, including inter-core collaboration support and other advanced features. |
> | --- | --- |
> | [Qualcomm AI Engine Direct](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-50/api.html) | Low-level, highly customizable APIs that speed up AI models on all AI accelerator cores with individual libraries.<br><br><br>This SDK can be used to target a specific accelerator core or delegate workloads from popular runtimes including<br><br><br>Qualcomm Neural Processing Engine SDK, TensorFlow Lite, and ONNX runtime. |

Last Published: Mar 27, 2025

[Previous Topic
Architecture](https://docs.qualcomm.com/bundle/publicresource/80-70018-15/topics/architecture.md) [Next Topic
Sample Apps](https://docs.qualcomm.com/bundle/publicresource/80-70018-15/topics/sample-apps.md)