mirror of
https://github.com/koush/scrypted.git
synced 2026-03-20 16:40:24 +00:00
python-codecs: support vaapi color conversion
This commit is contained in:
4
plugins/python-codecs/package-lock.json
generated
4
plugins/python-codecs/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@scrypted/python-codecs",
|
||||
"version": "0.1.51",
|
||||
"version": "0.1.56",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@scrypted/python-codecs",
|
||||
"version": "0.1.51",
|
||||
"version": "0.1.56",
|
||||
"devDependencies": {
|
||||
"@scrypted/sdk": "file:../../sdk"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@scrypted/python-codecs",
|
||||
"version": "0.1.51",
|
||||
"version": "0.1.56",
|
||||
"description": "Python Codecs for Scrypted",
|
||||
"keywords": [
|
||||
"scrypted",
|
||||
|
||||
@@ -82,10 +82,18 @@ async def generateVideoFramesGstreamer(mediaObject: scrypted_sdk.MediaObject, op
|
||||
fps = options and options.get('fps', None)
|
||||
videorate = ''
|
||||
if fps:
|
||||
videorate = 'videorate !'
|
||||
videorate = 'videorate ! '
|
||||
videocaps += ',framerate={fps}/1'.format(fps=fps)
|
||||
|
||||
videosrc += ' ! {decoder} ! queue leaky=downstream max-size-buffers=0 ! videoconvert ! {videorate} {videocaps}'.format(decoder=decoder, videocaps=videocaps, videorate=videorate)
|
||||
if decoder.find("{videocaps}") == -1:
|
||||
videosrc += ' ! {decoder} ! queue leaky=downstream max-size-buffers=0 ! videoconvert ! {videorate} {videocaps}'.format(decoder=decoder, videocaps=videocaps, videorate=videorate)
|
||||
else:
|
||||
if format == 'RGB':
|
||||
format = 'RGBA'
|
||||
bands = 4
|
||||
videocaps += 'A'
|
||||
d = decoder.replace('{videocaps}', '{videorate}{videocaps}'.format(videocaps=videocaps, videorate=videorate))
|
||||
videosrc += ' ! {decoder}'.format(decoder=d)
|
||||
|
||||
gst, gen = await createPipelineIterator(videosrc)
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@ class GstreamerGenerator(scrypted_sdk.ScryptedDeviceBase, scrypted_sdk.VideoFram
|
||||
'vtdec_hw',
|
||||
'nvh264dec',
|
||||
'vaapih264dec',
|
||||
'vaapih264dec ! vaapipostproc ! {videocaps}',
|
||||
],
|
||||
'combobox': True,
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ class VipsImage(scrypted_sdk.Image):
|
||||
return await to_thread(format)
|
||||
elif options['format'] == 'rgba':
|
||||
def format():
|
||||
if not vipsImage.vipsImage.hasalpha():
|
||||
if not vipsImage.vipsImage.bands == 3:
|
||||
rgba = vipsImage.vipsImage.addalpha()
|
||||
else:
|
||||
rgba = vipsImage.vipsImage
|
||||
@@ -33,7 +33,7 @@ class VipsImage(scrypted_sdk.Image):
|
||||
return await to_thread(format)
|
||||
elif options['format'] == 'rgb':
|
||||
def format():
|
||||
if vipsImage.vipsImage.hasalpha():
|
||||
if vipsImage.vipsImage.bands == 4:
|
||||
rgb = vipsImage.vipsImage.extract_band(0, n=vipsImage.vipsImage.bands - 1)
|
||||
else:
|
||||
rgb = vipsImage.vipsImage
|
||||
@@ -45,7 +45,11 @@ class VipsImage(scrypted_sdk.Image):
|
||||
return memoryview(vipsImage.vipsImage.write_to_memory())
|
||||
else:
|
||||
def format():
|
||||
gray = vipsImage.vipsImage.colourspace("b-w")
|
||||
if vipsImage.vipsImage.bands == 4:
|
||||
gray = vipsImage.vipsImage.extract_band(0, n=vipsImage.vipsImage.bands - 1)
|
||||
else:
|
||||
gray = vipsImage.vipsImage
|
||||
gray = gray.colourspace("b-w")
|
||||
return memoryview(gray.write_to_memory())
|
||||
return await to_thread(format)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user