Configuration

The configuration file will be used in all scripts of this repository.

Note

The following top-level properties are required: aliases, lightfields, raw_paths, codecs, rd_plots, quality_heatmaps, logs.

Properties

[Required] aliases

Path: Configuration > aliases

Type

object

Required

Yes

A dictionary of variable names to their values. Variables can be referenced elsewhere in the configuration using ${variable-name} syntax.

[Required] ce-path

Path: Configuration > aliases > ce-path

Type

string

Required

Yes

Base path for the Common Experiment (CE) working directory.

Example(s):

"/home/user/jpeg-pleno/ceXX"

[Required] raw-path

Path: Configuration > aliases > raw-path

Type

string

Required

Yes

Base path to the raw light field data directory.

Example(s):

"/home/user/RAW/lightfields"

[Required] lightfields

Path: Configuration > lightfields

Type

object

Required

Yes

Lists of light fields to process.

[Required] ctc

Path: Configuration > lightfields > ctc

Type

array of string

Required

Yes

List of light field names belonging to the CTC (Common Test Conditions) set.

Example(s):

[
    "Bikes",
    "Danger_de_Mort",
    "Fountain_Vincent2"
]

[Required] other

Path: Configuration > lightfields > other

Type

array of string

Required

Yes

Default

[]

List of additional light field names outside the CTC set.

[Optional] other-lightfield-configuration-files

Path: Configuration > other-lightfield-configuration-files

Type

array of string

Required

No

Default

[]

List of paths to additional JSON files containing per-lightfield configuration (e.g., URLs, original formats). Use ‘/dev/null’ to skip.

Example(s):

[
    "/dev/null"
]
[
    "${base-path}/../my-lf-configs.json"
]

[Optional] other-quality-metrics-configuration-files

Path: Configuration > other-quality-metrics-configuration-files

Type

array of string

Required

No

Default

[]

List of paths to additional JSON files defining custom quality metrics.

Example(s):

[
    "${base-path}/../examples/custom-metrics-compare.json"
]

[Required] raw_paths

Path: Configuration > raw_paths

Type

object

Required

Yes

Filesystem paths used for raw light field data at various stages of the pipeline.

[Required] ppm-download

Path: Configuration > raw_paths > ppm-download

Type

string

Required

Yes

Directory where original PPM ZIP files are downloaded to.

[Required] ppm

Path: Configuration > raw_paths > ppm

Type

string

Required

Yes

Directory containing the preprocessed PPM files (e.g., cropped to 11x11 views) used as source for YUV/PGX conversion.

[Required] yuv

Path: Configuration > raw_paths > yuv

Type

string

Required

Yes

Directory where the converted YUV files are stored. Used as input for x265 encoding and as reference for quality metrics.

[Required] yuv_check

Path: Configuration > raw_paths > yuv_check

Type

string

Required

Yes

Temporary directory for YUV files reconstructed from PGX, used to validate the YUV->PGX->YUV round-trip.

[Required] pgx

Path: Configuration > raw_paths > pgx

Type

string

Required

Yes

Directory where the converted PGX files are stored. Used as input for JPLM encoding.

[Optional] force_conversions

Path: Configuration > force_conversions

Type

boolean

Required

No

Default

true

If true, PPM preprocessing and YUV/PGX conversions are always re-run even if output files already exist. Set to false to skip conversions when outputs are already present.

[Optional] remove_yuv_from_pgx_after_check

Path: Configuration > remove_yuv_from_pgx_after_check

Type

boolean

Required

No

Default

true

If true, the temporary YUV files generated from PGX (for round-trip validation) are deleted after the MD5 check. Set to false to keep them for debugging.

[Required] codecs

Path: Configuration > codecs

Type

object

Required

Yes

Configuration for all codecs used in the experiment.

[Optional] custom-filenames

Path: Configuration > codecs > custom-filenames

Type

array of string

Required

No

Default

[]

List of paths to JSON files defining custom (non-example) codec configurations.

[Optional] example-filenames

Path: Configuration > codecs > example-filenames

Type

array of string

Required

No

Default

[]

List of paths to JSON files defining example/sample codec configurations (used for testing without full encoding).

[Optional] examples

Path: Configuration > codecs > examples

Type

array of string

Required

No

Default

[]

List of example codec names (from example-filenames) to run. When only example codecs are listed here and ‘run’ is empty, YUV/PGX conversion is skipped.

Example(s):

[
    "jplm-ctc-example",
    "x265-ctc-example"
]

[Required] run

Path: Configuration > codecs > run

Type

array of string

Required

Yes

List of codec names (from ‘configuration’) to run in the experiment. Takes precedence over ‘examples’ for determining whether conversion is needed.

Example(s):

[
    "jplm",
    "x265"
]

[Optional] use-docker-for-build

Path: Configuration > codecs > use-docker-for-build

Type

boolean

Required

No

Default

true

Whether to use Docker for building codec binaries.

[Required] configuration

Path: Configuration > codecs > configuration

Type

object

Required

Yes

Per-codec configuration objects. Keys are codec names; values follow the codecProperties definition.

Each entry in this object follows the structure below.

[Optional] wrapper_file

Path: Configuration > codecs > configuration > wrapper_file

Type

string

Required

No

Name of the wrapper_file used for the codec.

Example(s):

"jplm_wrapper"
"x265_wrapper"
[Optional] wrapper_name

Path: Configuration > codecs > configuration > wrapper_name

Type

string

Required

No

Name of the wrapper used.

Example(s):

"JPLMWrapper"
"x265Wrapper"
[Optional] repository

Path: Configuration > codecs > configuration > repository

Type

string

Required

No

Default

""

URI for the git repository if automatic download should be used.

Example(s):

"git@gitlab.com:wg1/jpeg-plm.git"
[Optional] tag

Path: Configuration > codecs > configuration > tag

Type

string

Required

No

Default

"master"

The name of a git tag or branch to checkout after cloning the repository.

[Optional] path

Path: Configuration > codecs > configuration > path

Type

string

Required

No

The path in which the codec files will be saved.

[Optional] inherit

Path: Configuration > codecs > configuration > inherit

Type

string

Required

No

Name of another codec configuration from which to inherit properties. The inherited codec must be declared before this one.

Example(s):

"jplm"
"parallel-jplm-1thread"
[Optional] build_options

Path: Configuration > codecs > configuration > build_options

Type

array of string

Required

No

Default

[]

Flags to pass to cmake for configuring the build.

Example(s):

[
    "-DCMAKE_BUILD_TYPE=Release"
]
[Optional] cmake_path

Path: Configuration > codecs > configuration > cmake_path

Type

string

Required

No

Path to inform cmake where to find the CMakeLists.txt file. Relative to the path property.

Example(s):

".."
[Optional] results

Path: Configuration > codecs > configuration > results

Type

string

Required

No

Path in which the results will be saved. It includes the encoded and decoded files.

Example(s):

"${ce-path}/results/jplm_results"
[Optional] log

Path: Configuration > codecs > configuration > log

Type

string

Required

No

Default

"log.json"

Name of a log file (JSON format) generated after codec execution for all LFs and bitrates. Saved in the ‘results’ path.

Example(s):

"execution_log_jplm.json"
[Optional] encoded_extension

Path: Configuration > codecs > configuration > encoded_extension

Type

string

Required

No

File extension used in the codec output for the compressed file.

Example(s):

"jpl"
"h265"
[Optional] raw_type

Path: Configuration > codecs > configuration > raw_type

Type

string

Required

No

Raw format used as input/output for encoding and decoding.

Example(s):

"pgx"
"yuv"
[Optional] force_encoding

Path: Configuration > codecs > configuration > force_encoding

Type

boolean

Required

No

Default

false

If true, forces re-encoding even if encoded files already exist.

[Optional] force_building

Path: Configuration > codecs > configuration > force_building

Type

boolean

Required

No

Default

false

If true, forces rebuilding the codec even if the binary already exists.

[Optional] decoded_conversions

Path: Configuration > codecs > configuration > decoded_conversions

Type

array of string

Required

No

Default

[]

List of formats to convert the decoded output to (e.g., ‘ppm’, ‘pgx’, ‘yuv’).

Example(s):

[
    "ppm",
    "pgx"
]
[
    "yuv",
    "pgx"
]
[Optional] keep_decoded

Path: Configuration > codecs > configuration > keep_decoded

Type

array of string

Required

No

List of decoded formats to keep after conversion. Others may be removed.

Example(s):

[
    "pgx"
]
[
    "yuv"
]
[
    "ppm"
]
[Optional] clear_log

Path: Configuration > codecs > configuration > clear_log

Type

boolean

Required

No

Default

false

If true, clears the codec log file before running.

[Optional] repetitions

Path: Configuration > codecs > configuration > repetitions

Type

integer

Required

No

Default

1

Number of times encoding and decoding should be repeated for each LF/bitrate combination.

[Optional] kwargs

Path: Configuration > codecs > configuration > kwargs

Type

object

Required

No

Additional keyword arguments passed to the codec wrapper.

[Optional] json_configuration_path

Path: Configuration > codecs > configuration > kwargs > json_configuration_path

Type

string

Required

No

Path to a directory containing JSON configuration files for the codec.

[Optional] number_of_threads

Path: Configuration > codecs > configuration > kwargs > number_of_threads

Type

integer

Required

No

Number of threads to use for encoding/decoding.

Example(s):

1
2
8
[Optional] extra_params

Path: Configuration > codecs > configuration > kwargs > extra_params

Type

string

Required

No

Extra command-line parameters to pass to the codec.

Example(s):

"-pnt"
[Optional] rd_preferences

Path: Configuration > codecs > configuration > rd_preferences

Type

object

Required

No

Visual preferences for this codec in RD plots.

[Required] title

Path: Configuration > codecs > configuration > rd_preferences > title

Type

string

Required

Yes

Label for this codec in RD plots.

Example(s):

"JPLM (ce_16)"
[Optional] color

Path: Configuration > codecs > configuration > rd_preferences > color

Type

string

Required

No

Color for this codec in RD plots.

Example(s):

"blue"
"tab:orange"
[Optional] marker

Path: Configuration > codecs > configuration > rd_preferences > marker

Type

string

Required

No

Marker style for this codec in RD plots.

Example(s):

"o"
"x"
"+"

[Required] logs

Path: Configuration > logs

Type

object

Required

Yes

Paths for log files generated by the various pipeline scripts.

[Required] yuv_and_pgx_from_ppm

Path: Configuration > logs > yuv_and_pgx_from_ppm

Type

string

Required

Yes

Path (including filename) for the JSON log produced by the YUV and PGX conversion script.

Example(s):

"${ce-path}/execution_yuv_and_pgx_from_ppm.json"

[Required] rd_results_path

Path: Configuration > logs > rd_results_path

Type

string

Required

Yes

Directory path where RD report JSON files are saved.

Example(s):

"${ce-path}/results/rd_reports"

[Required] rd_plots

Path: Configuration > rd_plots

Type

array

Required

Yes

List of RD plot configurations. Each entry defines one set of output plots with its own path, metrics, and visual settings.

Items of rd_plots

[Required] path

Path: Configuration > rd_plots > items > path

Type

string

Required

Yes

Directory path where the RD plots will be saved.

Example(s):

"${ce-path}/results/rd_plots/akima_interpolation"

[Optional] format

Path: Configuration > rd_plots > items > format

Type

string

Required

No

Default

"pdf"

File format for the generated RD plots.

Allowed values:

  • "pdf"

  • "png"

[Optional] anchor

Path: Configuration > rd_plots > items > anchor

Type

string

Required

No

Codec name to use as anchor/reference in BD-rate calculations for this plot.

Example(s):

"x265"
"jplm"

[Optional] generate_json

Path: Configuration > rd_plots > items > generate_json

Type

boolean

Required

No

Default

true

Whether to also generate a JSON file with the pooled metrics.

[Required] metrics

Path: Configuration > rd_plots > items > metrics

Type

array of string

Required

Yes

Defined in

metricsList

List of metrics to generate RD plots for.

Example(s):

[
    "psnr_y",
    "psnr_yuv_weighted",
    "float_ssim_db",
    "vmaf_db"
]

[Optional] bpp_logscale

Path: Configuration > rd_plots > items > bpp_logscale

Type

boolean

Required

No

Default

true

Whether to use log scale on the rate (bpp) axis.

[Optional] interpolation

Path: Configuration > rd_plots > items > interpolation

Type

integer

Required

No

Default

100

Number of interpolation points for smooth RD curves. Omit or set to 0 to disable interpolation.

[Optional] figure_size

Path: Configuration > rd_plots > items > figure_size

Type

array of number

Required

No

Figure size [width, height] in inches.

Example(s):

[
    8,
    4
]
[
    5,
    3
]

Array restrictions:

  • Min items: 2

  • Max items: 2

[Required] quality_heatmaps

Path: Configuration > quality_heatmaps

Type

object

Required

Yes

Configuration for per-lightfield quality heatmap generation.

[Required] path

Path: Configuration > quality_heatmaps > path

Type

string

Required

Yes

Directory where heatmap files will be saved.

Example(s):

"${ce-path}/results/heatmaps"

[Optional] format

Path: Configuration > quality_heatmaps > format

Type

string

Required

No

Default

"pdf"

File format for the generated heatmaps.

Allowed values:

  • "pdf"

  • "png"

[Optional] show_values

Path: Configuration > quality_heatmaps > show_values

Type

boolean

Required

No

Default

false

Whether to overlay numeric metric values on the heatmap cells.

[Required] metrics

Path: Configuration > quality_heatmaps > metrics

Type

array of string

Required

Yes

Defined in

metricsList

List of metrics to generate heatmaps for.

Example(s):

[
    "psnr_y",
    "psnr_yuv_weighted",
    "float_ssim_db",
    "vmaf_db"
]

[Optional] bd_reports

Path: Configuration > bd_reports

Type

object

Required

No

Configuration for Bjøntegaard Delta (BD) rate/distortion report generation.

[Required] bd_results_path

Path: Configuration > bd_reports > bd_results_path

Type

string

Required

Yes

Directory where BD report files will be saved.

Example(s):

"${ce-path}/results/bd_reports"

[Required] table_formats

Path: Configuration > bd_reports > table_formats

Type

array of string

Required

Yes

Output formats for the BD tables.

Example(s):

[
    "text",
    "html",
    "csv",
    "latex"
]

[Optional] print_text

Path: Configuration > bd_reports > print_text

Type

boolean

Required

No

Default

true

Whether to print the text-format BD table to the terminal.

[Optional] bundled_bitstream_path

Path: Configuration > bundled_bitstream_path

Type

string

Required

No

Directory containing bundled bitstream files (one sub-folder per codec) used for BD/RD analysis without re-encoding.

Example(s):

"${ce-path}/bundled_bitstreams"

[Optional] rd_plots_from_bundle

Path: Configuration > rd_plots_from_bundle

Type

object

Required

No

Configuration for generating RD plots directly from pre-existing bundled bitstreams, without running the full encoding pipeline.

[Required] codecs

Path: Configuration > rd_plots_from_bundle > codecs

Type

array of string

Required

Yes

List of codec names whose bundled results should be plotted.

Example(s):

[
    "jplm",
    "x265"
]

[Optional] compute_metrics_from_encoded

Path: Configuration > rd_plots_from_bundle > compute_metrics_from_encoded

Type

boolean

Required

No

Default

false

If true, recomputes quality metrics from the encoded bitstreams in the bundle. If false, uses pre-computed metrics.

[Required] encoded_files_dir

Path: Configuration > rd_plots_from_bundle > encoded_files_dir

Type

string

Required

Yes

Directory containing the bundled encoded files.

Example(s):

"${ce-path}/bundled/"

[Required] rd_reports_dir

Path: Configuration > rd_plots_from_bundle > rd_reports_dir

Type

string

Required

Yes

Directory where RD report JSONs generated from the bundle will be saved.

Example(s):

"${ce-path}/bundled_rd_reports"

[Required] results_path

Path: Configuration > rd_plots_from_bundle > results_path

Type

string

Required

Yes

Directory where RD plots generated from the bundle will be saved.

Example(s):

"${ce-path}/bundle/rd_plots"

[Optional] extra_rd_curves

Path: Configuration > rd_plots_from_bundle > extra_rd_curves

Type

array of object

Required

No

Additional RD curves to overlay on the bundle plots, loaded from existing RD report JSON files.

Items of extra_rd_curves

[Required] filename

Path: Configuration > rd_plots_from_bundle > extra_rd_curves > items > filename

Type

string

Required

Yes

Output filename (without extension) for this multi-curve plot.

[Required] title

Path: Configuration > rd_plots_from_bundle > extra_rd_curves > items > title

Type

string

Required

Yes

Title of the light field or plot.

[Optional] anchor

Path: Configuration > rd_plots_from_bundle > extra_rd_curves > items > anchor

Type

string

Required

No

ID of the curve to use as BD-rate anchor.

Example(s):

"complete"
"jplm"
[Required] rd_files

Path: Configuration > rd_plots_from_bundle > extra_rd_curves > items > rd_files

Type

array of object

Required

Yes

List of RD report files to overlay.

Items of rd_files
[Required] id

Path: Configuration > rd_plots_from_bundle > extra_rd_curves > items > rd_files > items > id

Type

string

Required

Yes

Unique identifier for this curve within the plot.

[Required] filename

Path: Configuration > rd_plots_from_bundle > extra_rd_curves > items > rd_files > items > filename

Type

string

Required

Yes

Absolute path to the RD report JSON file.

[Optional] rd_preferences

Path: Configuration > rd_plots_from_bundle > extra_rd_curves > items > rd_files > items > rd_preferences

Type

object

Required

No

Defined in

codecProperties/properties/rd_preferences

Visual preferences for this codec in RD plots.

[Required] title

Path: Configuration > rd_plots_from_bundle > extra_rd_curves > items > rd_files > items > rd_preferences > title

Type

string

Required

Yes

Label for this codec in RD plots.

Example(s):

"JPLM (ce_16)"
[Optional] color

Path: Configuration > rd_plots_from_bundle > extra_rd_curves > items > rd_files > items > rd_preferences > color

Type

string

Required

No

Color for this codec in RD plots.

Example(s):

"blue"
"tab:orange"
[Optional] marker

Path: Configuration > rd_plots_from_bundle > extra_rd_curves > items > rd_files > items > rd_preferences > marker

Type

string

Required

No

Marker style for this codec in RD plots.

Example(s):

"o"
"x"
"+"

[Optional] equivalence_check

Path: Configuration > equivalence_check

Type

object

Required

No

Configuration for checking equivalence (bitwise or decoded output) between two or more codecs.

[Required] equivalence_results

Path: Configuration > equivalence_check > equivalence_results

Type

string

Required

Yes

Directory where equivalence check result tables will be saved.

Example(s):

"${ce-path}/results/equivalence_check"

[Optional] table_formats

Path: Configuration > equivalence_check > table_formats

Type

array of string

Required

No

Output formats for the equivalence tables.

Example(s):

[
    "latex",
    "text",
    "html"
]

[Required] rules

Path: Configuration > equivalence_check > rules

Type

array of object

Required

Yes

List of equivalence rules to evaluate.

Items of rules

[Optional] name

Path: Configuration > equivalence_check > rules > items > name

Type

string

Required

No

Unique name for this rule, used for output folder naming.

[Required] equivalence

Path: Configuration > equivalence_check > rules > items > equivalence

Type

array of enum (of string)

Required

Yes

Which output stage(s) to compare: ‘encoded’ for bitstreams, ‘decoded’ for reconstructed files.

Example(s):

[
    "decoded"
]
[
    "encoded",
    "decoded"
]
[Required] codecs

Path: Configuration > equivalence_check > rules > items > codecs

Type

array of string

Required

Yes

List of codec names to compare.

Example(s):

[
    "jplm",
    "x265"
]
[Optional] formats

Path: Configuration > equivalence_check > rules > items > formats

Type

array of string

Required

No

Output table formats for this specific rule, overriding the global table_formats.

[Optional] performance

Path: Configuration > performance

Type

array of object

Required

No

List of performance analysis configurations (time, memory, speedup).

Items of performance

[Required] codecs

Path: Configuration > performance > items > codecs

Type

object

Required

Yes

Codecs to include in the performance analysis.

[Required] analyse

Path: Configuration > performance > items > codecs > analyse

Type

array of string

Required

Yes

List of codec names to include in the analysis.

Example(s):

[
    "jplm",
    "parallel-jplm-8threads"
]
[Required] baseline

Path: Configuration > performance > items > codecs > baseline

Type

string

Required

Yes

Codec name to use as baseline for speedup calculations.

Example(s):

"jplm"

[Optional] averaging

Path: Configuration > performance > items > averaging

Type

object

Required

No

How to aggregate performance metrics across light fields.

[Required] metric

Path: Configuration > performance > items > averaging > metric

Type

string

Required

Yes

Default

"median"

Aggregation function to use across lightfields.

Example(s):

"median"
"mean"
[Required] grouping

Path: Configuration > performance > items > averaging > grouping

Type

array of object

Required

Yes

Named groups of lightfields for grouped average plots.

Items of grouping
[Required] name

Path: Configuration > performance > items > averaging > grouping > items > name

Type

string

Required

Yes

Label for this group in plots and tables.

Example(s):

"lenslets"
"synthetics"
"hdca"
[Required] lightfields

Path: Configuration > performance > items > averaging > grouping > items > lightfields

Type

array of string

Required

Yes

Light field names belonging to this group.

[Optional] time

Path: Configuration > performance > items > time

Type

object

Required

No

Configuration for encoding/decoding time analysis.

[Optional] results_path

Path: Configuration > performance > items > time > results_path

Type

string

Required

No

Directory for time analysis outputs.

Example(s):

"${ce-path}/results/performance/time"
[Optional] generate_individual_plot

Path: Configuration > performance > items > time > generate_individual_plot

Type

boolean

Required

No

Default

false

Whether to generate one plot per codec in addition to the combined plot.

[Optional] averaging_metric

Path: Configuration > performance > items > time > averaging_metric

Type

string

Required

No

Default

"median"

Aggregation metric for time values.

[Optional] tables

Path: Configuration > performance > items > time > tables

Type

object

Required

No

[Optional] verbose

Path: Configuration > performance > items > time > tables > verbose

Type

boolean

Required

No

Default

true

[Optional] formats

Path: Configuration > performance > items > time > tables > formats

Type

array of enum (of string)

Required

No

[Optional] plots

Path: Configuration > performance > items > time > plots

Type

any

Required

No

Defined in

performancePlotConfig

[Optional] memory

Path: Configuration > performance > items > memory

Type

object

Required

No

Configuration for memory usage analysis.

[Optional] results_path

Path: Configuration > performance > items > memory > results_path

Type

string

Required

No

Directory for memory analysis outputs.

Example(s):

"${ce-path}/results/performance/memory"
[Optional] verbose

Path: Configuration > performance > items > memory > verbose

Type

boolean

Required

No

Default

true

[Optional] generate_individual_plot

Path: Configuration > performance > items > memory > generate_individual_plot

Type

boolean

Required

No

Default

false

[Optional] averaging_metric

Path: Configuration > performance > items > memory > averaging_metric

Type

string

Required

No

Default

"median"

[Optional] calculate_overhead

Path: Configuration > performance > items > memory > calculate_overhead

Type

boolean

Required

No

Default

true

Whether to calculate memory overhead relative to the baseline codec.

[Optional] plots

Path: Configuration > performance > items > memory > plots

Type

any

Required

No

Defined in

performancePlotConfig

[Optional] speedup

Path: Configuration > performance > items > speedup

Type

object

Required

No

Configuration for speedup analysis relative to the baseline codec.

[Optional] results_path

Path: Configuration > performance > items > speedup > results_path

Type

string

Required

No

Directory for speedup analysis outputs.

Example(s):

"${ce-path}/results/performance/speedup"
[Optional] generate_boxplots

Path: Configuration > performance > items > speedup > generate_boxplots

Type

boolean

Required

No

Default

true

Whether to generate boxplots for speedup distribution.

[Optional] tables

Path: Configuration > performance > items > speedup > tables

Type

object

Required

No

[Optional] formats

Path: Configuration > performance > items > speedup > tables > formats

Type

array of enum (of string)

Required

No

[Optional] plots

Path: Configuration > performance > items > speedup > plots

Type

any

Required

No

Defined in

performancePlotConfig

[Optional] vmaf_executable_path

Path: Configuration > vmaf_executable_path

Type

string

Required

No

Path to the VMAF tool executable.

Example(s):

"${ce-path}/vmaf_tool"

[Optional] x265_target_kbps_file

Path: Configuration > x265_target_kbps_file

Type

string

Required

No

Default

"../data/x265_target_kbps.json"

Path to a JSON file mapping each LF/bitrate combination to the required x265 target bitrate in Kbps.