From 79765ba58e72c0e20a52cf5768fc3dcaeac26cd3 Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Fri, 26 May 2023 08:56:27 -0700 Subject: [PATCH] python-codecs: fix assert spam, code cleanups --- plugins/python-codecs/.vscode/settings.json | 8 ++++---- plugins/python-codecs/package-lock.json | 4 ++-- plugins/python-codecs/package.json | 2 +- plugins/python-codecs/src/gstreamer.py | 15 ++++++--------- .../python-codecs/src/gstreamer_postprocess.py | 15 +-------------- 5 files changed, 14 insertions(+), 30 deletions(-) diff --git a/plugins/python-codecs/.vscode/settings.json b/plugins/python-codecs/.vscode/settings.json index 013506b55..e1ff91bac 100644 --- a/plugins/python-codecs/.vscode/settings.json +++ b/plugins/python-codecs/.vscode/settings.json @@ -1,8 +1,8 @@ { // docker installation - // "scrypted.debugHost": "192.168.2.156", - // "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 2f36a55f1..6b9d35730 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.61", + "version": "0.1.63", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@scrypted/python-codecs", - "version": "0.1.61", + "version": "0.1.63", "devDependencies": { "@scrypted/sdk": "file:../../sdk" } diff --git a/plugins/python-codecs/package.json b/plugins/python-codecs/package.json index 5ee3bf4fd..bbd8efa34 100644 --- a/plugins/python-codecs/package.json +++ b/plugins/python-codecs/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/python-codecs", - "version": "0.1.61", + "version": "0.1.63", "description": "Python Codecs for Scrypted", "keywords": [ "scrypted", diff --git a/plugins/python-codecs/src/gstreamer.py b/plugins/python-codecs/src/gstreamer.py index bf14b66a0..56b9db8d5 100644 --- a/plugins/python-codecs/src/gstreamer.py +++ b/plugins/python-codecs/src/gstreamer.py @@ -1,3 +1,4 @@ +import asyncio import platform from asyncio import Future from typing import Any @@ -9,13 +10,9 @@ import pilimage import vipsimage from generator_common import createImageMediaObject, createVideoFrame from gst_generator import Gst, createPipelineIterator -from gstreamer_postprocess import ( - GstreamerFormatPostProcess, - GstreamerPostProcess, - OpenGLPostProcess, - VaapiPostProcess, - getBands, -) +from gstreamer_postprocess import (GstreamerFormatPostProcess, + GstreamerPostProcess, OpenGLPostProcess, + VaapiPostProcess, getBands) from util import optional_chain @@ -155,7 +152,7 @@ class GstImage(scrypted_sdk.Image): "format": reformat, } ) - await colored.close() + asyncio.ensure_future(colored.close(), loop = asyncio.get_event_loop()) try: return await image.toBuffer( @@ -206,7 +203,7 @@ async def createResamplerPipeline( caps = sample.get_caps() srcCaps = caps.to_string().replace(" ", "") - pipeline = f"appsrc name=appsrc emit-signals=True is-live=True caps={srcCaps}" + pipeline = f"appsrc name=appsrc format=time emit-signals=True is-live=True caps={srcCaps}" await pp.create(gst.gst, pipeline) pp.resize = resize diff --git a/plugins/python-codecs/src/gstreamer_postprocess.py b/plugins/python-codecs/src/gstreamer_postprocess.py index 77079d60c..41dc4e25e 100644 --- a/plugins/python-codecs/src/gstreamer_postprocess.py +++ b/plugins/python-codecs/src/gstreamer_postprocess.py @@ -53,7 +53,7 @@ class GstreamerFormatPostProcess(): class GstreamerPostProcess(): def __init__(self) -> None: - self.postprocess = ' ! videocrop name=videocrop ! videoconvertscale ! capsfilter name=scaleCapsFilter' + self.postprocess = ' ! videocrop name=videocrop ! videoconvert ! videoscale ! capsfilter name=scaleCapsFilter' self.resize = None async def create(self, gst, pipeline: str): @@ -210,12 +210,8 @@ class OpenGLPostProcess(): self.gltransformation = self.gst.get_by_name('gltransformation') # sets the target texture size self.glCapsFilter = self.gst.get_by_name('glCapsFilter') - # sets output format to something other than RGBA if necessary since gl can't handle non-RGBA - # self.swCapsFilter = self.gst.get_by_name('swCapsFilter') - def update(self, caps, sampleSize: Tuple[int, int], options: scrypted_sdk.ImageOptions): - # print(options) sampleWidth, sampleHeight = sampleSize crop = options.get('crop') @@ -237,7 +233,6 @@ class OpenGLPostProcess(): width = int(width) height = int(height) - # pipeline += " ! videoscale" glCaps += f",width={width},height={height}" self.glCapsFilter.set_property('caps', caps.from_string(glCaps)) @@ -271,11 +266,3 @@ class OpenGLPostProcess(): gltransformation.set_property('scale-y', scaleY) gltransformation.set_property('translation-x', translationX) gltransformation.set_property('translation-y', translationY) - - # if format and format != 'RGBA': - # swcaps = f'video/x-raw,format={format}' - # print(swcaps) - # self.swCapsFilter.set_property('caps', caps.from_string(swcaps)) - # else: - # self.swCapsFilter.set_property('caps', 'video/x-raw') - # print('nc')