output¶
Where the generated media goes and in what form. Required.
Keys¶
| Key | Type | Required | Values | Default |
|---|---|---|---|---|
video_path |
string | Yes | A path, optionally with an asset root token | — |
signal_type |
string | No | composite, yc |
composite |
truth |
bool | No | true, false |
false |
No other key is accepted. In particular the metadata sidecar path is not configurable — it is derived from video_path and always sits beside it. LaserDisc EFM digital audio is selected in the laserdisc block; its files are written here, beside the video.
video_path¶
The path of the primary sample file. Every other artefact is colocated with it and named from it.
signal_type |
Required suffix | Files written |
|---|---|---|
composite |
.cvbs by convention |
<name>.cvbs |
yc |
.cvbsy (enforced) |
<name>.cvbsy and <name>.cvbsc |
With signal_type: yc the path must end in .cvbsy; the chroma path is derived by replacing that suffix with .cvbsc.
The derived paths:
| Artefact | Derivation |
|---|---|
.meta |
video_path with .cvbs/.cvbsy replaced by .meta (any other extension is replaced too; with none, .meta is appended) |
.dropouts.meta |
The metadata path with .meta replaced by .dropouts.meta |
_audio_<pair>.wav |
video_path with .cvbs/.cvbsy stripped, plus _audio_<pair>.wav |
.efm, .efm.meta |
video_path with .cvbs/.cvbsy stripped, plus the suffix |
.truth, .truth.meta |
video_path with .cvbs/.cvbsy stripped, plus the suffix |
Parent directories are created automatically.
Use {output}
Write "{output}/name.cvbs" rather than a bare relative path. {output} defaults to the project file's own directory, so a project stays self-contained when run by hand, while --output-root lets a batch run redirect every project at once. A bare relative path resolves against the working directory in the CLI but against the project directory in the GUI.
signal_type¶
composite— luma and chroma summed into a single signal.yc— luma and chroma written separately.
Luma and chroma are generated independently regardless; this only selects whether they are combined before writing.
truth¶
true writes the picture truth: the component Y, U and V that went into the composite modulator, for scoring a decoder against the source picture rather than against its own Y/C separation. PAL, NTSC and PAL-M only.
The truth is taken after every step applied before modulation, and before any impairment:
| Included | Excluded |
|---|---|
| The source-to-4fsc horizontal mapping | channel (timing offset, edge smear) |
The section's luma_bandwidth limit |
The LaserVision channel (FM beat, group delay, replay response) |
| The chroma low-pass (33-tap Hamming-windowed 1.3 MHz for PAL and PAL-M, 17-tap 1.2 MHz for NTSC) | chroma_error and line_timing |
chroma_line_sign regions |
Noise and dropouts |
laserdisc.channel.field2_offset, which changes the picture that is modulated |
OSD text (drawn afterwards; a warning) |
The section's picture_response (horizontal and vertical) |
.truth¶
Raw little-endian float32, frame after frame in output order. Each frame is three planes — Y, then U, then V — and each plane is rows × samples_per_line values in row-major order:
| Standard | samples_per_line |
rows |
first_sample |
Field 1 / field 2 first line | Even rows from |
|---|---|---|---|---|---|
| PAL | 922 | 576 | 177 | 23 / 336 | Field 1 |
| NTSC | 745 | 480 | 150 | 22 / 284 | Field 2 |
| PAL-M | 745 | 480 | 150 | 22 / 284 | Field 2 |
- A row covers the 4fsc active window of one active line, starting
first_samplesamples after 0H. Rows are in progressive order, as the source picture's rows are drawn: the field whose picture opens higher on the screen supplies the even rows. - Y is in mV above blanking (NTSC and PAL-M include the setup, so black is at
black_mv). - U and V are the low-pass-filtered colour-difference components, in peak mV of subcarrier, exactly as modulated: U on the sin carrier axis and V on the cos axis (NTSC: B−Y and R−Y). V has the PAL V-switch removed, as a PAL decoder recovers it, so a
chroma_line_signv: follow_switchregion appears as V alternating line by line. - Over the active window the modulated chroma is C = U · sin φ + s · V · cos φ, where φ is the subcarrier phase and s the line's V-switch sign (+1 throughout NTSC).
- Samples past the end of the PAL half-picture line 623 carry no picture and are zero.
.truth.meta¶
A SQLite database, like the other sidecars, with PRAGMA user_version = 1 and one row in a truth_file table:
| Column | Type | Contents |
|---|---|---|
truth_file_id |
INTEGER | Always 1 |
video_standard |
TEXT | PAL, NTSC or PAL_M |
sample_rate_hz |
REAL | The 4fsc sampling rate |
frame_count |
INTEGER | Frames in the truth file |
samples_per_line, rows |
INTEGER | Plane dimensions |
first_sample |
INTEGER | Offset of a row's first sample from 0H |
first_line_field1, first_line_field2 |
INTEGER | Frame line carrying each field's first row |
upper_field |
INTEGER | Field (1 or 2) supplying the even rows |
half_picture_line, half_picture_end_sample |
INTEGER | The PAL half-picture line (623) and the sample offset where its picture ends; 0 when every line is full |
plane_order |
TEXT | YUV |
sample_format |
TEXT | float32le |
units |
TEXT | mV |
y_reference |
TEXT | blanking |
black_mv, white_mv |
REAL | Black and white levels above blanking, for normalising Y |
u_axis, v_axis |
TEXT | sin, cos: the carrier axes U and V modulate |
v_switch |
TEXT | removed: V is given as a PAL decoder recovers it |
Validation: truth: true on a SECAM project is an error. On a project with OSD overlays it is a warning, as the truth does not carry the text. A value other than true or false is a parse error. The emitter writes the key only when it is true.