adds up_down_temp mode for deinterlace
This commit is contained in:
@@ -1196,7 +1196,7 @@ def checkUniqueDispositions(context, mediaDescriptor: MediaDescriptor):
|
|||||||
|
|
||||||
@click.option(
|
@click.option(
|
||||||
"--deinterlace",
|
"--deinterlace",
|
||||||
type=click.Choice(("none", "default", "up_down", "hq_denoise")),
|
type=click.Choice(("none", "default", "up_down", "temp", "up_down_temp")),
|
||||||
is_flag=False,
|
is_flag=False,
|
||||||
flag_value="default",
|
flag_value="default",
|
||||||
default="none",
|
default="none",
|
||||||
|
|||||||
@@ -10,7 +10,8 @@ class DeinterlaceFilter(Filter):
|
|||||||
MODE_KEY = 'mode'
|
MODE_KEY = 'mode'
|
||||||
DEFAULT_MODE = 'default'
|
DEFAULT_MODE = 'default'
|
||||||
UP_DOWN_MODE = 'up_down'
|
UP_DOWN_MODE = 'up_down'
|
||||||
HQ_DENOISE_MODE = 'hq_denoise'
|
TEMP_MODE = 'temp'
|
||||||
|
UP_DOWN_TEMP_MODE = 'up_down_temp'
|
||||||
|
|
||||||
MODE_TOKENS = {
|
MODE_TOKENS = {
|
||||||
DEFAULT_MODE: ['bwdif=mode=1'],
|
DEFAULT_MODE: ['bwdif=mode=1'],
|
||||||
@@ -19,10 +20,16 @@ class DeinterlaceFilter(Filter):
|
|||||||
'scale=iw*2:ih*2:flags=lanczos',
|
'scale=iw*2:ih*2:flags=lanczos',
|
||||||
'scale=iw/2:ih/2:flags=lanczos',
|
'scale=iw/2:ih/2:flags=lanczos',
|
||||||
],
|
],
|
||||||
HQ_DENOISE_MODE: [
|
TEMP_MODE: [
|
||||||
'bwdif=mode=1',
|
'bwdif=mode=1',
|
||||||
'hqdn3d=1.5:1.5:3:3',
|
'hqdn3d=1.5:1.5:3:3',
|
||||||
],
|
],
|
||||||
|
UP_DOWN_TEMP_MODE: [
|
||||||
|
'bwdif=mode=1',
|
||||||
|
'scale=iw*2:ih*2:flags=lanczos',
|
||||||
|
'scale=iw/2:ih/2:flags=lanczos',
|
||||||
|
'hqdn3d=1.5:1.5:3:3',
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
# DEFAULT_STRENGTH: float = 2.8
|
# DEFAULT_STRENGTH: float = 2.8
|
||||||
|
|||||||
@@ -35,14 +35,27 @@ class DeinterlaceFilterTest(unittest.TestCase):
|
|||||||
payload['tokens'],
|
payload['tokens'],
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_hq_denoise_mode_yields_hqdn3d_after_bwdif(self):
|
def test_temp_mode_yields_hqdn3d_after_bwdif(self):
|
||||||
payload = self.getPayload(DeinterlaceFilter.HQ_DENOISE_MODE)
|
payload = self.getPayload(DeinterlaceFilter.TEMP_MODE)
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
['bwdif=mode=1', 'hqdn3d=1.5:1.5:3:3'],
|
['bwdif=mode=1', 'hqdn3d=1.5:1.5:3:3'],
|
||||||
payload['tokens'],
|
payload['tokens'],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_up_down_temp_mode_yields_combined_filters_after_bwdif(self):
|
||||||
|
payload = self.getPayload(DeinterlaceFilter.UP_DOWN_TEMP_MODE)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
[
|
||||||
|
'bwdif=mode=1',
|
||||||
|
'scale=iw*2:ih*2:flags=lanczos',
|
||||||
|
'scale=iw/2:ih/2:flags=lanczos',
|
||||||
|
'hqdn3d=1.5:1.5:3:3',
|
||||||
|
],
|
||||||
|
payload['tokens'],
|
||||||
|
)
|
||||||
|
|
||||||
def test_unknown_mode_is_rejected(self):
|
def test_unknown_mode_is_rejected(self):
|
||||||
with self.assertRaisesRegex(ValueError, 'Unknown deinterlace mode: other'):
|
with self.assertRaisesRegex(ValueError, 'Unknown deinterlace mode: other'):
|
||||||
DeinterlaceFilter(mode='other')
|
DeinterlaceFilter(mode='other')
|
||||||
@@ -52,10 +65,20 @@ class DeinterlaceFilterTest(unittest.TestCase):
|
|||||||
'convert',
|
'convert',
|
||||||
['--deinterlace', 'up_down'],
|
['--deinterlace', 'up_down'],
|
||||||
)
|
)
|
||||||
|
tempContext = convert.make_context(
|
||||||
|
'convert',
|
||||||
|
['--deinterlace', 'temp'],
|
||||||
|
)
|
||||||
|
combinedContext = convert.make_context(
|
||||||
|
'convert',
|
||||||
|
['--deinterlace', 'up_down_temp'],
|
||||||
|
)
|
||||||
bareFlagContext = convert.make_context('convert', ['--deinterlace'])
|
bareFlagContext = convert.make_context('convert', ['--deinterlace'])
|
||||||
omittedContext = convert.make_context('convert', [])
|
omittedContext = convert.make_context('convert', [])
|
||||||
|
|
||||||
self.assertEqual('up_down', upDownContext.params['deinterlace'])
|
self.assertEqual('up_down', upDownContext.params['deinterlace'])
|
||||||
|
self.assertEqual('temp', tempContext.params['deinterlace'])
|
||||||
|
self.assertEqual('up_down_temp', combinedContext.params['deinterlace'])
|
||||||
self.assertEqual('default', bareFlagContext.params['deinterlace'])
|
self.assertEqual('default', bareFlagContext.params['deinterlace'])
|
||||||
self.assertEqual('none', omittedContext.params['deinterlace'])
|
self.assertEqual('none', omittedContext.params['deinterlace'])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user