|
from .base import VideoProcessor |
|
|
|
|
|
class AutoVideoProcessor(VideoProcessor): |
|
def __init__(self): |
|
pass |
|
|
|
@staticmethod |
|
def from_model_manager(model_manager, processor_type, **kwargs): |
|
if processor_type == "FastBlend": |
|
from .FastBlend import FastBlendSmoother |
|
return FastBlendSmoother.from_model_manager(model_manager, **kwargs) |
|
elif processor_type == "Contrast": |
|
from .PILEditor import ContrastEditor |
|
return ContrastEditor.from_model_manager(model_manager, **kwargs) |
|
elif processor_type == "Sharpness": |
|
from .PILEditor import SharpnessEditor |
|
return SharpnessEditor.from_model_manager(model_manager, **kwargs) |
|
elif processor_type == "RIFE": |
|
from .RIFE import RIFESmoother |
|
return RIFESmoother.from_model_manager(model_manager, **kwargs) |
|
else: |
|
raise ValueError(f"invalid processor_type: {processor_type}") |
|
|
|
|
|
class SequencialProcessor(VideoProcessor): |
|
def __init__(self, processors=[]): |
|
self.processors = processors |
|
|
|
@staticmethod |
|
def from_model_manager(model_manager, configs): |
|
processors = [ |
|
AutoVideoProcessor.from_model_manager(model_manager, config["processor_type"], **config["config"]) |
|
for config in configs |
|
] |
|
return SequencialProcessor(processors) |
|
|
|
def __call__(self, rendered_frames, **kwargs): |
|
for processor in self.processors: |
|
rendered_frames = processor(rendered_frames, **kwargs) |
|
return rendered_frames |
|
|