# Video super-resolution

Source: [https://docs.qualcomm.com/doc/80-70022-50/topic/video-super-resolution.html](https://docs.qualcomm.com/doc/80-70022-50/topic/video-super-resolution.html)

The **gst-ai-superresolution** application allows you to generate high resolution
        video frames from low-resolution input.

The following figures shows the pipeline, which receives a video stream from a file
            source as input, processes it through the super resolution module using LiteRT, and
            displays the output.

For information about the plugins used in the pipeline, see Pipeline flow.

Figure : gst-ai-superresolution pipeline (Wayland display)
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1260.2996826171875" height="218.696014404296875" viewbox="0 0 1260.2996826171875 218.696014404296875">
  <g id="Layer_2" data-name="Layer 2">
    <g>
      <rect x=".49993896484375" y=".499847412109375" width="1259.29931640625" height="217.6962890625" rx="7.499999999999996" ry="7.499999999999996" style="fill: #fafafa;"></rect>
      <path d="M1252.2996826171875,1c3.85980224609375,0,7,3.140167236328125,7,7v202.696014404296875c0,3.85980224609375-3.14019775390625,7-7,7H8c-3.859832763671875,0-7-3.14019775390625-7-7V8c0-3.859832763671875,3.140167236328125-7,7-7h1244.2996826171875M1252.2996826171875,0H8C3.581848144530341,0,0,3.5816650390625,0,8v202.696014404296875c0,4.41815185546875,3.581848144530341,8,8,8h1244.2996826171875c4.41815185546875,0,8-3.58184814453125,8-8V8c0-4.4183349609375-3.58184814453125-8-8-8h0Z" style="fill: #d2d7e1;"></path>
    </g>
    <g>
      <g>
        <text transform="translate(1063.227783203125 198.879425048828125)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
        <rect x="1042.976766616076929" y="186.787933349609375" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
      </g>
      <g>
        <text transform="translate(1161.8095703125 198.879425048828125)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
        <rect x="1141.55854802893009" y="186.787933349609375" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
      </g>
    </g>
  </g>
  <g id="Layer_3" data-name="Layer 3">
    <g>
      <line x1="1190.299625505140284" y1="61.748875124867482" x2="1190.299625505140284" y2="82.588222043101268" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <g>
        <g>
          <rect x="1169.299625505140284" y="20.92410553497939" width="42" height="29.400000000005093" rx="4" ry="4" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></rect>
          <line x1="1181.899625505135191" y1="58.724105534978662" x2="1198.699625505132644" y2="58.724105534978662" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></line>
        </g>
        <line x1="1190.299625505140284" y1="50.324105534984483" x2="1190.299625505140284" y2="58.724105534978662" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></line>
      </g>
      <rect x="20.000057112048125" y="82.778254379065402" width="89" height="80" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="109.000061035155341" y1="122.778228759765625" x2="121.64324951171875" y2="122.778228759765625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="120.47607421875 126.767303466796875 127.384246826171875 122.778228759765625 120.47607421875 118.789215087890625 120.47607421875 126.767303466796875"></polygon>
      </g>
      <g>
        <line x1="1121.91546630859375" y1="122.778228759765625" x2="1134.55865478515625" y2="122.778228759765625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="1133.3914794921875 126.767303466796875 1140.29962158203125 122.778228759765625 1133.3914794921875 118.789215087890625 1133.3914794921875 126.767303466796875"></polygon>
      </g>
      <rect x="127.453533601903473" y="82.778254379065402" width="75" height="80" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="202.453536987304688" y1="122.778228759765625" x2="215.096725463867188" y2="122.778228759765625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="213.929534912109375 126.767303466796875 220.837707519530341 122.778228759765625 213.929534912109375 118.789215087890625 213.929534912109375 126.767303466796875"></polygon>
      </g>
      <rect x="220.907010091758821" y="82.778254379065402" width="85" height="80" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="305.907012939453125" y1="122.778228759765625" x2="318.550201416015625" y2="122.778228759765625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="317.383010864257812 126.767303466796875 324.291191101074219 122.778228759765625 317.383010864257812 118.789215087890625 317.383010864257812 126.767303466796875"></polygon>
      </g>
      <rect x="324.360486581615078" y="82.778254379065402" width="95" height="80" rx="3.999999999999998" ry="3.999999999999998" style="fill: #007884;"></rect>
      <g>
        <line x1="419.36048698425293" y1="122.778228759765625" x2="432.003681182861328" y2="122.778228759765625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="430.836488723754883 126.767303466796875 437.744663238525391 122.778228759765625 430.836488723754883 118.789215087890625 430.836488723754883 126.767303466796875"></polygon>
      </g>
      <g>
        <line x1="965.96649169921875" y1="133.777130126953125" x2="1015.60968017578125" y2="133.777130126953125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="1014.4425048828125 137.766143798828125 1021.35064697265625 133.777130126953125 1014.4425048828125 129.788055419921875 1014.4425048828125 137.766143798828125"></polygon>
      </g>
      <path d="M1029.915447644445521,82.778254379065402h84c4.415320195952063,0,8,3.584679804047994,8,8v64.9988520729421c0,3.818614043792564-3.100230115765271,6.918844159557921-6.918844159557921,6.918844159557921h-85.081155840442079c-4.415320195952063,0-8-3.584679804047994-8-8v-63.91769623250002c0-4.415320195952006,3.584679804047937-8,8-8Z" style="fill: #2a2aea;"></path>
      <rect x="1140.299625505140284" y="82.778254379065402" width="100" height="80" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(45.3216552734375 126.869781494140625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">filesrc</tspan></text>
      <text transform="translate(137.56890869140625 126.869903564453125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtdemux</tspan></text>
      <text transform="translate(230.338363647460938 126.869415283203125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">h264parse</tspan></text>
      <text transform="translate(330.878856658935547 126.869781494140625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
      <rect x="437.744664442308022" y="82.778254379065402" width="95" height="80" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="532.744659423828125" y1="122.778228759765625" x2="545.387863159179688" y2="122.778228759765625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="544.220672607421875 126.767303466796875 551.12884521484375 122.778228759765625 544.220672607421875 118.789215087890625 544.220672607421875 126.767303466796875"></polygon>
      </g>
      <text transform="translate(475.540870666503906 126.869781494140625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">tee</tspan></text>
      <text transform="translate(1029.16387939453125 126.828399658203125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtivcomposer</tspan></text>
      <text transform="translate(1150.9346923828125 126.869171142578125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Waylandsink</tspan></text>
      <text transform="translate(969.92889404296875 128.228424072265625)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">sink_1</tspan></text>
      <g>
        <line x1="532.744659423828125" y1="93.779388427734375" x2="1014.5804443359375" y2="93.779388427734375" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="1013.4132080078125 97.768463134765625 1020.3214111328125 93.779388427734375 1013.4132080078125 89.790313720703125 1013.4132080078125 97.768463134765625"></polygon>
      </g>
      <text transform="translate(968.8997802734375 88.100067138671875)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">sink_0</tspan></text>
      <g>
        <rect x="551.128842303001875" y="102.695950611565422" width="120.000000000007276" height="60" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <g>
          <line x1="671.12884521484375" y1="132.695953369140625" x2="683.77203369140625" y2="132.695953369140625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
          <polygon points="682.6048583984375 136.685028076171875 689.513031005859375 132.695953369140625 682.6048583984375 128.706878662109375 682.6048583984375 136.685028076171875"></polygon>
        </g>
        <rect x="689.58231879286177" y="102.695950611565422" width="90.000000000003638" height="60" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <g>
          <line x1="779.582305908203125" y1="132.695953369140625" x2="792.22552490234375" y2="132.695953369140625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
          <polygon points="791.058319091796875 136.685028076171875 797.96649169921875 132.695953369140625 791.058319091796875 128.706878662109375 791.058319091796875 136.685028076171875"></polygon>
        </g>
        <rect x="797.966496653556533" y="102.695950611565422" width="168" height="60" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <text transform="translate(562.590286254882812 136.786895751953125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtimlvconverter</tspan></text>
        <text transform="translate(704.67486572265625 136.787261962890625)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtimltflite</tspan></text>
        <text transform="translate(827.473846435546875 136.786895751953125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtimlpostprocess</tspan></text>
      </g>
      <line x1="63.265946771663948" y1="61.748875124867482" x2="63.265946771663948" y2="82.588222043101268" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <g>
        <path d="M71.250057112048125,16.558842788903348h-20.25c-2.485281229017346,0-4.5,2.014718770980835-4.5,4.5v36c0,2.485283374786377,2.014718770982654,4.5,4.5,4.5h27c2.485283374786377,0,4.5-2.014716625213623,4.5-4.5v-29.25l-11.25-11.25Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
        <path d="M69.000057112048125,16.558842788903348v9c0,2.485281229019165,2.014718770980835,4.5,4.5,4.5h9" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
        <path d="M60.000057112048125,36.808842788903348l11.25,6.75-11.25,6.75v-13.5Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
      </g>
    </g>
  </g>
</svg>

Figure : gst-ai-superresolution pipeline (file sink)
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1428.747283935548694" height="226.200714111328125" viewbox="0 0 1428.747283935548694 226.200714111328125">
  <g id="Layer_2" data-name="Layer 2">
    <g>
      <rect x=".499847412109375" y=".500030517578125" width="1427.74755859375" height="225.201171875" rx="7.499999999999944" ry="7.499999999999944" style="fill: #fafafa;"></rect>
      <path d="M1420.747283935546875,1c3.859802246091931,0,7.000000000001819,3.14019775390625,7.000000000001819,7.000030517578125v210.20068359375c0,3.85986328125-3.140197753909888,7-7.000000000001819,7H8c-3.859832763671875,0-7-3.14013671875-7-7V8.000030517578125c0-3.859832763671875,3.140167236328125-7.000030517578125,7-7.000030517578125h1412.747283935546875M1420.747283935546875,0H8C3.581817626953125,0,0,3.581634521484375,0,8.000030517578125v210.20068359375c0,4.41839599609375,3.581817626953125,8,8,8h1412.747283935546875c4.418334960942957,0,8.000000000001819-3.58160400390625,8.000000000001819-8V8.000030517578125c0-4.41839599609375-3.581665039058862-8.000030517578125-8.000000000001819-8.000030517578125h0Z" style="fill: #d2d7e1;"></path>
    </g>
    <g>
      <g>
        <text transform="translate(1231.67559814453125 206.43524169921875)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
        <rect x="1211.424601394239289" y="194.343761486405128" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
      </g>
      <g>
        <text transform="translate(1330.257408142089844 206.43524169921875)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
        <rect x="1310.00638280709245" y="194.343761486405128" width="16" height="16" rx="2" ry="2" style="fill: #007884;"></rect>
      </g>
    </g>
  </g>
  <g id="Layer_3" data-name="Layer 3">
    <g>
      <rect x="20.000008163492566" y="88.600782088124106" width="90.779999999999745" height="81.600000000000364" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="110.779998779295966" y1="129.400787353515625" x2="123.7908935546875" y2="129.400787353515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="122.623687744140625 133.389862060546875 129.5318603515625 129.400787353515625 122.623687744140625 125.411712646484375 122.623687744140625 133.389862060546875"></polygon>
      </g>
      <g>
        <line x1="1090.606719970703125" y1="129.400787353515625" x2="1103.617584228515625" y2="129.400787353515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="1102.450408935546875 133.389862060546875 1109.358612060546875 129.400787353515625 1102.450408935546875 125.411712646484375 1102.450408935546875 133.389862060546875"></polygon>
      </g>
      <rect x="129.602554183145003" y="88.600782088124106" width="76.5" height="81.600000000000364" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="206.102554321289062" y1="129.400787353515625" x2="219.113433837890625" y2="129.400787353515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="217.946243286132812 133.389862060546875 224.854415893554688 129.400787353515625 217.946243286132812 125.411712646484375 217.946243286132812 133.389862060546875"></polygon>
      </g>
      <rect x="224.925100202797694" y="88.600782088124106" width="86.699999999999818" height="81.600000000000364" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="311.625099182129816" y1="129.400787353515625" x2="324.635978698730469" y2="129.400787353515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="323.468788146972656 133.389862060546875 330.376960754394531 129.400787353515625 323.468788146972656 125.411712646484375 323.468788146972656 133.389862060546875"></polygon>
      </g>
      <rect x="330.447646222450203" y="88.600782088124106" width="96.900000000000546" height="81.600000000000364" rx="4.000000000000001" ry="4.000000000000001" style="fill: #007884;"></rect>
      <g>
        <line x1="427.347646236419678" y1="129.400787353515625" x2="440.358523368835449" y2="129.400787353515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="439.19133186340332 133.389862060546875 446.099508285522461 129.400787353515625 439.19133186340332 125.411712646484375 439.19133186340332 133.389862060546875"></polygon>
      </g>
      <g>
        <line x1="936.638763427734375" y1="140.619598388671875" x2="982.289642333984375" y2="140.619598388671875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="981.122467041015625 144.608673095703125 988.030670166015625 140.619598388671875 981.122467041015625 136.630523681640625 981.122467041015625 144.608673095703125"></polygon>
      </g>
      <path d="M996.60672239122141,88.600782088124106h86c4.415320195952063,0,8,3.584679804047994,8,8v66.597205997592027c0,3.818614043792593-3.100230115765271,6.918844159557921-6.918844159557921,6.918844159557921h-87.081155840442079c-4.415320195951949,0-8-3.584679804047994-8-8v-65.516050157149948c0-4.415320195952006,3.584679804048051-8,8-8Z" style="fill: #2a2aea;"></path>
      <rect x="1109.358583809127595" y="88.600782088124106" width="86.700000000000728" height="81.600000000000364" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(46.211631059646606 133.574052810668945)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">filesrc</tspan></text>
      <text transform="translate(140.467978715896606 133.574052810668945)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtdemux</tspan></text>
      <text transform="translate(235.206259965896606 133.574052810668945)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">h264parse</tspan></text>
      <text transform="translate(337.915732622146606 133.574052810668945)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
      <rect x="446.099507640357842" y="88.600782088124106" width="61.913015884681045" height="81.600000000000364" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="508.012519836425781" y1="129.400787353515625" x2="521.023399353027344" y2="129.400787353515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="519.856208801269531 133.389862060546875 526.764381408691406 129.400787353515625 519.856208801269531 125.411712646484375 519.856208801269531 133.389862060546875"></polygon>
      </g>
      <text transform="translate(467.352256059646606 133.574052810668945)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">tee</tspan></text>
      <text transform="translate(996.855185747146606 133.532060623168945)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtivcomposer</tspan></text>
      <text transform="translate(1119.640341997146606 133.591630935668945)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">h264parse</tspan></text>
      <g>
        <line x1="1195.997344970703125" y1="129.400787353515625" x2="1209.008209228515625" y2="129.400787353515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="1207.841033935546875 133.389862060546875 1214.749176025390625 129.400787353515625 1207.841033935546875 125.411712646484375 1207.841033935546875 133.389862060546875"></polygon>
      </g>
      <rect x="1214.749197260298388" y="88.600782088124106" width="86.700000000000728" height="81.600000000000364" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(1230.642295122146606 133.591630935668945)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">mp4mux</tspan></text>
      <g>
        <line x1="1301.449188232421875" y1="129.400787353515625" x2="1314.460052490234375" y2="129.400787353515625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="1313.292877197265625 133.389862060546875 1320.201080322265625 129.400787353515625 1313.292877197265625 125.411712646484375 1313.292877197265625 133.389862060546875"></polygon>
      </g>
      <rect x="1322.047306644944911" y="88.600782088124106" width="86.700000000000728" height="81.600000000000364" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(1343.142295122146606 133.591630935668945)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">filesink</tspan></text>
      <text transform="translate(941.503623247146606 130.879716873168945)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">sink_1</tspan></text>
      <g>
        <line x1="508.012519836425781" y1="99.821929931640625" x2="981.239837646484375" y2="99.821929931640625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="980.072601318359375 103.811004638671875 986.980804443359375 99.821929931640625 980.072601318359375 95.832916259765625 980.072601318359375 103.811004638671875"></polygon>
      </g>
      <text transform="translate(940.453818559646606 91.989091873168945)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">sink_0</tspan></text>
      <g>
        <rect x="526.7643849429478" y="108.916832245273326" width="122.400000000008731" height="61.200000000000728" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <g>
          <line x1="649.164382934570312" y1="139.516815185546875" x2="662.175262451171875" y2="139.516815185546875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
          <polygon points="661.008071899414062 143.505889892578125 667.916244506835938 139.516815185546875 661.008071899414062 135.527740478515625 661.008071899414062 143.505889892578125"></polygon>
        </g>
        <rect x="667.986930962604674" y="108.916832245273326" width="91.80000000000291" height="61.200000000000728" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <g>
          <line x1="759.78692626953125" y1="139.516815185546875" x2="772.797821044921875" y2="139.516815185546875" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
          <polygon points="771.630615234375 143.505889892578125 778.538787841796875 139.516815185546875 771.630615234375 135.527740478515625 771.630615234375 143.505889892578125"></polygon>
        </g>
        <rect x="778.538792380513769" y="108.916832245273326" width="158.099999999998545" height="61.200000000000728" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <text transform="translate(539.425498247146606 143.689287185668945)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtimlvconverter</tspan></text>
        <text transform="translate(683.979209184646606 143.690263748168945)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtimltflite</tspan></text>
        <text transform="translate(803.095420122146606 143.689287185668945)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtimlpostprocess</tspan></text>
      </g>
      <line x1="64.131215616300324" y1="67.150815248842264" x2="64.131215616300324" y2="88.406949105441527" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <g>
        <path d="M72.275008163492203,21.056982266158229h-20.654999999999745c-2.534986853597729,0-4.590000000000146,2.055013146400597-4.590000000000146,4.590000000000146v36.720000000001164c0,2.534989042282177,2.055013146402416,4.590000000000146,4.590000000000146,4.590000000000146h27.539999999999964c2.534989042282177,0,4.590000000000146-2.055010957717968,4.590000000000146-4.590000000000146v-29.835000000000946l-11.475000000000364-11.475000000000364Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
        <path d="M69.98000816349213,21.056982266158229v9.180000000000291c0,2.534986853599548,2.055013146400597,4.590000000000146,4.590000000000146,4.590000000000146h9.180000000000291" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
        <path d="M60.800008163492748,41.711982266158884l11.474999999999454,6.885000000000218-11.474999999999454,6.885000000000218v-13.770000000000437Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
      </g>
      <line x1="1364.138514097754523" y1="67.150815248842264" x2="1364.138514097754523" y2="88.406949105441527" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <g>
        <path d="M1372.282306644945493,21.056982266158229h-20.654999999998836c-2.534986853599548,0-4.590000000000146,2.055013146400597-4.590000000000146,4.590000000000146v36.720000000001164c0,2.534989042282177,2.055013146400597,4.590000000000146,4.590000000000146,4.590000000000146h27.540000000000873c2.534989042280358,0,4.589999999996508-2.055010957717968,4.589999999996508-4.590000000000146v-29.835000000000946l-11.474999999998545-11.475000000000364Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
        <path d="M1369.987306644947239,21.056982266158229v9.180000000000291c0,2.534986853599548,2.055013146400597,4.590000000000146,4.590000000000146,4.590000000000146h9.179999999996653" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
        <path d="M1360.807306644946948,41.711982266158884l11.474999999998545,6.885000000000218-11.474999999998545,6.885000000000218v-13.770000000000437Z" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></path>
      </g>
    </g>
  </g>
</svg>

## Sample model files

Table : Sample model for gst-ai-superresolution

| Runtime | Model files |
| :--- | :--- |
| LiteRT | <var class="keyword varname">quicksrnetsmall_quantized.tflite</var> |

## Run the application on the target device

Note: The commands in this section are targeted for the sample
                applications based on QLI GA 1.5 (PPA version 05900 in Ubuntu) or later releases.
                Run the `apt-cache policy gstreamer1.0-qcom-sample-apps` command to
                check your QIM version. If you are using sample applications from older versions,
                run the application with the `--help` option for more
                instructions.

The sample application uses the
                    /etc/configs/config-superresolution.json file to read the
                input parameters.

To create your own config JSON file, use [config-superresolution.json](https://git.codelinaro.org/clo/le/platform/vendor/qcom-opensource/gst-plugins-qti-oss/-/blob/imsdk.lnx.2.0.0.r2-rel/gst-sample-apps/gst-ai-superresolution/config-superresolution.json) as a
                reference.

1. Ensure that you complete the Prerequisites.
2. Update the config JSON file based on the model, input stream, and other
                    properties. For more information, see Config JSON field description.
3. Use the following format of the config-superresolution.json
                        file:

        {
          "input-file-path": "<input-video-path>",
          "model": "<path-to-model-file>",
          "output-file-path": "<path-to-output-video>"
        }Copy to clipboard

For example, run the application using the custom video input file and model
                        paths:

        {
            "input-file-path": "/etc/media/video.mp4",
            "model": "/etc/models/quicksrnetsmall_quantized.tflite"
        }Copy to clipboard
4. Run the gst-ai-superresolution
                    application:

        gst-ai-superresolution --config-file=/etc/configs/config-superresolution.jsonCopy to clipboard
5. To display the available help options, run the following command in the SSH
                    shell:

        gst-ai-superresolution -hCopy to clipboard
6. To stop the use case, use CTRL +
                    C.

## Expected output

The output is displayed on an HDMI monitor.

Figure : Expected output for VSR
                
                ![](data:image/png;base64,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)

## Pipeline flow

The following table lists the plugins used in the video super resolution
                    pipeline:| Plugin | Description |
| --- | --- |
| filesrc | Captures the video stream and uses tee to split the stream for<br>                                inferencing. |
| qtimlvconverter | Used by AI processing stream for preprocessing:<ol class="ol" id="video-super-resolution__ol_j34_ddg_q1c"><br>                                    <li class="li">Receives the video stream on its sink pad.</li><br><br>                                    <li class="li">Performs the following preprocessing on the stream data.<br>                                        This preprocessing is done when the model expects<br>                                        floating-point values as input.<ol class="ol" type="a" id="video-super-resolution__ol_m5z_cpr_lbc"><br>                                            <li class="li">Color conversion</li><br><br>                                            <li class="li">Scaling (up or down)</li><br><br>                                            <li class="li">Normalization</li><br><br>                                        </ol><br></li><br><br>                                    <li class="li">Converts the preprocessed video stream to a tensor stream on<br>                                        its source pad. </li><br><br>                                </ol><br><br>The tensor stream is used for inferencing in the later<br>                                    stages of the pipeline. |
| qtimltflite | Runs on LiteRT and uses the<br>                                    quicksrnetsmall\_quantizedmodel.<ol class="ol" id="video-super-resolution__ol_lwl_521_mcc"><br>                                    <li class="li">The inference runtime receives the tensor stream on its sink<br>                                        pad.</li><br><br>                                    <li class="li">The runtime runs the inference.</li><br><br>                                    <li class="li">Produces a tensor stream with the inference results on its<br>                                        source pad.</li><br><br>                                </ol> |
| qtimlpostprocess | Handles inference results from any super resolution mode.<ol class="ol" id="video-super-resolution__ul_w2c_xf1_mcc"><br>                                    <li class="li">Loads SRNet module. </li><br><br>                                    <li class="li">Produces results as video frames. </li><br><br>                                    <li class="li">Sends them to the sink pad of qtivcomposer.</li><br><br>                                </ol> |
| qtivcomposer | <ol class="ol" id="video-super-resolution__ol_dmb_2vr_lbc"><br>                                    <li class="li">Composes frames with contents from its sink pads.</li><br><br>                                    <li class="li">Pushes the GStreamer buffers containing these composed<br>                                        frames to its source pad.</li><br><br>                                </ol> |
| Waylandsink | <ol class="ol" id="video-super-resolution__ol_kjr_fvr_lbc"><br>                                    <li class="li">Waylandsink submits the video stream received on its sink<br>                                        pad to Weston.</li><br><br>                                    <li class="li">Weston renders the video stream on a local display.</li><br><br>                                </ol> |

## Config JSON field description

The different parameters available to configure the JSON file and run the use case
                are as follows:

Table : Field description–config-superresolution.json file

| Field | Values/description |
| :--- | :--- |
| **Input source** | `input-file-path`: The directory path of the input<br>                                video. |
| **Models** | `model`: The path to the super resolution<br>                                model. |
| **Output source** | `output-file-path`: The directory path of the<br>                                    output video. If the output-file-path isn't provided, the<br>                                    display output is enabled. |

## Related information

Video super resolution and display with LiteRT

**Parent Topic:** Run AI/ML sample applications

Last Published: Feb 20, 2026

Previous Topic
 
Monodepth from video Next Topic

Multistream inference