Skip to content

Latest commit

 

History

History
135 lines (117 loc) · 3.59 KB

File metadata and controls

135 lines (117 loc) · 3.59 KB

DONE!

Avior Db structure

  • clients
  • jobs
  • sub_exclude
  • name_exclude
  • log_include
  • log_exclude

Tasks

Database:

  • Get job
  • Insert job
  • Edit job
  • Remove job
  • Get client
  • Insert client
  • Edit client
  • Remove client
  • Get fields
  • Add fields
  • Remove fields

Global state:

The purpose of this module is to serve as a collection of all state data that is currently outputted by the service. This includes:

  • Progress for encoding
  • Progress for size estimation
  • Progress for duplicate search
  • Progress for file moving
  • Encoder output string
  • duplicate search current file and directory
  • current file that is moved
  • current slice that is encoded for estimation

Duplicate search:

  • find duplicates on disk
  • config file entry
  • global state integration
  • moving of old files when modules result is REPL

Modules:

If there is a duplicate file present in the system, a module should determine if that duplicate file should be discarded and replaced by the new one or kept. Each module should also have a priority that determines how important its output is (aka execution order on crack)

A single module can return:

  • REPL: allows replacement
  • NOCH: does nothing (no change / noch nicht)
  • KEEP: disqualifies replacement

Module Infrastructure:

  • modules callable via interface
  • module config uniformity
  • module priority management

Module Implementations:

  • Compare resolutions:
    • better resolution should allow replacement
    • return modes: REPL, NOCH, KEEP
  • Compare audioformat:
    • better audio format should allow replacement
    • return modes: REPL, NOCH, KEEP
  • Estimate size of new file
    • better file size should allow (percentage threshold)
    • depends on: encoder
    • return modes: REPL, NOCH, KEEP
  • Check for include/exclude terms in logfile
    • include mode: if include and exclude match, include takes priority
    • neutral mode: swiss
    • exclude mode: if include and exclude match, exclude takes priority
    • return modes: REPL, NOCH, KEEP
  • Age (whiltelist)
    • files that have been created below a certain threshold age will be kept
    • return modes: KEEP, NOCH
  • Length (whitelist)
    • new files whose recorded lenghts differ greater than a configurable percent threshold should not be eligible for replacement
    • return modes: KEEP, NOCH
  • MaximumFileSize (whitelist)
    • if a new file is larger in Gigabytes than the specified filesize then it should not be eligible for replacement
    • return modes: KEEP, NOCH
  • Legacy checker
    • if a file is legacy, overwrite it

Encoder

Configuration:

The encoder takes a configuration file based on a current resolution. It consists of the following options:

  • Output Paths
  • ffmpeg pre arguments
  • ffmpeg post arguments
  • parked arguments (not in use)
  • old format: '#' was comment, PI was pre-argument, none was post argument
enc_path \\UMS\media\transcoded\HD1080\

-c:v hevc_nvenc
#-vf yadif=0:-1:0 hqdn3d=2:1:2:3
-vf yadif=0:-1:0
#-vf hqdn3d=2:1:2:3
#-filter:v hqdn3d=2:1:2:3
#-filter:v scale=1280:720
-level 4.1
#-r 25
-rc vbr_hq
-qmin 16
-qmax 23
-rc-lookahead 32
#-rc constqp
#-qp 21
-tier main
-acodec copy
PI -test

Implementation:

  • config file entry
  • ffmpeg output parser
  • cli call constructor
  • global state integation
  • estimate remaining time

http API

  • resume service
  • pause service
  • stop service
  • expose database operations outwards
  • export statistics