mirror of
https://github.com/master-of-zen/Av1an.git
synced 2024-11-25 02:29:40 +00:00
61 lines
No EOL
2 KiB
Python
61 lines
No EOL
2 KiB
Python
#!/usr/bin/env python3
|
|
import time
|
|
from pathlib import Path
|
|
from .target_vmaf import target_vmaf
|
|
from .boost import boosting
|
|
from .utils import frame_probe, frame_check
|
|
from .fp_reuse import remove_first_pass_from_commands
|
|
from .utils import man_q
|
|
from .logger import log
|
|
from .bar import Manager, tqdm_bar
|
|
import sys
|
|
|
|
def encode(commands):
|
|
"""Main encoding flow, appliying all scene based features
|
|
|
|
:param args: Arguments object
|
|
:param commands: composed commands for encoding
|
|
:type commands: list
|
|
"""
|
|
commands, counter, args = commands
|
|
try:
|
|
st_time = time.time()
|
|
source, target = Path(commands[-1][0]), Path(commands[-1][1])
|
|
frame_probe_source = frame_probe(source)
|
|
|
|
# Target Vmaf Mode
|
|
if args.vmaf_target:
|
|
tg_cq = target_vmaf(source, args)
|
|
cm1 = man_q(commands[0], tg_cq, )
|
|
|
|
if args.passes == 2:
|
|
cm2 = man_q(commands[1], tg_cq)
|
|
commands = (cm1, cm2) + commands[2:]
|
|
else:
|
|
commands = (cm1,) + commands[1:]
|
|
|
|
# Boost
|
|
if args.boost:
|
|
commands = boosting(args.boost_limit, args.boost_range, source, commands, args.passes)
|
|
|
|
# first pass reuse
|
|
if args.reuse_first_pass:
|
|
commands = remove_first_pass_from_commands(commands, args.passes)
|
|
|
|
log(f'Enc: {source.name}, {frame_probe_source} fr\n\n')
|
|
|
|
# Queue execution
|
|
for i in commands[:-1]:
|
|
tqdm_bar(i, args.encoder, counter, frame_probe_source, args.passes)
|
|
|
|
frame_check(source, target, args.temp, args.no_check)
|
|
|
|
frame_probe_fr = frame_probe(target)
|
|
|
|
enc_time = round(time.time() - st_time, 2)
|
|
|
|
log(f'Done: {source.name} Fr: {frame_probe_fr}\n'
|
|
f'Fps: {round(frame_probe_fr / enc_time, 4)} Time: {enc_time} sec.\n\n')
|
|
except Exception as e:
|
|
_, _, exc_tb = sys.exc_info()
|
|
print(f'Error in encoding loop {e}\nAt line {exc_tb.tb_lineno}') |