Use v4l2convert to connect decodebin

Use v4l2convert to invoke mdp for HW video decoder format conversion.
 * Remove the branching of video source and image source
 * Remove the extra videoconvert before the displaysink
 * Remove the branching workaround in video_headless_pipeline

This will also eliminate the gstreamer error messages caused by the
mtkmdp element.

Bug: b/151393184, b/164147474

Change-Id: Icb1961161cf01d5236b5d688d1de39d5f61ecad2
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),