diff --git a/debian/changelog b/debian/changelog
index 1eee24a..22585ec 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
 edgetpuvision (6-4) mendel-eagle; urgency=medium
 
   * Switch to native glbox.
+  * Switch to v4l2convert for HW decoder format conversion.
 
  -- Coral Team <coral-support@google.com>  Thu, 29 Oct 2020 13:04:30 -0700
 
diff --git a/debian/control b/debian/control
index 06da349..a393b05 100644
--- a/debian/control
+++ b/debian/control
@@ -14,7 +14,6 @@
          gir1.2-gst-plugins-base-1.0,
          gir1.2-gstreamer-1.0,
          gir1.2-gtk-3.0,
-         gst-mtkmdp,
          gstreamer1.0-gl,
          gstreamer1.0-plugins-bad,
          gstreamer1.0-plugins-good,
diff --git a/edgetpuvision/pipelines.py b/edgetpuvision/pipelines.py
index 6646b8e..89978d7 100644
--- a/edgetpuvision/pipelines.py
+++ b/edgetpuvision/pipelines.py
@@ -14,22 +14,11 @@
 
 from .gst import *
 
-#TODO: Use v4l2convert to run mdp.
 def decoded_file_src(filename, render_size):
     return [
         Source('file', location=filename),
         Filter('decodebin'),
-        Filter('mtkmdp width=%d height=%d format=BGRA' % (render_size.width, render_size.height)),
-    ]
-
-#TODO: Remove this function when v4l2convert is available.
-def decoded_img_file_src(filename, render_size):
-    return [
-        Source('file', location=filename),
-        Filter('decodebin'),
-        Filter('videoconvert'),
-        Caps('video/x-raw,format=I420'),
-        Filter('glfilterbin filter=glbox'),
+        Filter('v4l2convert'),
         Caps('video/x-raw,width=%d,height=%d,format=BGRA' % (render_size.width, render_size.height)),
     ]
 
@@ -44,7 +33,6 @@
 
 def display_sink():
     return [
-        Filter('videoconvert'),
         Filter('rsvgoverlay', name='svg_overlay'),
         Sink('wayland', name='glsink', sync=False)
     ]
@@ -63,7 +51,7 @@
 # Display
 def image_display_pipeline(filename, layout):
     return (
-        [decoded_img_file_src(filename, layout.render_size),
+        [decoded_file_src(filename, layout.render_size),
          Filter('imagefreeze'),
          Caps('video/x-raw', framerate='30/1'),
          Tee(name='t')],
@@ -103,24 +91,17 @@
 # Headless
 def image_headless_pipeline(filename, layout):
     return (
-      [decoded_img_file_src(filename, layout.render_size),
+      [decoded_file_src(filename, layout.render_size),
        Filter('imagefreeze'),
        Filter('glupload'),
        inference_pipeline(layout)],
     )
 
-# MTKMDP can't be used directly with glbox.
-# TODO: Remove the branching when v4l2convert is used.
 def video_headless_pipeline(filename, layout):
     return (
-        [decoded_file_src(filename, layout.render_size),
-         Tee(name='t')],
-        [Pad('t'),
-         Queue(max_size_buffers=1, leaky='downstream'),
-         Filter('fakesink sync=False')],
-        [Pad('t'),
-         Queue(max_size_buffers=1, leaky='downstream'),
-         inference_pipeline(layout)],
+      [decoded_file_src(filename, layout.render_size),
+       Filter('glupload'),
+       inference_pipeline(layout)],
     )
 
 def camera_headless_pipeline(fmt, layout):
@@ -130,7 +111,7 @@
          inference_pipeline(layout)],
     )
 
-# Streaming
+# Streaming -- not supported yet.
 def video_streaming_pipeline(filename, layout):
     return (
         [Source('file', location=filename),
