From c72ea24794ebda1c5c6e66432c10ab4d96b5889c Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Sat, 27 May 2023 10:22:31 -0700 Subject: [PATCH] python-codecs: fix vaapi post procesisng --- plugins/python-codecs/.vscode/settings.json | 8 ++++---- plugins/python-codecs/package-lock.json | 4 ++-- plugins/python-codecs/package.json | 2 +- .../python-codecs/src/gstreamer_postprocess.py | 17 ++++++++++------- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/plugins/python-codecs/.vscode/settings.json b/plugins/python-codecs/.vscode/settings.json index e1ff91bac..0b1007d62 100644 --- a/plugins/python-codecs/.vscode/settings.json +++ b/plugins/python-codecs/.vscode/settings.json @@ -1,8 +1,8 @@ { // docker installation - "scrypted.debugHost": "koushik-thin", - "scrypted.serverRoot": "/server", + // "scrypted.debugHost": "koushik-thin", + // "scrypted.serverRoot": "/server", // windows installation // "scrypted.debugHost": "koushik-windows", @@ -13,8 +13,8 @@ // "scrypted.serverRoot": "/home/pi/.scrypted", // local checkout - // "scrypted.debugHost": "127.0.0.1", - // "scrypted.serverRoot": "/Users/koush/.scrypted", + "scrypted.debugHost": "127.0.0.1", + "scrypted.serverRoot": "/Users/koush/.scrypted", "scrypted.pythonRemoteRoot": "${config:scrypted.serverRoot}/volume/plugin.zip", "python.analysis.extraPaths": [ diff --git a/plugins/python-codecs/package-lock.json b/plugins/python-codecs/package-lock.json index 13faa1d17..dc5b3ea8f 100644 --- a/plugins/python-codecs/package-lock.json +++ b/plugins/python-codecs/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/python-codecs", - "version": "0.1.64", + "version": "0.1.68", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@scrypted/python-codecs", - "version": "0.1.64", + "version": "0.1.68", "devDependencies": { "@scrypted/sdk": "file:../../sdk" } diff --git a/plugins/python-codecs/package.json b/plugins/python-codecs/package.json index a976bff8f..7123ce3ed 100644 --- a/plugins/python-codecs/package.json +++ b/plugins/python-codecs/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/python-codecs", - "version": "0.1.64", + "version": "0.1.68", "description": "Python Codecs for Scrypted", "keywords": [ "scrypted", diff --git a/plugins/python-codecs/src/gstreamer_postprocess.py b/plugins/python-codecs/src/gstreamer_postprocess.py index 786464990..e41e6a775 100644 --- a/plugins/python-codecs/src/gstreamer_postprocess.py +++ b/plugins/python-codecs/src/gstreamer_postprocess.py @@ -129,7 +129,7 @@ class GstreamerPostProcess(): class VaapiPostProcess(): def __init__(self) -> None: - self.postprocess = ' ! vaapipostproc name=vaapipostproc' + self.postprocess = ' ! vaapipostproc name=vaapipostproc ! capsfilter name=capsFilter' self.resize = None async def create(self, gst, pipeline: str): @@ -138,6 +138,7 @@ class VaapiPostProcess(): self.gst = gst self.g = g self.vaapipostproc = self.gst.get_by_name('vaapipostproc') + self.capsFilter = self.gst.get_by_name('capsFilter') def update(self, caps, sampleSize: Tuple[int, int], options: scrypted_sdk.ImageOptions): sampleWidth, sampleHeight = sampleSize @@ -171,15 +172,18 @@ class VaapiPostProcess(): vaapipostproc.set_property('width', outputWidth) vaapipostproc.set_property('height', outputHeight) + # TODO: gray fast path? # not sure vaapi supports non-rgba across all hardware... # GST_VIDEO_FORMAT_RGBA (11) – rgb with alpha channel last # GST_VIDEO_FORMAT_GRAY8 (25) – 8-bit grayscale - format = toCapsFormat(options) - if format == 'GRAY8': - vaapipostproc.set_property('format', 25) - else: - vaapipostproc.set_property('format', 11) + # format = toCapsFormat(options) + # if format != 'GRAY8' and format != 'RGBA': + # format = 'RGBA' + + vaapipostproc.set_property('format', 11) + format = 'RGBA' + self.capsFilter.set_property('caps', caps.from_string(f"video/x-raw,format={format}")) if crop: left = int(crop['left']) @@ -196,7 +200,6 @@ class VaapiPostProcess(): right = 300 bottom = 300 - print(left, top, right, bottom) vaapipostproc.set_property('crop-left', left) vaapipostproc.set_property('crop-top', top) vaapipostproc.set_property('crop-right', right)