Adds setting quality accoeding to pattern default
This commit is contained in:
@@ -522,14 +522,6 @@ def convert(ctx,
|
||||
|
||||
ctx.obj['logger'].debug(f"\nVideo encoder: {video_encoder}")
|
||||
|
||||
qualityTokens = quality.split(',')
|
||||
q_list = [q for q in qualityTokens if q.isnumeric()]
|
||||
ctx.obj['logger'].debug(f"Qualities: {q_list}")
|
||||
|
||||
presetTokens = preset.split(',')
|
||||
p_list = [p for p in presetTokens if p.isnumeric()]
|
||||
ctx.obj['logger'].debug(f"Presets: {p_list}")
|
||||
|
||||
|
||||
context['bitrates'] = {}
|
||||
context['bitrates']['stereo'] = str(stereo_bitrate) if str(stereo_bitrate).endswith('k') else f"{stereo_bitrate}k"
|
||||
@@ -553,9 +545,12 @@ def convert(ctx,
|
||||
|
||||
tc = TmdbController() if context['use_tmdb'] else None
|
||||
|
||||
qualityKwargs = {QualityFilter.QUALITY_KEY: str(QualityFilter.DEFAULT_H264_QUALITY if (context['video_encoder'] == VideoEncoder.H264 and not quality) else quality)}
|
||||
|
||||
qualityKwargs = {QualityFilter.QUALITY_KEY: str(quality)}
|
||||
qf = QualityFilter(**qualityKwargs)
|
||||
|
||||
|
||||
|
||||
if context['video_encoder'] == VideoEncoder.AV1 and preset:
|
||||
presetKwargs = {PresetFilter.PRESET_KEY: preset}
|
||||
PresetFilter(**presetKwargs)
|
||||
@@ -799,15 +794,18 @@ def convert(ctx,
|
||||
|
||||
ctx.obj['logger'].info(f"Creating file {targetFilename}")
|
||||
|
||||
|
||||
if rename_only:
|
||||
shutil.copyfile(sourcePath, targetPath)
|
||||
else:
|
||||
fc.runJob(sourcePath,
|
||||
targetPath,
|
||||
targetFormat,
|
||||
context['video_encoder'],
|
||||
chainIteration,
|
||||
cropArguments)
|
||||
cropArguments,
|
||||
currentPattern)
|
||||
|
||||
|
||||
|
||||
endTime = time.perf_counter()
|
||||
ctx.obj['logger'].info(f"\nDONE\nTime elapsed {endTime - startTime}")
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import os, click
|
||||
from logging import Logger
|
||||
|
||||
from ffx.media_descriptor_change_set import MediaDescriptorChangeSet
|
||||
|
||||
@@ -15,6 +16,8 @@ from ffx.filter.quality_filter import QualityFilter
|
||||
from ffx.filter.preset_filter import PresetFilter
|
||||
from ffx.filter.crop_filter import CropFilter
|
||||
|
||||
from ffx.model.pattern import Pattern
|
||||
|
||||
|
||||
class FfxController():
|
||||
|
||||
@@ -46,7 +49,7 @@ class FfxController():
|
||||
targetMediaDescriptor,
|
||||
sourceMediaDescriptor)
|
||||
|
||||
self.__logger = context['logger']
|
||||
self.__logger: Logger = context['logger']
|
||||
|
||||
|
||||
def generateAV1Tokens(self, quality, preset, subIndex : int = 0):
|
||||
@@ -179,12 +182,16 @@ class FfxController():
|
||||
sourcePath,
|
||||
targetPath,
|
||||
targetFormat: str = '',
|
||||
videoEncoder: VideoEncoder = VideoEncoder.VP9,
|
||||
chainIteration: list = [],
|
||||
cropArguments: dict = {}):
|
||||
cropArguments: dict = {},
|
||||
currentPattern: Pattern = None):
|
||||
# quality: int = DEFAULT_QUALITY,
|
||||
# preset: int = DEFAULT_AV1_PRESET):
|
||||
|
||||
|
||||
videoEncoder: VideoEncoder = self.__context.get('video_encoder', VideoEncoder.VP9)
|
||||
|
||||
|
||||
qualityFilters = [fy for fy in chainIteration if fy['identifier'] == 'quality']
|
||||
presetFilters = [fy for fy in chainIteration if fy['identifier'] == 'preset']
|
||||
|
||||
@@ -192,7 +199,18 @@ class FfxController():
|
||||
denoiseFilters = [fy for fy in chainIteration if fy['identifier'] == 'nlmeans']
|
||||
deinterlaceFilters = [fy for fy in chainIteration if fy['identifier'] == 'bwdif']
|
||||
|
||||
quality = (qualityFilters[0]['parameters']['quality'] if qualityFilters else QualityFilter.DEFAULT_VP9_QUALITY)
|
||||
|
||||
if qualityFilters and (quality := qualityFilters[0]['parameters']['quality']):
|
||||
self.__logger.debug(f"Setting quality {quality} from filter")
|
||||
elif (quality := currentPattern.quality):
|
||||
self.__logger.debug(f"Setting quality {quality} from pattern default")
|
||||
else:
|
||||
quality = (QualityFilter.DEFAULT_H264_QUALITY
|
||||
if (videoEncoder == VideoEncoder.H264)
|
||||
else QualityFilter.DEFAULT_VP9_QUALITY)
|
||||
self.__logger.debug(f"Setting quality {quality} from default")
|
||||
|
||||
|
||||
preset = presetFilters[0]['parameters']['preset'] if presetFilters else PresetFilter.DEFAULT_PRESET
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import itertools
|
||||
import click
|
||||
|
||||
from .filter import Filter
|
||||
|
||||
from ffx.video_encoder import VideoEncoder
|
||||
|
||||
|
||||
class QualityFilter(Filter):
|
||||
|
||||
@@ -14,6 +16,9 @@ class QualityFilter(Filter):
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
|
||||
context = click.get_current_context().obj
|
||||
|
||||
|
||||
self.__qualitiesList = []
|
||||
qualities = kwargs.get(QualityFilter.QUALITY_KEY, '')
|
||||
if qualities:
|
||||
@@ -27,7 +32,9 @@ class QualityFilter(Filter):
|
||||
raise ValueError('QualityFilter: Quality value has to be between 0 and 63')
|
||||
self.__qualitiesList.append(qualityValue)
|
||||
else:
|
||||
self.__qualitiesList = [QualityFilter.DEFAULT_VP9_QUALITY]
|
||||
|
||||
self.__qualitiesList = [None]
|
||||
|
||||
|
||||
super().__init__(self)
|
||||
|
||||
@@ -52,4 +59,4 @@ class QualityFilter(Filter):
|
||||
|
||||
def getYield(self):
|
||||
for q in self.__qualitiesList:
|
||||
yield self.getPayload(q)
|
||||
yield self.getPayload(q)
|
||||
|
||||
Reference in New Issue
Block a user