ld-chroma-decoder

This application takes the output of ld-decode (a PAL or NTSC TBC file) and performs chroma decoding (i.e. colourises it).

The output is a sequence of RGB48, YUV444P16, or GRAY16 video frames suitable for piping to an external application such as FFmpeg.

Syntax:

ld-chroma-decoder [options] <input TBC file name> [output file name]

[!NOTE] This is mostly automated with FFmpeg profiles today with tbc-video-export.

Direct Command Example:

.tbc –> Chroma-Decoder y4m –> Pipe –> FFmpeg –> V210 4:2:2 Uncompressed in the QuickTime MOV container.

NTSC

ld-chroma-decoder --decoder ntsc3d -p y4m -q INPUT.tbc| ffmpeg -i - -c:v v210 -f mov -top 1 -vf setfield=tff -flags +ilme+ildct -pix_fmt yuv422p10le -color_primaries smpte170m -color_trc bt709 -colorspace smpte170m -color_range tv -vf setdar=4/3,setfield=tff OUTPUT.mov

PAL

ld-chroma-decoder --decoder transform3d -p y4m -q INPUT.tbc| ffmpeg -i - -c:v v210 -f mov -top 1 -vf setfield=tff -flags +ilme+ildct -pix_fmt yuv422p10le -color_primaries bt470bg -color_trc bt709 -colorspace bt470bg -color_range tv -vf setdar=4/3,setfield=tff OUTPUT.mov

Example with full vertical VBI data:


Y4M Only.

NTSC

ld-chroma-decoder --ffll 1 --lfll 259 --ffrl 2 --lfrl 525 --decoder ntsc3d -p y4m -q INPUT.tbc OUTPUT.mov

PAL

ld-chroma-decoder --ffll 2 --lfll 308 --ffrl 2 --lfrl 620 --decoder transform3d -p y4m -q INPUT.tbc OUTPUT.mov

Notes & Command Argument List

Most options have a corresponding setting in ld-analyse’s ‘Chroma decoder configuration’ window so you can experiment with them interactively there. For more information, see the ld-analyse manual.

The mono filter treats the whole signal as luma, so it’s the best choice when you know that the input video doesn’t contain any colour information (e.g. black-and-white films).

Output Framing Control

First Active Field Line

--first-active-field-line int, --ffll int

The first visible line of a field.

Ranges:

Format Range Default
NTSC 1 - 259 20
PAL 2 - 308 22

Last Active Field Line

--last-active-field-line int, --lfll int

The last visible line of a field.

Ranges:

Format Range Default
NTSC 1 - 259 259
PAL 2 - 308 308

First Active Frame Line

--first-active-frame-line int, --ffrl int

The first visible line of a field.

Ranges:

Format Range Default
NTSC 1 - 525 40
PAL 2 - 620 44

Last Active Frame Line

--last-active-frame-line int, --lfrl int

The last visible line of a field.

Ranges:

Format Range Default
NTSC 1 - 525 525
PAL 2 - 620 620

Chroma Decoding Control

Luma Decoder

--chroma-decoder-luma decoder

Chroma decoder to use for the luma instance.

[!CAUTION] It is unlikely you need to adjust this.

Available decoders:

Format Decoder Default
B/W MONO LUMA
PAL PAL2D  
PAL TRANSFORM2D  
PAL TRANSFORM3D  
NTSC NTSC1D  
NTSC NTSC2D  
NTSC NTSC3D  
NTSC NTSC3DNOADAPT  

Chroma Decoder

--chroma-decoder decoder

Chroma decoder to use.

Available decoders:

Format Decoder Default
B/W MONO LUMA
PAL PAL2D PAL/PAL-M
PAL TRANSFORM2D  
PAL TRANSFORM3D PAL CVBS/LD
NTSC NTSC1D  
NTSC NTSC2D NTSC
NTSC NTSC3D NTSC CVBS
NTSC NTSC3DNOADAPT  

Chroma Gain

--chroma-gain 0

Gain factor applied to chroma components normally you will not adjust this over 1~3 in value.

Chroma Phase

--chroma-phase float

Phase rotation applied to chroma components (degrees 0~360).

Luma NR

--luma-nr float

Luma noise reduction level in dB.

[!CAUTION] It is unlikely you need to adjust this. We recommend applying noise reduction in post via avisynth. vapoursynth or tools like Resolve.

Help Page

Options:
  -h, --help                                  Displays help on commandline
                                              options.
  --help-all                                  Displays help including Qt
                                              specific options.
  -v, --version                               Displays version information.
  -d, --debug                                 Show debug
  -q, --quiet                                 Suppress info and warning
                                              messages
  --input-json <filename>                     Specify the input JSON file
                                              (default input.json)
  -s, --start <number>                        Specify the start frame number
  -l, --length <number>                       Specify the length (number of
                                              frames to process)
  -r, --reverse                               Reverse the field order to
                                              second/first (default
                                              first/second)
  --chroma-gain <number>                      Gain factor applied to chroma
                                              components (default 1.0)
  --chroma-phase <number>                     Phase rotation applied to chroma
                                              components (degrees; default 0.0)

  -p, --output-format <output-format>         Output format (rgb, yuv, y4m;
                                              default rgb); RGB48, YUV444P16,
                                              GRAY16 pixel formats are supported
  -b, --blackandwhite                         Output in black and white

  --pad, --output-padding <number>            Pad the output frame to a
                                              multiple of this many pixels on
                                              both axes (1 means no padding,
                                              maximum is 32)
  -f, --decoder <decoder>                     Decoder to use (pal2d,
                                              transform2d, transform3d, ntsc1d,
                                              ntsc2d, ntsc3d, ntsc3dnoadapt,
                                              mono; default automatic)
  -t, --threads <number>                      Specify the number of concurrent
                                              threads (default number of logical
                                              CPUs)
  --ffll, --first_active_field_line <number>  The first visible line of a
                                              field. Range 1-259 for NTSC
                                              (default: 20), 2-308 for PAL
                                              (default: 22)
  --lfll, --last_active_field_line <number>   The last visible line of a field.
                                              Range 1-259 for NTSC (default:
                                              259), 2-308 for PAL (default: 308)
  --ffrl, --first_active_frame_line <number>  The first visible line of a
                                              frame. Range 1-525 for NTSC
                                              (default: 40), 1-620 for PAL
                                              (default: 44)
  --lfrl, --last_active_frame_line <number>   The last visible line of a frame.
                                              Range 1-525 for NTSC (default:
                                              525), 1-620 for PAL (default: 620)
  -o, --oftest                                NTSC: Overlay the adaptive filter
                                              map (only used for testing)
  --chroma-nr <number>                        NTSC: Chroma noise reduction
                                              level in dB (default 0.0)
  --luma-nr <number>                          Luma noise reduction level in dB
                                              (default 1.0)
  --ntsc-phase-comp                           NTSC: Adjust phase per-line using
                                              burst phase
  --simple-pal                                Transform: Use 1D UV filter
                                              (default 2D)
  --transform-threshold <number>              Transform: Uniform similarity
                                              threshold (default 0.4)
  --transform-thresholds <file>               Transform: File containing
                                              per-bin similarity thresholds
  --show-ffts                                 Transform: Overlay the input and
                                              output FFTs

Arguments:
  input                                       Specify input TBC file (- for piped input)
  output                                      Specify output file (omit or - for piped output)