[x265] [PATCH] Add film grain characteristics as a SEI message to the bitstream
Keshav E
keshav at multicorewareinc.com
Fri Mar 4 05:02:35 UTC 2022
>From 10084990ea36a8d29432996b81fe6de427daaf69 Mon Sep 17 00:00:00 2001
From: Keshav E <keshav at multicorewareinc.com>
Date: Thu, 3 Mar 2022 14:30:57 +0530
Subject: [PATCH] Add film grain characteristics as a SEI message to the
bitstream
---
doc/reST/cli.rst | 6 ++
source/CMakeLists.txt | 2 +-
source/common/common.h | 9 +++
source/common/param.cpp | 9 +++
source/encoder/encoder.cpp | 12 ++++
source/encoder/encoder.h | 2 +
source/encoder/frameencoder.cpp | 57 ++++++++++++++++++-
source/encoder/frameencoder.h | 29 ++++++++++
source/encoder/sei.h | 95 ++++++++++++++++++++++++++++++++
source/test/regression-tests.txt | 4 ++
source/test/smoke-tests.txt | 4 ++
source/x265.h | 3 +
source/x265cli.cpp | 3 +
source/x265cli.h | 1 +
14 files changed, 234 insertions(+), 2 deletions(-)
diff --git a/doc/reST/cli.rst b/doc/reST/cli.rst
index 1491b63fe..1640c1f8e 100755
--- a/doc/reST/cli.rst
+++ b/doc/reST/cli.rst
@@ -2659,6 +2659,12 @@ Bitstream options
Emit SEI messages in a single NAL unit instead of multiple NALs. Default
disabled.
When HRD SEI is enabled the HM decoder will throw a warning.
+.. option:: --film-grain <filename>
+
+ Refers to the film grain model characteristics for signal enhancement
information transmission
+
+ **CLI_ONLY**
+
DCT Approximations
=================
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 60031df63..13e4750de 100755
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -29,7 +29,7 @@ option(NATIVE_BUILD "Target the build CPU" OFF)
option(STATIC_LINK_CRT "Statically link C runtime for release builds" OFF)
mark_as_advanced(FPROFILE_USE FPROFILE_GENERATE NATIVE_BUILD)
# X265_BUILD must be incremented each time the public API is changed
-set(X265_BUILD 203)
+set(X265_BUILD 204)
configure_file("${PROJECT_SOURCE_DIR}/x265.def.in"
"${PROJECT_BINARY_DIR}/x265.def")
configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in"
diff --git a/source/common/common.h b/source/common/common.h
index 8c06cd79e..a245c7dae 100644
--- a/source/common/common.h
+++ b/source/common/common.h
@@ -340,6 +340,7 @@ typedef int16_t coeff_t; // transform coefficient
#define FILLER_OVERHEAD (NAL_TYPE_OVERHEAD + START_CODE_OVERHEAD + 1)
#define MAX_NUM_DYN_REFINE (NUM_CU_DEPTH *
X265_REFINE_INTER_LEVELS)
+#define X265_BYTE 8
namespace X265_NS {
@@ -434,6 +435,14 @@ int x265_rename(const char* oldName, const char*
newName);
#define x265_unlink(fileName) unlink(fileName)
#define x265_rename(oldName, newName) rename(oldName, newName)
#endif
+/* Close a file */
+#define x265_fclose(file) if (file != NULL) fclose(file); file=NULL;
+#define x265_fread(val, size, readSize, fileOffset,errorMessage)\
+ if (fread(val, size, readSize, fileOffset) != readSize)\
+ {\
+ x265_log(NULL, X265_LOG_ERROR, errorMessage); \
+ return; \
+ }
int x265_exp2fix8(double x);
double x265_ssim2dB(double ssim);
diff --git a/source/common/param.cpp b/source/common/param.cpp
index f72305372..ed6973d9c 100755
--- a/source/common/param.cpp
+++ b/source/common/param.cpp
@@ -384,6 +384,8 @@ void x265_param_default(x265_param* param)
param->svtHevcParam = svtParam;
svt_param_default(param);
#endif
+ /* Film grain characteristics model filename */
+ param->filmGrain = NULL;
}
int x265_param_default_preset(x265_param* param, const char* preset, const
char* tune)
@@ -1460,6 +1462,8 @@ int x265_param_parse(x265_param* p, const char* name,
const char* value)
OPT("video-signal-type-preset") p->videoSignalTypePreset =
strdup(value);
OPT("eob") p->bEnableEndOfBitstream = atobool(value);
OPT("eos") p->bEnableEndOfSequence = atobool(value);
+ /* Film grain characterstics model filename */
+ OPT("film-grain") p->filmGrain = (char* )value;
else
return X265_PARAM_BAD_NAME;
}
@@ -2353,6 +2357,8 @@ char *x265_param2string(x265_param* p, int padx, int
pady)
s += sprintf(s, "conformance-window-offsets right=%d bottom=%d",
p->confWinRightOffset, p->confWinBottomOffset);
s += sprintf(s, " decoder-max-rate=%d", p->decoderVbvMaxRate);
BOOL(p->bliveVBV2pass, "vbv-live-multi-pass");
+ if (p->filmGrain)
+ s += sprintf(s, " film-grain=%s", p->filmGrain); // Film grain
characteristics model filename
#undef BOOL
return buf;
}
@@ -2726,6 +2732,9 @@ void x265_copy_params(x265_param* dst, x265_param*
src)
#ifdef SVT_HEVC
memcpy(dst->svtHevcParam, src->svtHevcParam,
sizeof(EB_H265_ENC_CONFIGURATION));
#endif
+ /* Film grain */
+ if (src->filmGrain)
+ dst->filmGrain = src->filmGrain;
}
#ifdef SVT_HEVC
diff --git a/source/encoder/encoder.cpp b/source/encoder/encoder.cpp
index 5d0c9a050..f33a6d053 100644
--- a/source/encoder/encoder.cpp
+++ b/source/encoder/encoder.cpp
@@ -142,6 +142,7 @@ Encoder::Encoder()
m_threadPool = NULL;
m_analysisFileIn = NULL;
m_analysisFileOut = NULL;
+ m_filmGrainIn = NULL;
m_naluFile = NULL;
m_offsetEmergency = NULL;
m_iFrameNum = 0;
@@ -551,6 +552,15 @@ void Encoder::create()
}
}
}
+ if (m_param->filmGrain)
+ {
+ m_filmGrainIn = x265_fopen(m_param->filmGrain, "rb");
+ if (!m_filmGrainIn)
+ {
+ x265_log_file(NULL, X265_LOG_ERROR, "Failed to open film grain
characteristics binary file %s\n", m_param->filmGrain);
+ }
+ }
+
m_bZeroLatency = !m_param->bframes && !m_param->lookaheadDepth &&
m_param->frameNumThreads == 1 && m_param->maxSlices == 1;
m_aborted |= parseLambdaFile(m_param);
@@ -996,6 +1006,8 @@ void Encoder::destroy()
}
if (m_naluFile)
fclose(m_naluFile);
+ if (m_filmGrainIn)
+ x265_fclose(m_filmGrainIn);
#ifdef SVT_HEVC
X265_FREE(m_svtAppData);
diff --git a/source/encoder/encoder.h b/source/encoder/encoder.h
index 2ee5bdaee..cfbb55fe0 100644
--- a/source/encoder/encoder.h
+++ b/source/encoder/encoder.h
@@ -295,6 +295,8 @@ public:
ThreadSafeInteger* zoneReadCount;
ThreadSafeInteger* zoneWriteCount;
+ /* Film grain model file */
+ FILE* m_filmGrainIn;
Encoder();
~Encoder()
diff --git a/source/encoder/frameencoder.cpp
b/source/encoder/frameencoder.cpp
index 1b3875a25..44415d079 100644
--- a/source/encoder/frameencoder.cpp
+++ b/source/encoder/frameencoder.cpp
@@ -762,7 +762,14 @@ void FrameEncoder::compressFrame()
m_seiAlternativeTC.m_preferredTransferCharacteristics =
m_param->preferredTransferCharacteristics;
m_seiAlternativeTC.writeSEImessages(m_bs, *slice->m_sps,
NAL_UNIT_PREFIX_SEI, m_nalList, m_param->bSingleSeiNal);
}
-
+ /* Write Film grain characteristics if present */
+ if (this->m_top->m_filmGrainIn)
+ {
+ FilmGrainCharacteristics m_filmGrain;
+ /* Read the Film grain model file */
+ readModel(&m_filmGrain, this->m_top->m_filmGrainIn);
+ m_filmGrain.writeSEImessages(m_bs, *slice->m_sps,
NAL_UNIT_PREFIX_SEI, m_nalList, m_param->bSingleSeiNal);
+ }
/* Write user SEI */
for (int i = 0; i < m_frame->m_userSEI.numPayloads; i++)
{
@@ -2133,6 +2140,54 @@ void FrameEncoder::noiseReductionUpdate()
m_nr->nrOffsetDenoise[cat][0] = 0;
}
}
+
+void FrameEncoder::readModel(FilmGrainCharacteristics* m_filmGrain, FILE*
filmgrain)
+{
+ char* errorMessage = "Error reading FilmGrain characteristics\n";
+ FilmGrain m_fg;
+ x265_fread((char* )&m_fg, sizeof(bool) * 3 + sizeof(uint8_t), 1,
filmgrain, errorMessage);
+ m_filmGrain->m_filmGrainCharacteristicsCancelFlag =
m_fg.m_filmGrainCharacteristicsCancelFlag;
+ m_filmGrain->m_filmGrainCharacteristicsPersistenceFlag =
m_fg.m_filmGrainCharacteristicsPersistenceFlag;
+ m_filmGrain->m_filmGrainModelId = m_fg.m_filmGrainModelId;
+ m_filmGrain->m_separateColourDescriptionPresentFlag =
m_fg.m_separateColourDescriptionPresentFlag;
+ if (m_filmGrain->m_separateColourDescriptionPresentFlag)
+ {
+ ColourDescription m_clr;
+ x265_fread((char* )&m_clr, sizeof(bool) + sizeof(uint8_t) * 5, 1,
filmgrain, errorMessage);
+ m_filmGrain->m_filmGrainBitDepthLumaMinus8 =
m_clr.m_filmGrainBitDepthLumaMinus8;
+ m_filmGrain->m_filmGrainBitDepthChromaMinus8 =
m_clr.m_filmGrainBitDepthChromaMinus8;
+ m_filmGrain->m_filmGrainFullRangeFlag =
m_clr.m_filmGrainFullRangeFlag;
+ m_filmGrain->m_filmGrainColourPrimaries =
m_clr.m_filmGrainColourPrimaries;
+ m_filmGrain->m_filmGrainTransferCharacteristics =
m_clr.m_filmGrainTransferCharacteristics;
+ m_filmGrain->m_filmGrainMatrixCoeffs =
m_clr.m_filmGrainMatrixCoeffs;
+ }
+ FGPresent m_present;
+ x265_fread((char* )&m_present, sizeof(bool) * 3 + sizeof(uint8_t) * 2,
1, filmgrain, errorMessage);
+ m_filmGrain->m_blendingModeId = m_present.m_blendingModeId;
+ m_filmGrain->m_log2ScaleFactor = m_present.m_log2ScaleFactor;
+ m_filmGrain->m_compModel[0].bPresentFlag = m_present.m_presentFlag[0];
+ m_filmGrain->m_compModel[1].bPresentFlag = m_present.m_presentFlag[1];
+ m_filmGrain->m_compModel[2].bPresentFlag = m_present.m_presentFlag[2];
+ for (int i = 0; i < MAX_NUM_COMPONENT; i++)
+ {
+ if (m_filmGrain->m_compModel[i].bPresentFlag)
+ {
+ x265_fread((char*
)(&m_filmGrain->m_compModel[i].m_filmGrainNumIntensityIntervalMinus1),
sizeof(uint8_t), 1, filmgrain, errorMessage);
+ x265_fread((char*
)(&m_filmGrain->m_compModel[i].numModelValues), sizeof(uint8_t), 1,
filmgrain, errorMessage);
+ m_filmGrain->m_compModel[i].intensityValues =
(FilmGrainCharacteristics::CompModelIntensityValues* )
malloc(sizeof(FilmGrainCharacteristics::CompModelIntensityValues) *
(m_filmGrain->m_compModel[i].m_filmGrainNumIntensityIntervalMinus1+1)) ;
+ for (int j = 0; j <=
m_filmGrain->m_compModel[i].m_filmGrainNumIntensityIntervalMinus1; j++)
+ {
+ x265_fread((char*
)(&m_filmGrain->m_compModel[i].intensityValues[j].intensityIntervalLowerBound),
sizeof(uint8_t), 1, filmgrain, errorMessage);
+ x265_fread((char*
)(&m_filmGrain->m_compModel[i].intensityValues[j].intensityIntervalUpperBound),
sizeof(uint8_t), 1, filmgrain, errorMessage);
+
m_filmGrain->m_compModel[i].intensityValues[j].compModelValue = (int* )
malloc(sizeof(int) * (m_filmGrain->m_compModel[i].numModelValues));
+ for (int k = 0; k <
m_filmGrain->m_compModel[i].numModelValues; k++)
+ {
+ x265_fread((char*
)(&m_filmGrain->m_compModel[i].intensityValues[j].compModelValue[k]),
sizeof(int), 1, filmgrain, errorMessage);
+ }
+ }
+ }
+ }
+}
#if ENABLE_LIBVMAF
void FrameEncoder::vmafFrameLevelScore()
{
diff --git a/source/encoder/frameencoder.h b/source/encoder/frameencoder.h
index f4cfc624d..5d972cb26 100644
--- a/source/encoder/frameencoder.h
+++ b/source/encoder/frameencoder.h
@@ -113,6 +113,34 @@ struct CTURow
}
};
+/*Film grain characteristics*/
+struct FilmGrain
+{
+ bool m_filmGrainCharacteristicsCancelFlag;
+ bool m_filmGrainCharacteristicsPersistenceFlag;
+ bool m_separateColourDescriptionPresentFlag;
+ uint8_t m_filmGrainModelId;
+ uint8_t m_blendingModeId;
+ uint8_t m_log2ScaleFactor;
+};
+
+struct ColourDescription
+{
+ bool m_filmGrainFullRangeFlag;
+ uint8_t m_filmGrainBitDepthLumaMinus8;
+ uint8_t m_filmGrainBitDepthChromaMinus8;
+ uint8_t m_filmGrainColourPrimaries;
+ uint8_t m_filmGrainTransferCharacteristics;
+ uint8_t m_filmGrainMatrixCoeffs;
+};
+
+struct FGPresent
+{
+ uint8_t m_blendingModeId;
+ uint8_t m_log2ScaleFactor;
+ bool m_presentFlag[3];
+};
+
// Manages the wave-front processing of a single encoding frame
class FrameEncoder : public WaveFront, public Thread
{
@@ -250,6 +278,7 @@ protected:
void collectDynDataFrame();
void computeAvgTrainingData();
void collectDynDataRow(CUData& ctu, FrameStats* rowStats);
+ void readModel(FilmGrainCharacteristics* m_filmGrain, FILE* filmgrain);
};
}
diff --git a/source/encoder/sei.h b/source/encoder/sei.h
index 61d39edd9..03e210639 100644
--- a/source/encoder/sei.h
+++ b/source/encoder/sei.h
@@ -73,6 +73,101 @@ public:
}
};
+/* Film grain characteristics */
+class FilmGrainCharacteristics : public SEI
+{
+ public:
+
+ FilmGrainCharacteristics()
+ {
+ m_payloadType = FILM_GRAIN_CHARACTERISTICS;
+ m_payloadSize = 0;
+ }
+
+ struct CompModelIntensityValues
+ {
+ uint8_t intensityIntervalLowerBound;
+ uint8_t intensityIntervalUpperBound;
+ int* compModelValue;
+ };
+
+ struct CompModel
+ {
+ bool bPresentFlag;
+ uint8_t numModelValues;
+ uint8_t m_filmGrainNumIntensityIntervalMinus1;
+ CompModelIntensityValues* intensityValues;
+ };
+
+ CompModel m_compModel[MAX_NUM_COMPONENT];
+ bool m_filmGrainCharacteristicsPersistenceFlag;
+ bool m_filmGrainCharacteristicsCancelFlag;
+ bool m_separateColourDescriptionPresentFlag;
+ bool m_filmGrainFullRangeFlag;
+ uint8_t m_filmGrainModelId;
+ uint8_t m_blendingModeId;
+ uint8_t m_log2ScaleFactor;
+ uint8_t m_filmGrainBitDepthLumaMinus8;
+ uint8_t m_filmGrainBitDepthChromaMinus8;
+ uint8_t m_filmGrainColourPrimaries;
+ uint8_t m_filmGrainTransferCharacteristics;
+ uint8_t m_filmGrainMatrixCoeffs;
+
+ void writeSEI(const SPS&)
+ {
+ WRITE_FLAG(m_filmGrainCharacteristicsCancelFlag,
"film_grain_characteristics_cancel_flag");
+
+ if (!m_filmGrainCharacteristicsCancelFlag)
+ {
+ WRITE_CODE(m_filmGrainModelId, 2, "film_grain_model_id");
+ WRITE_FLAG(m_separateColourDescriptionPresentFlag,
"separate_colour_description_present_flag");
+ if (m_separateColourDescriptionPresentFlag)
+ {
+ WRITE_CODE(m_filmGrainBitDepthLumaMinus8, 3,
"film_grain_bit_depth_luma_minus8");
+ WRITE_CODE(m_filmGrainBitDepthChromaMinus8, 3,
"film_grain_bit_depth_chroma_minus8");
+ WRITE_FLAG(m_filmGrainFullRangeFlag,
"film_grain_full_range_flag");
+ WRITE_CODE(m_filmGrainColourPrimaries, X265_BYTE,
"film_grain_colour_primaries");
+ WRITE_CODE(m_filmGrainTransferCharacteristics, X265_BYTE,
"film_grain_transfer_characteristics");
+ WRITE_CODE(m_filmGrainMatrixCoeffs, X265_BYTE,
"film_grain_matrix_coeffs");
+ }
+ WRITE_CODE(m_blendingModeId, 2, "blending_mode_id");
+ WRITE_CODE(m_log2ScaleFactor, 4, "log2_scale_factor");
+ for (uint8_t c = 0; c < 3; c++)
+ {
+ WRITE_FLAG(m_compModel[c].bPresentFlag &&
m_compModel[c].m_filmGrainNumIntensityIntervalMinus1 + 1 > 0 &&
m_compModel[c].numModelValues > 0, "comp_model_present_flag[c]");
+ }
+ for (uint8_t c = 0; c < 3; c++)
+ {
+ if (m_compModel[c].bPresentFlag &&
m_compModel[c].m_filmGrainNumIntensityIntervalMinus1 + 1 > 0 &&
m_compModel[c].numModelValues > 0)
+ {
+
assert(m_compModel[c].m_filmGrainNumIntensityIntervalMinus1 + 1 <= 256);
+ assert(m_compModel[c].numModelValues <= X265_BYTE);
+
WRITE_CODE(m_compModel[c].m_filmGrainNumIntensityIntervalMinus1 ,
X265_BYTE, "num_intensity_intervals_minus1[c]");
+ WRITE_CODE(m_compModel[c].numModelValues - 1, 3,
"num_model_values_minus1[c]");
+ for (uint8_t interval = 0; interval <
m_compModel[c].m_filmGrainNumIntensityIntervalMinus1 + 1; interval++)
+ {
+
WRITE_CODE(m_compModel[c].intensityValues[interval].intensityIntervalLowerBound,
X265_BYTE, "intensity_interval_lower_bound[c][i]");
+
WRITE_CODE(m_compModel[c].intensityValues[interval].intensityIntervalUpperBound,
X265_BYTE, "intensity_interval_upper_bound[c][i]");
+ for (uint8_t j = 0; j <
m_compModel[c].numModelValues; j++)
+ {
+
WRITE_SVLC(m_compModel[c].intensityValues[interval].compModelValue[j],"comp_model_value[c][i]");
+ }
+ }
+ }
+ }
+ WRITE_FLAG(m_filmGrainCharacteristicsPersistenceFlag,
"film_grain_characteristics_persistence_flag");
+ }
+ if (m_bitIf->getNumberOfWrittenBits() % X265_BYTE != 0)
+ {
+ WRITE_FLAG(1, "payload_bit_equal_to_one");
+ while (m_bitIf->getNumberOfWrittenBits() % X265_BYTE != 0)
+ {
+ WRITE_FLAG(0, "payload_bit_equal_to_zero");
+ }
+ }
+ }
+};
+
static const uint32_t ISO_IEC_11578_LEN = 16;
class SEIuserDataUnregistered : public SEI
diff --git a/source/test/regression-tests.txt
b/source/test/regression-tests.txt
index 26d43b28a..10a4449e7 100644
--- a/source/test/regression-tests.txt
+++ b/source/test/regression-tests.txt
@@ -195,4 +195,8 @@ CrowdRun_1920x1080_50_10bit_422.yuv,--no-cutree
--analysis-save x265_analysis.da
#segment encoding
BasketballDrive_1920x1080_50.y4m, --preset ultrafast --no-open-gop
--chunk-start 100 --chunk-end 200
+#Test FG SEI message addition
+#OldTownCross_1920x1080_50_10bit_422.yuv,--preset slower --tune grain
--film-grain "OldTownCross_1920x1080_50_10bit_422.bin"
+#RaceHorses_416x240_30_10bit.yuv,--preset ultrafast --signhide
--colormatrix bt709 --film-grain "RaceHorses_416x240_30_10bit.bin"
+
# vim: tw=200
diff --git a/source/test/smoke-tests.txt b/source/test/smoke-tests.txt
index 041b97e76..a88a225b4 100644
--- a/source/test/smoke-tests.txt
+++ b/source/test/smoke-tests.txt
@@ -23,3 +23,7 @@ CrowdRun_1920x1080_50_10bit_444.yuv,--preset=superfast
--bitrate 7000 --sao --li
# Main12 intraCost overflow bug test
720p50_parkrun_ter.y4m,--preset medium
720p50_parkrun_ter.y4m,--preset=fast --hevc-aq --no-cutree
+# Test FG SEI message addition
+# CrowdRun_1920x1080_50_10bit_444.yuv,--preset=ultrafast --weightp
--keyint -1 --film-grain "CrowdRun_1920x1080_50_10bit_444.bin"
+# DucksAndLegs_1920x1080_60_10bit_422.yuv,--preset=veryfast --min-cu 16
--film-grain "DucksAndLegs_1920x1080_60_10bit_422.bin"
+# NebutaFestival_2560x1600_60_10bit_crop.yuv,--preset=superfast --bitrate
10000 --sao --limit-sao --cll --max-cll "1000,400" --film-grain
"NebutaFestival_2560x1600_60_10bit_crop.bin"
diff --git a/source/x265.h b/source/x265.h
index bf945498f..5d242d653 100644
--- a/source/x265.h
+++ b/source/x265.h
@@ -1989,6 +1989,9 @@ typedef struct x265_param
/* Flag to turn on/off traditional scenecut detection in histogram
based scenecut detection.
* When false, only spatial properties are used for scenecut
detection. Default true */
int bEnableTradScdInHscd;
+
+ /* Film Grain Characteristic file */
+ char* filmGrain;
} x265_param;
/* x265_param_alloc:
diff --git a/source/x265cli.cpp b/source/x265cli.cpp
index bfb6293f3..3a03de579 100755
--- a/source/x265cli.cpp
+++ b/source/x265cli.cpp
@@ -391,6 +391,9 @@ namespace X265_NS {
H1(" 2 - unable to open encoder\n");
H1(" 3 - unable to generate stream headers\n");
H1(" 4 - encoder abort\n");
+ H0("\nSEI Message Options\n");
+ H0(" --film-grain <filename> File containing Film
Grain Characteristics to be written as a SEI Message\n");
+
#undef OPT
#undef H0
#undef H1
diff --git a/source/x265cli.h b/source/x265cli.h
index 8fcf37b8a..7072f7616 100644
--- a/source/x265cli.h
+++ b/source/x265cli.h
@@ -380,6 +380,7 @@ static const struct option long_options[] =
{ "abr-ladder", required_argument, NULL, 0 },
{ "min-vbv-fullness", required_argument, NULL, 0 },
{ "max-vbv-fullness", required_argument, NULL, 0 },
+ { "film-grain", required_argument, NULL, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
--
2.20.1.windows.1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20220304/fea240ae/attachment-0001.html>
-------------- next part --------------
system:
hardware:
testharness: 6909fedd61fbd858320887ec1c5e506c0c14a700
commit 2328a4ed4d36c350a974be632974296f8f17a9e5
Author: Keshav E <keshav at multicorewareinc.com>
Date: Thu Mar 3 11:57:52 2022 +0530
Add film grain characteristics as a SEI message to the bitstream
Running C:\Users\mcw\Desktop\keshav\smoke_test\x265_test\x265_patch\source\test\smoke-tests.txt
cur build: vc12_64_multilib group=vc12_multi
generator: Visual Studio 12 Win64
options : warn dhdr10 checked {'add-depths': ['10bit', '12bit']}
cur build: vc12_64_main12 group=vc12_12bit
generator: Visual Studio 12 Win64
options : tests main12 warn dhdr10 checked {}
cur build: vc12_64_8bpp_debug group=vc12deb
generator: Visual Studio 12 Win64
options : tests warn debug dhdr10 checked {}
cur build: vc12_64_8bpp group=vc12
generator: Visual Studio 12 Win64
options : tests warn dhdr10 checked {}
cur build: vc12_64_16bpp group=vc12_16bit
generator: Visual Studio 12 Win64
options : tests main10 warn dhdr10 checked {}
cur build: vc12_64_16bpp_debug group=vc12_16deb
generator: Visual Studio 12 Win64
options : tests main10 debug dhdr10 warn checked {}
cur build: vc12_64_main12_debug group=vc12_12deb
generator: Visual Studio 12 Win64
options : tests main12 debug dhdr10 warn checked {}
cur build: vc12_64_multilib group=vc12_multi
generator: Visual Studio 12 Win64
options : warn dhdr10 checked {'add-depths': ['10bit', '12bit']}
cur build: vc12_64_main12 group=vc12_12bit
generator: Visual Studio 12 Win64
options : tests main12 warn dhdr10 checked {}
cur build: vc12_64_8bpp_debug group=vc12deb
generator: Visual Studio 12 Win64
options : tests warn debug dhdr10 checked {}
cur build: vc12_64_8bpp group=vc12
generator: Visual Studio 12 Win64
options : tests warn dhdr10 checked {}
cur build: vc12_64_16bpp group=vc12_16bit
generator: Visual Studio 12 Win64
options : tests main10 warn dhdr10 checked {}
cur build: vc12_64_16bpp_debug group=vc12_16deb
generator: Visual Studio 12 Win64
options : tests main10 debug dhdr10 warn checked {}
cur build: vc12_64_main12_debug group=vc12_12deb
generator: Visual Studio 12 Win64
options : tests main12 debug dhdr10 warn checked {}
All tests passed for 2328a4ed4d36c350a974be632974296f8f17a9e5 on
-------------- next part --------------
A non-text attachment was scrubbed...
Name: final_patch_v1_0.diff
Type: application/octet-stream
Size: 20280 bytes
Desc: not available
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20220304/fea240ae/attachment-0001.obj>
More information about the x265-devel
mailing list