Skip to content

Latest commit

 

History

History
63 lines (46 loc) · 4.05 KB

README.md

File metadata and controls

63 lines (46 loc) · 4.05 KB

Documentation

← SmartCut ・ 日本語

The documentation is in two parts.

  • User guide — how to use it. No background needed.
  • Technical documentation — what it does inside. For anyone who wants to know how it works, and for anyone touching the code.

Every page exists in English and Japanese; the switch is at the top of each one.


User guide

If this is your first time, start with Using the GUI.

Using the GUI A walkthrough of every screen, with screenshots: adding recordings, cutting, output settings, writing the files
Commercial detection Finding the commercial breaks automatically: how accurate it is, and what to do when it gets one wrong
Working through a batch Handling a whole evening of recordings at once: the background jobs, duplicating clips, the export, and the batch tool that writes queued projects out with nobody in the room
Projects Saving a night's work to a .scproj and picking it up later
Using the command line Every option of the smartcut command

Technical documentation

To understand how it works, start with the algorithm, and especially with the pitfalls: the eleven reasons why "just cut on GOP boundaries and concatenate" does not work.

How it works, and how it was checked

Algorithm How a cut is split into head, body and tail, and the eleven pitfalls that make it harder than it looks
Validation Frame-hash verification results, testing against real broadcast recordings, and the known limits
Audio Smart rendering applied to audio, boundary error, MPEG-2 AAC framing, downmixing, choosing the output codec, and multi-track broadcasts
Broadcast TS PID layout, the recording's own tables, captions and programme information, partial transport streams, ADTS, L-SMASH and DGIndex
Joining, the master clip, and transitions Writing several recordings into one file: what the master supplies, what happens to a clip that does not match it, and why a transition is the one thing here that cannot be smart rendered
Commercial detection internals The detector's scoring, logo detection, subtitle resets, and how the accuracy was measured

Discs

Reading a disc Blu-ray (BDAV and BDMV) and DVD-Video, from a folder or an .iso: UDF, IFO tables, ARIB text, one row per clip, and the chooser dialog
Writing a disc A night's cuts as a BDAV folder: the arrival times, the entry point map, where the programme's name comes from, and what is copied from a real disc rather than understood
Fitting a disc Making a night that will not fit fit, by writing the pictures back smaller without decoding them: requantisation, dropping what is not worth its bits, the rate control, and the identity checked over 700,000 pictures

Implementation

Rust core Timestamp generation, mixed SPS/PPS, the VC-1 encoder we had to write because libavcodec has none, and where the Rust implementation overtook the Python one
Design notes Why a Rust core with a Tauri GUI, and how the GUI is built: the filmstrip, the seek index, the proxy, playback and the two languages
Building Required libraries, how to build, how to run the tests
Distribution AppImage, tar.gz and deb, the Windows installer, and what each one bundles
Compatibility What carries over from one version to the next: project files, the command line, preferences, caches, and what is to change before 1.0