# Upscale images with super resolution Before running the pipeline command for a model, follow the required [Prerequisites](https://docs.qualcomm.com/doc/80-70029-15B/topic/use-ai-hub-models-with-gstreamer.html#prerequisites) Note The input video needs dimensions of 128x128 for optimal results. Run the following command to ensure your result is displayed on the connected display. export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1 Copy to clipboard ## QuickSRNetLarge QuickSRNetLarge is designed for upscaling images on mobile platforms to sharpen them in real-time. The AI Hub model is based on [this implementation of QuickSRNetLarge](https://github.com/quic/aimet-model-zoo/tree/develop/aimet_zoo_torch/quicksrnet). - Model: [QuickSRNetLarge](https://aihub.qualcomm.com/iot/models/quicksrnetlarge) 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/quicksrnetlarge_quantized.tflite ! queue ! \ qtimlpostprocess module=srnet ! video/x-raw,format=RGB ! queue ! mixer. Copy to clipboard ## QuickSRNetMedium QuickSRNetMedium is designed for upscaling images on mobile platforms to sharpen them in real-time. The AI Hub model is based on [this implementation of QuickSRNetMedium](https://github.com/quic/aimet-model-zoo/tree/develop/aimet_zoo_torch/quicksrnet). - Model: [QuickSRNetMedium](https://aihub.qualcomm.com/iot/models/quicksrnetmedium) 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/quicksrnetmedium_quantized.tflite ! queue ! \ qtimlpostprocess module=srnet ! video/x-raw,format=RGB ! queue ! mixer. Copy to clipboard ## QuickSRNetSmall QuickSRNetSmall is designed for upscaling images on mobile platforms to sharpen them in real-time. The AI Hub model is based on [this implementation of QuickSRNetSmall](https://github.com/quic/aimet-model-zoo/tree/develop/aimet_zoo_torch/quicksrnet). - Model: [QuickSRNetSmall](https://aihub.qualcomm.com/iot/models/quicksrnetsmall) 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 ## XLSR XLSR is designed for lightweight real-time upscaling of images. The AI Hub model is based on [this implementation of XLSR](https://github.com/quic/aimet-model-zoo/tree/develop/aimet_zoo_torch/xlsr). - Model: [XLSR](https://aihub.qualcomm.com/iot/models/xlsr) 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/xlsr_quantized.tflite ! queue ! \ qtimlpostprocess module=srnet ! video/x-raw,format=RGB ! queue ! mixer. Copy to clipboard Last Published: Apr 02, 2026 [Previous Topic Apply semantic segmentation to frames of a video](https://docs.qualcomm.com/bundle/publicresource/80-70029-15B/topics/semantic-segmentation.md) [Next Topic Run GenAI on-device](https://docs.qualcomm.com/bundle/publicresource/80-70029-15B/topics/run-on-device-genai.md)