# Video super resolution and display with LiteRT

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

Video super resolution (VSR) is supported on Qualcomm AI Hub quantized INT8 models
        with 128 ×128 input resolution and 512 × 512 output resolution.

Select [QuickSRNetSmall-Quantized](https://aihub.qualcomm.com/iot/models/quicksrnetsmall) to download the
            model file.

Run the use case on the target device with file source (128 ×128 input
            resolution):

    gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/etc/media/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw,format=NV12 ! \
    queue !  tee name=split split. ! queue ! qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<960, 1080>" \
    sink_1::position="<960, 0>" sink_1::dimensions="<960, 1080>" ! queue ! waylandsink sync=true fullscreen=true split. ! \
    qtimlvconverter   ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/etc/models/quicksrnetsmall_quantized.tflite ! \
    queue ! qtimlpostprocess module=srnet !  video/x-raw,format=RGB ! queue ! mixer.Copy to clipboard

The output is displayed on a Wayland display.

Figure : Pipeline for video resolution (Wayland display)
            
            <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1260.2996826171875" height="217.85400390625" viewbox="0 0 1260.2996826171875 217.85400390625">
  <g id="Layer_2" data-name="Layer 2">
    <g>
      <rect x=".49993896484375" y=".49951171875" width="1259.29931640625" height="216.8544921875" rx="7.499999999999996" ry="7.499999999999996" style="fill: #fafafa;"></rect>
      <path d="M1252.2996826171875,1c3.85980224609375,0,7,3.140167236328125,7,7v201.85400390625c0,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,8v201.85400390625c0,4.4183349609375,3.581848144530341,8,8,8h1244.2996826171875c4.41815185546875,0,8-3.5816650390625,8-8V8c0-4.4183349609375-3.58184814453125-8-8-8h0Z" style="fill: #d2d7e1;"></path>
    </g>
    <g>
      <g>
        <text transform="translate(1070.053924560546875 193.94549560546875)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Qualcomm </tspan></text>
        <rect x="1049.802900698528902" y="181.85400390625" width="16" height="16" rx="2" ry="2" style="fill: #2a2aea;"></rect>
      </g>
      <g>
        <text transform="translate(1168.635726928710938 193.94549560546875)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Open source</tspan></text>
        <rect x="1148.3846821113857" y="181.85400390625" 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="60.824711306508107" x2="1190.299625505140284" y2="81.664058224741893" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <g>
        <g>
          <rect x="1169.299625505140284" y="19.999941716620015" 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="57.799941716619287" x2="1198.699625505132644" y2="57.799941716619287" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></line>
        </g>
        <line x1="1190.299625505140284" y1="49.399941716625108" x2="1190.299625505140284" y2="57.799941716619287" style="fill: none; stroke: #000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2px;"></line>
      </g>
      <rect x="20.000057112048125" y="81.854090560706027" width="89" height="80" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="109.000061035155341" y1="121.85406494140625" x2="121.64324951171875" y2="121.85406494140625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="120.47607421875 125.8431396484375 127.384246826171875 121.85406494140625 120.47607421875 117.86505126953125 120.47607421875 125.8431396484375"></polygon>
      </g>
      <g>
        <line x1="1121.91546630859375" y1="121.85406494140625" x2="1134.55865478515625" y2="121.85406494140625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="1133.3914794921875 125.8431396484375 1140.29962158203125 121.85406494140625 1133.3914794921875 117.86505126953125 1133.3914794921875 125.8431396484375"></polygon>
      </g>
      <rect x="127.453533601903473" y="81.854090560706027" width="75" height="80" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="202.453536987304688" y1="121.85406494140625" x2="215.096725463867188" y2="121.85406494140625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="213.929534912109375 125.8431396484375 220.837707519530341 121.85406494140625 213.929534912109375 117.86505126953125 213.929534912109375 125.8431396484375"></polygon>
      </g>
      <rect x="220.907010091758821" y="81.854090560706027" width="85" height="80" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="305.907012939453125" y1="121.85406494140625" x2="318.550201416015625" y2="121.85406494140625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="317.383010864257812 125.8431396484375 324.291191101074219 121.85406494140625 317.383010864257812 117.86505126953125 317.383010864257812 125.8431396484375"></polygon>
      </g>
      <rect x="324.360486581615078" y="81.854090560706027" width="95" height="80" rx="3.999999999999998" ry="3.999999999999998" style="fill: #007884;"></rect>
      <g>
        <line x1="419.36048698425293" y1="121.85406494140625" x2="432.003681182861328" y2="121.85406494140625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="430.836488723754883 125.8431396484375 437.744663238525391 121.85406494140625 430.836488723754883 117.86505126953125 430.836488723754883 125.8431396484375"></polygon>
      </g>
      <g>
        <line x1="965.96649169921875" y1="132.85296630859375" x2="1015.60968017578125" y2="132.85296630859375" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="1014.4425048828125 136.84197998046875 1021.35064697265625 132.85296630859375 1014.4425048828125 128.8638916015625 1014.4425048828125 136.84197998046875"></polygon>
      </g>
      <path d="M1029.915447644445521,81.854090560706027h84c4.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="81.854090560706027" width="100" height="80" rx="4" ry="4" style="fill: #007884;"></rect>
      <text transform="translate(45.3216552734375 125.94561767578125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">filesrc</tspan></text>
      <text transform="translate(137.56890869140625 125.94573974609375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtdemux</tspan></text>
      <text transform="translate(230.338363647460938 125.94525146484375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">h264parse</tspan></text>
      <text transform="translate(330.878856658935547 125.94561767578125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">V4l2h264dec</tspan></text>
      <rect x="437.744664442308022" y="81.854090560706027" width="95" height="80" rx="4" ry="4" style="fill: #007884;"></rect>
      <g>
        <line x1="532.744659423828125" y1="121.85406494140625" x2="545.387863159179688" y2="121.85406494140625" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="544.220672607421875 125.8431396484375 551.12884521484375 121.85406494140625 544.220672607421875 117.86505126953125 544.220672607421875 125.8431396484375"></polygon>
      </g>
      <text transform="translate(475.540870666503906 125.94561767578125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">tee</tspan></text>
      <text transform="translate(1029.16387939453125 125.90423583984375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtivcomposer</tspan></text>
      <text transform="translate(1150.152587890625 125.9630126953125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">waylandsink </tspan></text>
      <text transform="translate(975.73602294921875 123.30426025390625)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">sink_1</tspan></text>
      <g>
        <line x1="532.744659423828125" y1="92.855224609375" x2="1014.5804443359375" y2="92.855224609375" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
        <polygon points="1013.4132080078125 96.84429931640625 1020.3214111328125 92.855224609375 1013.4132080078125 88.86614990234375 1013.4132080078125 96.84429931640625"></polygon>
      </g>
      <text transform="translate(974.7069091796875 85.1759033203125)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">sink_0</tspan></text>
      <g>
        <rect x="551.128842303001875" y="101.771786793206047" width="120.000000000007276" height="60" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <g>
          <line x1="671.12884521484375" y1="131.77178955078125" x2="683.77203369140625" y2="131.77178955078125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
          <polygon points="682.6048583984375 135.7608642578125 689.513031005859375 131.77178955078125 682.6048583984375 127.78271484375 682.6048583984375 135.7608642578125"></polygon>
        </g>
        <rect x="689.58231879286177" y="101.771786793206047" width="90.000000000003638" height="60" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <g>
          <line x1="779.582305908203125" y1="131.77178955078125" x2="792.22552490234375" y2="131.77178955078125" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
          <polygon points="791.058319091796875 135.7608642578125 797.96649169921875 131.77178955078125 791.058319091796875 127.78271484375 791.058319091796875 135.7608642578125"></polygon>
        </g>
        <rect x="797.966496653556533" y="101.771786793206047" width="168" height="60" rx="4" ry="4" style="fill: #2a2aea;"></rect>
        <text transform="translate(562.590286254882812 135.86273193359375)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtimlvconverter</tspan></text>
        <text transform="translate(704.67486572265625 135.86309814453125)" style="fill: #fff; font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">qtimltflite</tspan></text>
        <text transform="translate(827.473846435546875 135.86273193359375)" 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="60.824711306508107" x2="63.265946771663948" y2="81.664058224741893" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <g>
        <path d="M71.250057112048125,15.634678970543973h-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,15.634678970543973v9c0,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,35.884678970543973l11.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>

For information about expected output and plugins used in this pipeline, see the [Video super-resolution](https://docs.qualcomm.com/doc/80-70022-50/topic/video-super-resolution.html) sample application.

## Related information

[qtimlvsuperresolution](https://docs.qualcomm.com/doc/80-70022-50/topic/qtimlvsuperresolution.html)

**Parent Topic:** [LiteRT use cases](https://docs.qualcomm.com/doc/80-70022-50/topic/tensorflow-lite-use-cases.html)

Last Published: Feb 20, 2026

[Previous Topic
Pose estimation and encode with LiteRT](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/single-camera-stream-with-pose-estimation-and-encode.md) [Next Topic
Single stream from camera to RTSP with ML detection](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/single-stream-from-camera-to-rtsp-with-ml-detection.md)