python-codecs: implement image close

This commit is contained in:
Koushik Dutta
2023-05-17 21:03:51 -07:00
parent d2f175715b
commit e3d4800e4f
8 changed files with 22 additions and 11 deletions

View File

@@ -1,12 +1,12 @@
{
"name": "@scrypted/python-codecs",
"version": "0.1.56",
"version": "0.1.57",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@scrypted/python-codecs",
"version": "0.1.56",
"version": "0.1.57",
"devDependencies": {
"@scrypted/sdk": "file:../../sdk"
}

View File

@@ -1,6 +1,6 @@
{
"name": "@scrypted/python-codecs",
"version": "0.1.56",
"version": "0.1.57",
"description": "Python Codecs for Scrypted",
"keywords": [
"scrypted",

View File

@@ -122,8 +122,7 @@ async def generateVideoFramesGstreamer(mediaObject: scrypted_sdk.MediaObject, op
try:
yield createVideoFrame(mo)
finally:
vipsImage.vipsImage = None
vips.invalidate()
await vipsImage.close()
else:
pil = pilimage.new_from_memory(info.data, width, height, bands)
@@ -135,7 +134,6 @@ async def generateVideoFramesGstreamer(mediaObject: scrypted_sdk.MediaObject, op
try:
yield createVideoFrame(mo)
finally:
pilImage.pilImage = None
pil.close()
await pilImage.close()
finally:
gst_buffer.unmap(info)

View File

@@ -60,8 +60,7 @@ async def generateVideoFramesLibav(mediaObject: scrypted_sdk.MediaObject, option
try:
yield createVideoFrame(mo)
finally:
vipsImage.vipsImage = None
vips.invalidate()
await vipsImage.close()
else:
if gray and frame.format.name.startswith('yuv') and frame.planes and len(frame.planes):
pil = pilimage.new_from_memory(memoryview(frame.planes[0]), frame.width, frame.height, 1)
@@ -82,7 +81,6 @@ async def generateVideoFramesLibav(mediaObject: scrypted_sdk.MediaObject, option
try:
yield createVideoFrame(mo)
finally:
pilImage.pilImage = None
pil.close()
await pilImage.close()
finally:
container.close()

View File

@@ -16,6 +16,12 @@ class PILImage(scrypted_sdk.Image):
self.width = pilImage.width
self.height = pilImage.height
async def close(self):
pil = self.pilImage
self.pilImage = None
if pil:
pil.close()
async def toBuffer(self, options: scrypted_sdk.ImageOptions = None) -> bytearray:
pilImage: PILImage = await self.toPILImage(options)

View File

@@ -16,6 +16,12 @@ class VipsImage(scrypted_sdk.Image):
self.width = vipsImage.width
self.height = vipsImage.height
async def close(self):
vips = self.vipsImage
self.vipsImage = None
if vips:
vips.invalidate()
async def toBuffer(self, options: scrypted_sdk.ImageOptions = None) -> bytearray:
vipsImage: VipsImage = await self.toVipsImage(options)