Codecs

Schema for describing codec configurations. The codecs wrapper modules (Python files) must have access to the CodecWrapper class declared in src/codecwrappers/codec_wrapper.py

Note

The following top-level properties are required: ctc-codecs-declaration.

Properties

[Required] ctc-codecs-declaration

Path: Codecs > ctc-codecs-declaration

Type

object

Required

Yes

Dictionary of codec configurations. Each key is a codec name used to reference it in the main configuration file.

Each entry in this object follows the structure below.

[Required] wrapper_file

Path: Codecs > ctc-codecs-declaration > wrapper_file

Type

string

Required

Yes

Filename of the wrapper module, without the .py extension. The wrapper module is responsible for calling the encoder and decoder binaries.

Example(s):

"jplm_wrapper"
"x265_wrapper"

[Required] wrapper_name

Path: Codecs > ctc-codecs-declaration > wrapper_name

Type

string

Required

Yes

Class name of the wrapper inside the wrapper module.

Example(s):

"JPLMWrapper"
"x265Wrapper"

[Required] repository

Path: Codecs > ctc-codecs-declaration > repository

Type

string

Required

Yes

URL of the codec git remote repository. Can be either HTTPS or SSH.

Example(s):

"https://gitlab.com/wg1/jpeg-pleno-refsw.git"
"https://bitbucket.org/multicoreware/x265_git.git"

[Optional] tag

Path: Codecs > ctc-codecs-declaration > tag

Type

string

Required

No

Git tag, branch, or commit hash to checkout after cloning.

Example(s):

"v2.0.1-m110"
"4.0"
"master"

[Required] path

Path: Codecs > ctc-codecs-declaration > path

Type

string

Required

Yes

Local path where the codec will be cloned and built.

Example(s):

"${base-path}/../temporary/jpeg-plm-private"
"${base-path}/../temporary/x265_git"

[Optional] log

Path: Codecs > ctc-codecs-declaration > log

Type

string

Required

No

Filename for the codec execution log (JSON format). Saved inside the ‘results’ directory.

Example(s):

"execution_log_jplm.json"
"execution_log_x265_anchor.json"

[Optional] clear_log

Path: Codecs > ctc-codecs-declaration > clear_log

Type

boolean

Required

No

Default

false

If true, clears the codec log file before running.

[Optional] force_encoding

Path: Codecs > ctc-codecs-declaration > force_encoding

Type

boolean

Required

No

Default

false

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

[Optional] force_building

Path: Codecs > ctc-codecs-declaration > force_building

Type

boolean

Required

No

Default

false

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

[Optional] build_options

Path: Codecs > ctc-codecs-declaration > build_options

Type

array of string

Required

No

Default

[]

CMake build options passed during codec compilation.

Example(s):

[
    "-DCMAKE_BUILD_TYPE=Release"
]
[
    "-DCMAKE_BUILD_TYPE=Release",
    "-DHIGH_BIT_DEPTH=ON"
]

[Optional] cmake_path

Path: Codecs > ctc-codecs-declaration > cmake_path

Type

string

Required

No

Relative path (from ‘path’) to the directory containing CMakeLists.txt.

Example(s):

".."
"../source"

[Optional] results

Path: Codecs > ctc-codecs-declaration > results

Type

string

Required

No

Directory path where encoded and decoded results will be stored.

Example(s):

"${base-path}/../temporary/results/jplm_results"
"${base-path}/../temporary/results/x265_anchor_results"

[Required] encoded_extension

Path: Codecs > ctc-codecs-declaration > encoded_extension

Type

string

Required

Yes

File extension for encoded bitstream files.

Example(s):

"jpl"
"h265"

[Required] raw_type

Path: Codecs > ctc-codecs-declaration > raw_type

Type

string

Required

Yes

Raw format used as input for encoding and expected output of decoding.

Example(s):

"pgx"
"yuv"

[Optional] decoded_conversions

Path: Codecs > ctc-codecs-declaration > decoded_conversions

Type

array of string

Required

No

Default

[]

List of formats to convert the decoded output into after decoding.

Example(s):

[
    "yuv",
    "ppm"
]
[
    "pgx",
    "ppm"
]

[Optional] keep_decoded

Path: Codecs > ctc-codecs-declaration > keep_decoded

Type

array of string

Required

No

List of decoded formats to retain after conversion. Formats not listed may be deleted.

Example(s):

[
    "pgx"
]
[
    "yuv"
]
[
    "ppm"
]

[Optional] repetitions

Path: Codecs > ctc-codecs-declaration > repetitions

Type

integer

Required

No

Default

1

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

[Optional] kwargs

Path: Codecs > ctc-codecs-declaration > kwargs

Type

object

Required

No

Additional wrapper-specific parameters passed directly to the codec wrapper.

Example(s):

{
    "fps": 30,
    "tune_metric": "psnr",
    "bpp_to_actual_kbps_map_path": "${base-path}/../data/x265_target_kbps.json"
}

[Required] rd_preferences

Path: Codecs > ctc-codecs-declaration > rd_preferences

Type

object

Required

Yes

Visual preferences for this codec in rate-distortion plots.

[Required] title

Path: Codecs > ctc-codecs-declaration > rd_preferences > title

Type

string

Required

Yes

Label for this codec in RD plots.

Example(s):

"JPLM (v2.0.1)"
"x265"
[Optional] color

Path: Codecs > ctc-codecs-declaration > rd_preferences > color

Type

string

Required

No

Line/marker color for this codec in RD plots.

Example(s):

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

Path: Codecs > ctc-codecs-declaration > rd_preferences > marker

Type

string

Required

No

Marker style for this codec in RD plots.

Example(s):

"o"
"x"
"+"