[x265] [PATCH] hist-scenecut: Fixes output change introduced by hist-scenecut in ultrafast mode
Aruna Matheswaran
aruna at multicorewareinc.com
Thu Jan 30 07:44:35 CET 2020
Pushed to default.
On Thu, Jan 30, 2020 at 10:56 AM <srikanth.kurapati at multicorewareinc.com>
wrote:
> # HG changeset patch
> # User Srikanth Kurapati
> # Date 1579955883 -19800
> # Sat Jan 25 18:08:03 2020 +0530
> # Node ID 802600c8e5dcc1eff03725af6f399a72c09d24f6
> # Parent acc5d16999e2faf6e75ecc1df9a01c1953ebaf8c
> hist-scenecut: Fixes output change introduced by hist-scenecut in
> ultrafast mode.
>
> Output change was due to absence of non-I scenecut frames. Enabled the
> old flow
> for scenecut functions in lookahead so that non-I scenecut frames are
> present.
>
> diff -r acc5d16999e2 -r 802600c8e5dc source/encoder/slicetype.cpp
> --- a/source/encoder/slicetype.cpp Mon Jan 20 18:07:59 2020 +0530
> +++ b/source/encoder/slicetype.cpp Sat Jan 25 18:08:03 2020 +0530
> @@ -1995,12 +1995,12 @@
> bool isScenecut = false;
>
> /* When scenecut threshold is set, use scenecut detection for I frame
> placements */
> - if (m_param->scenecutThreshold)
> - isScenecut = scenecut(frames, 0, 1, true, origNumFrames);
> - else if (m_param->bHistBasedSceneCut)
> - isScenecut = frames[1]->bScenecut;
> -
> - if (isScenecut)
> + if (m_param->bHistBasedSceneCut)
> + isScenecut = frames[1]->bScenecut;
> + else
> + isScenecut = scenecut(frames, 0, 1, true, origNumFrames);
> +
> + if (isScenecut && (m_param->bHistBasedSceneCut ||
> m_param->scenecutThreshold))
> {
> frames[1]->sliceType = X265_TYPE_I;
> return;
> @@ -2011,12 +2011,12 @@
> m_extendGopBoundary = false;
> for (int i = m_param->bframes + 1; i < origNumFrames; i +=
> m_param->bframes + 1)
> {
> - if (m_param->scenecutThreshold)
> + if (!m_param->bHistBasedSceneCut)
> scenecut(frames, i, i + 1, true, origNumFrames);
>
> for (int j = i + 1; j <= X265_MIN(i + m_param->bframes + 1,
> origNumFrames); j++)
> {
> - if (( m_param->scenecutThreshold && frames[j]->bScenecut
> && scenecutInternal(frames, j - 1, j, true)) ||
> + if ((!m_param->bHistBasedSceneCut && frames[j]->bScenecut
> && scenecutInternal(frames, j - 1, j, true)) ||
> (m_param->bHistBasedSceneCut && frames[j]->bScenecut))
> {
> m_extendGopBoundary = true;
> @@ -2126,7 +2126,7 @@
> {
> for (int j = 1; j < numBFrames + 1; j++)
> {
> - if ((m_param->scenecutThreshold && scenecut(frames, j, j
> + 1, false, origNumFrames)) ||
> + if ((!m_param->bHistBasedSceneCut && scenecut(frames, j,
> j + 1, false, origNumFrames)) ||
> (m_param->bHistBasedSceneCut && frames[j +
> 1]->bScenecut) ||
> (bForceRADL && (frames[j]->frameNum == preRADL)))
> {
> diff -r acc5d16999e2 -r 802600c8e5dc source/test/regression-tests.txt
> --- a/source/test/regression-tests.txt Mon Jan 20 18:07:59 2020 +0530
> +++ b/source/test/regression-tests.txt Sat Jan 25 18:08:03 2020 +0530
> @@ -161,6 +161,7 @@
> Island_960x540_24.yuv,--no-cutree --aq-mode 0 --bitrate 6000
> --scenecut-aware-qp
> sintel_trailer_2k_1920x1080_24.yuv, --preset medium --hist-scenecut
> --hist-threshold 0.02 --frame-dup --dup-threshold 60 --hrd --bitrate 10000
> --vbv-bufsize 15000 --vbv-maxrate 12000
> sintel_trailer_2k_1920x1080_24.yuv, --preset medium --hist-scenecut
> --hist-threshold 0.02
> +sintel_trailer_2k_1920x1080_24.yuv, --preset ultrafast --hist-scenecut
> --hist-threshold 0.02
>
> # Main12 intraCost overflow bug test
> 720p50_parkrun_ter.y4m,--preset medium
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
--
Regards,
*Aruna Matheswaran,*
Video Codec Engineer,
Media & AI analytics BU,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20200130/6f67ec92/attachment.html>
More information about the x265-devel
mailing list