1- from vstools import FunctionUtil , KwargsT , vs , FieldBasedT , core , expect_bits , depth
1+ from vstools import FunctionUtil , KwargsT , vs , FieldBasedT , core , expect_bits , depth , vs_object
22from vskernels import Kernel , Bilinear , Bicubic , Lanczos
3- from typing import Self
3+ from typing import Self , MutableMapping , TYPE_CHECKING
44from abc import abstractmethod
55
66__all__ = ["RescaleBase" , "RescaleNumbers" , "descale_rescale" ]
@@ -14,7 +14,7 @@ class RescaleNumbers:
1414 border_handling : int = 0
1515
1616
17- class RescaleBase (RescaleNumbers ):
17+ class RescaleBase (RescaleNumbers , vs_object ):
1818 funcutil : FunctionUtil
1919 kernel : Kernel
2020 post_crop : KwargsT
@@ -38,6 +38,22 @@ def _return_creditmask(self) -> vs.VideoNode:
3838 def _return_linemask (self ) -> vs .VideoNode :
3939 return self .linemask_clip if isinstance (self .linemask_clip , vs .VideoNode ) else core .std .BlankClip (self .funcutil .work_clip )
4040
41+ def __vs_del__ (self , core_id : int ) -> None :
42+ if not TYPE_CHECKING :
43+ self .descaled = None
44+ self .rescaled = None
45+ self .upscaled = None
46+ self .doubled = None
47+ self .linemask_clip = None
48+ self .errormask_clip = None
49+ for v in self .__dict__ .values ():
50+ if not isinstance (v , MutableMapping ):
51+ continue
52+
53+ for k2 , v2 in v .items ():
54+ if isinstance (v2 , vs .VideoNode ):
55+ v [k2 ] = None
56+
4157
4258def descale_rescale (builder : RescaleBase , clip : vs .VideoNode , ** kwargs : KwargsT ) -> vs .VideoNode :
4359 kernel_args = KwargsT (border_handling = builder .border_handling )
0 commit comments