Get rid of explicit use of vpudec filter.
Change-Id: Ia6f8476ea79783d12dba63b1c6d3009e0efba9df
diff --git a/edgetpuvision/gstreamer.py b/edgetpuvision/gstreamer.py
index b4ecb6c..80b68a7 100644
--- a/edgetpuvision/gstreamer.py
+++ b/edgetpuvision/gstreamer.py
@@ -225,11 +225,6 @@
display=display)
def run(inference_size, render_overlay, *, source, downscale, display):
- reg = Gst.Registry.get()
- for feature in reg.get_feature_list_by_plugin('vpu.imx'):
- # Otherwise decodebin uses vpudec to decode JPEG images and fails.
- feature.set_rank(Gst.Rank.MARGINAL)
-
fmt = parse_format(source)
if fmt:
run_camera(inference_size, render_overlay, fmt, display)
diff --git a/edgetpuvision/pipelines.py b/edgetpuvision/pipelines.py
index fb06a4a..2c049e2 100644
--- a/edgetpuvision/pipelines.py
+++ b/edgetpuvision/pipelines.py
@@ -1,20 +1,12 @@
from .gst import *
-def image_file(filename):
+def decoded_file_src(filename):
return (
Filter('filesrc', location=filename),
Filter('decodebin'),
)
-def video_file(filename):
- return (
- Filter('filesrc', location=filename),
- Filter('qtdemux'),
- Filter('h264parse'),
- Filter('vpudec'),
- )
-
-def v4l2_camera(fmt):
+def v4l2_src(fmt):
return (
Filter('v4l2src', device=fmt.device),
Caps('video/x-raw', format=fmt.pixel, width=fmt.size.width, height=fmt.size.height,
@@ -24,16 +16,8 @@
def display_sink(fullscreen, sync=False):
return Filter('kmssink' if fullscreen else 'waylandsink', sync=sync),
-def h264_sink(display_decoded=False):
- appsink = Filter('appsink', name='h264sink', emit_signals=True, max_buffers=1, drop=False, sync=False),
-
- if display_decoded:
- return Tee(pads=(
- (Queue(), appsink),
- (Queue(), Filter('vpudec'), Filter('kmssink', sync=False))
- ))
-
- return appsink
+def h264_sink():
+ return Filter('appsink', name='h264sink', emit_signals=True, max_buffers=1, drop=False, sync=False)
def inference_pipeline(render_size, inference_size):
size = max_inner_size(render_size, inference_size)
@@ -51,7 +35,7 @@
def image_display_pipeline(filename, render_size, inference_size, fullscreen):
size = max_inner_size(render_size, inference_size)
return (
- image_file(filename),
+ decoded_file_src(filename),
Tee(pads=((
Queue(),
Filter('imagefreeze'),
@@ -63,18 +47,14 @@
),(
Queue(),
Filter('imagefreeze'),
- Filter('videoconvert'),
- Filter('videoscale'),
- Caps('video/x-raw', format='RGB', width=size.width, height=size.height),
- Filter('videobox', autocrop=True),
- Caps('video/x-raw', width=inference_size.width, height=inference_size.height),
- Filter('appsink', name='appsink', emit_signals=True, max_buffers=1, drop=True, sync=False)
+ Filter('glupload'),
+ inference_pipeline(render_size, inference_size),
)))
)
def video_display_pipeline(filename, render_size, inference_size, fullscreen):
return (
- video_file(filename),
+ decoded_file_src(filename),
Filter('glupload'),
Tee(pads=((
Queue(max_size_buffers=1),
@@ -90,7 +70,7 @@
def camera_display_pipeline(fmt, render_size, inference_size, fullscreen):
return (
- v4l2_camera(fmt),
+ v4l2_src(fmt),
Filter('glupload'),
Tee(pads=((
Queue(max_size_buffers=1, leaky='downstream'),
@@ -106,7 +86,7 @@
# Headless
def image_headless_pipeline(filename, render_size, inference_size):
return (
- image_file(filename),
+ decoded_file_src(filename),
Filter('imagefreeze'),
Filter('glupload'),
inference_pipeline(render_size, inference_size),
@@ -114,14 +94,14 @@
def video_headless_pipeline(filename, render_size, inference_size):
return (
- video_file(filename),
+ decoded_file_src(filename),
Filter('glupload'),
inference_pipeline(render_size, inference_size),
)
def camera_headless_pipeline(fmt, render_size, inference_size):
return (
- v4l2_camera(fmt),
+ v4l2_src(fmt),
Filter('glupload'),
inference_pipeline(render_size, inference_size),
)
@@ -138,8 +118,7 @@
h264_sink()
), (
Queue(max_size_buffers=1),
- Filter('h264parse'),
- Filter('vpudec'),
+ Filter('decodebin'),
inference_pipeline(render_size, inference_size),
)))
)
@@ -147,7 +126,7 @@
def camera_streaming_pipeline(fmt, profile, bitrate, render_size, inference_size):
size = max_inner_size(render_size, inference_size)
return (
- v4l2_camera(fmt),
+ v4l2_src(fmt),
Tee(pads=((
Queue(max_size_buffers=1, leaky='downstream'),
Filter('videoconvert'),