From b080d1fbfeb2eaa7814e2c78e0575e5f05e1e129 Mon Sep 17 00:00:00 2001 From: Bin Li Date: Wed, 1 Mar 2023 16:39:30 +0800 Subject: [PATCH] add more details on the test pipeline. --- assets/RGB_different_settings.png | Bin 0 -> 25951 bytes assets/test_pipeline.png | Bin 0 -> 23965 bytes test_conditions.md | 33 ++++++++++++++++++++++-------- 3 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 assets/RGB_different_settings.png create mode 100644 assets/test_pipeline.png diff --git a/assets/RGB_different_settings.png b/assets/RGB_different_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..07281069a800760d5f8c993c18bbe5294e87d798 GIT binary patch literal 25951 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 Jxy%0izX9evbN2uM literal 0 HcmV?d00001 diff --git a/assets/test_pipeline.png b/assets/test_pipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..415ec2a8364a8ad94902b5775db4f021ba148ad6 GIT binary patch literal 23965 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 literal 0 HcmV?d00001 diff --git a/test_conditions.md b/test_conditions.md index 8246c36..63edb4e 100644 --- a/test_conditions.md +++ b/test_conditions.md @@ -14,28 +14,29 @@ There are several key factors in encoding setting: * Please do not crop source sequence. When the spatial resolution of the source sequence is not supported, consider padding it. * Number of encoded frames should not be too small. Considering the test sequence length, we suggest encode 96 frames in each sequence. (The shortest sequence in MCL-JCV dataset has 120 frames). -* Set to a reasonable intra period. Some of the previous papers uses 10 or 12 as intra period, which is not reasonable in practical applications. We suggest using 32 as intra period. When possible, setting it to 96 (only the first frame is encoded as intra frame) is also desired. +* Set to a reasonable intra period. Some of the previous papers uses 10 or 12 as intra period, which is not reasonable in practical applications. We suggest using 32 as intra period. When possible, setting it to 96 or -1 (only the first frame is encoded as intra frame) is also desired. * Make sure the intra frame is pure intra frame. Which can be decoded independent of other frames. Intra frame could also be used as a decoding refresh point. * Both low delay coding structure (without waiting for future frames when encoding/decoding current frame) and hierarchical-B coding structure are welcome to be tested. Here is the summary on the coding setting -| | Not suggested | Suggested | -| ------------------ | ------------- | --------- | -| spatial resolution | crop | pad | -| intra period | 10, 12 | 32, 96 | +| | Not suggested | Suggested | +| ------------------ | ------------- | ---------- | +| spatial resolution | crop | pad | +| intra period | 10, 12 | 32, 96, -1 | ## Traditional codec anchors When comparing with traditional codecs, it is highly suggested to use the settings which could lead to the highest compression ratio for traditional codec. There are several key factors for traditional codecs: +* We prefer comparing YUV420 content directly as traditional codecs are mostly optimized for it. * Use B frames (or low delay B frames) instead of P frames. * Use the suggested number of reference frames (e.g., 4 for low delay settings). * Use hierarchical QP settings. (all the three items above could lead to 27% gap) * Use 10-bit as internal bit-depth. (6% gap over 8-bit) -* Use YUV420 when comparing for YUV420 source content and use YUV444 when comparing RGB content. (22% gap when using different color spaces) +* Use YUV420 when comparing for YUV420 source content and use YUV444 when comparing RGB content. More details on the impact of different color spaces could be found at [this part](#suggested-test-pipeline-for-comparison). -We suggest using the official reference software ([HM](https://vcgit.hhi.fraunhofer.de/jvet/HM), [VTM](https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM), and [ECM](https://jvet-experts.org/doc_end_user/documents/27_Teleconference/wg11/JVET-AA0006-v1.zip)) to generate tradition codec anchors. For low delay encoding, the suggested command lines are as follows. We suggest using HM-16.25, VTM-17.0, and ECM-5.0 as traditional codec reference. Using a more recent version is also preferred. +We suggest using the official reference software ([HM](https://vcgit.hhi.fraunhofer.de/jvet/HM), [VTM](https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM), and [ECM](https://jvet-experts.org/doc_end_user/documents/27_Teleconference/wg11/JVET-AA0006-v1.zip)) to generate tradition codec anchors. For low delay encoding, the suggested command lines are as follows. We suggest using HM-16.25, VTM-17.0, and ECM-5.0 as traditional codec reference implementation. Using a more recent version is also preferred. ### Encoding for RGB content @@ -50,7 +51,7 @@ Please note that ECM-5.0 has several bugs to support YUV444 encoding. You may ne | ECM-5.0 | encoder_lowdelay_ecm.cfg | ```bash -EncoderApp -c encoder_configuration.cfg -f 96 -q {qp} --IntraPeriod={intra_period} --InputFile={src_yuv} --SourceWidth={width} --SourceHeight={height} --FrameRate={frame_rate} --Level=6.2 --InputBitDepth=10 --InputChromaFormat=444 --ChromaFormatIDC=444 --DecodingRefreshType=2 -b {output.bin} -o {enc.yuv} +EncoderApp -c encoder_configuration.cfg -f {frame_number} -q {qp} --IntraPeriod={intra_period} --InputFile={src_yuv} --SourceWidth={width} --SourceHeight={height} --FrameRate={frame_rate} --Level=6.2 --InputBitDepth=10 --InputChromaFormat=444 --ChromaFormatIDC=444 --DecodingRefreshType=2 -b {output.bin} -o {enc.yuv} ``` ### Encoding for YUV420 content @@ -62,7 +63,7 @@ EncoderApp -c encoder_configuration.cfg -f 96 -q {qp} --IntraPeriod={intra_perio | ECM-5.0 | encoder_lowdelay_ecm.cfg | ```bash -EncoderApp -c encoder_configuration.cfg -f 96 -q {qp} --IntraPeriod={intra_period} --InputFile={src_yuv} --SourceWidth={width} --SourceHeight={height} --FrameRate={frame_rate} --Level=6.2 --InputBitDepth=8 --DecodingRefreshType=2 -b {output.bin} -o {enc.yuv} +EncoderApp -c encoder_configuration.cfg -f {frame_number} -q {qp} --IntraPeriod={intra_period} --InputFile={src_yuv} --SourceWidth={width} --SourceHeight={height} --FrameRate={frame_rate} --Level=6.2 --InputBitDepth=8 --DecodingRefreshType=2 -b {output.bin} -o {enc.yuv} ``` ## Objective metrics @@ -72,3 +73,17 @@ We suggest using PSNR and MS-SSIM as objective metrics when comparing different ```math PSNR_{avg} = (6*PSNR_y + PSNR_u + PSNR_v) / 8 ``` + +## Suggested test pipeline for comparison + +### Suggested test pipeline for YUV420 content and RGB content + +We suggest using the following test pipelines for YUV420 content and RGB content. + + + +### Different test settings for RGB content + +Different test settings may lead to up to 32% bitrate increase for RGB content. + +