Sorry, I've said high QP but I've actually meant low QPs. Those tests were made with QP varying from 13 to 43.
On Tue, Nov 7, 2017 at 12:41 AM, Mont3z Claros <mont3z.cla...@gmail.com> wrote: > Hi Tom, > > after I removed the lowpass transformation for the 8x8 blocks it seems > that some of my initial assumptions have changed. Please, see the > attached pdf with two curves. The first one only has lowpass > transformation for 16x16 and 32x32 blocks. The second curve has > lowpass for all blocks (8x8,16x16,32x32). In first case it looks > reasonable to consider removing the limitations for high QP. I wonder > what it's happening... I would expect at least that the performance > would be closer for high QPs. > > Thanks, > Humberto > > On Mon, Nov 6, 2017 at 5:27 PM, Tom Vaughan > <tom.vaug...@multicorewareinc.com> wrote: >> Hi Humberto, >> We need to understand the effect on performance and encoding efficiency >> under different conditions (quality levels - or QPs, performance presets, >> and picture sizes). Once we have a better understanding, we can figure out >> when to turn it on. It's likely to be something that can help the fastest >> presets go faster, where encoding efficiency is less of a priority than >> performance. But as you noted, it may also be something that we would only >> enable when x265 is using higher QP values. >> >> I've asked our team to do some experiments, but if you have any date from >> your experiments we would love to see it. >> >> Thanks, >> Tom >> >> -----Original Message----- >> From: x265-devel [mailto:x265-devel-boun...@videolan.org] On Behalf Of >> Mont3z Claros >> Sent: Monday, November 6, 2017 7:28 AM >> To: Development for x265 >> Subject: Re: [x265] [PATCH] Implementation of low-pass subband dct >> approximation >> >> Hi, >> >> thanks for you comment and thanks for accepting my contribution. >> >> I did so many tests using constant QP that I forgot about the other more >> important rate-control modes. We could relax this by just ORing it with >> limits for those other modes. However I understand that ideally the >> application of this transformation is a function of QP and the blocks mean >> deviation. I've tried to do this indirectly by fixing the QP's limit and by >> using the transformation only on 16x16 and 32x32 blocks. >> >> I'll try figure out a better way to best add those limitations. >> Please, let me know if you can think of anything that might help. >> >> Humberto >> >>>> + >>>> void setupAliasPrimitives(EncoderPrimitives &p) { #if >>>> HIGH_BIT_DEPTH @@ -256,6 +271,11 @@ #endif >>>> >>>> setupAliasPrimitives(primitives); >>>> + >>>> + if (param->bLowPassDct && param->rc.qp > 20) >>>> + { >>>> + enableLowpassDCTPrimitives(primitives); >>>> + } >>> >>> >>> Essentially this means that you enable lowpass-dct only when doing >>> constant QP encodes. You could consider relaxing this to enable the >>> option for other rate-control modes as well (ABR/CRF) and have some >>> directives in your docs as to when the feature is better to use. >>> Hard-coding the limits in the code isn't a great idea, IMO. >>> >>>> >>>> } >>>> >>>> x265_report_simd(param); >>>> diff -r 6a310b24c6a2 -r 893b36b82133 source/common/primitives.h >>>> --- a/source/common/primitives.h Thu Nov 02 12:17:29 2017 +0530 >>>> +++ b/source/common/primitives.h Sat Oct 14 09:19:03 2017 -0700 >>>> @@ -259,8 +259,12 @@ >>>> * primitives will leave 64x64 pointers NULL. Indexed by LumaCU */ >>>> struct CU >>>> { >>>> - dct_t dct; >>>> - idct_t idct; >>>> + dct_t dct; // active dct transformation >>>> + idct_t idct; // active idct transformation >>>> + >>>> + dct_t standard_dct; // original dct function, used >>>> by >>>> lowpass_dct >>>> + dct_t lowpass_dct; // lowpass dct approximation >>>> + >>>> calcresidual_t calcresidual; >>>> pixel_sub_ps_t sub_ps; >>>> pixel_add_ps_t add_ps; >>>> diff -r 6a310b24c6a2 -r 893b36b82133 source/x265.h >>>> --- a/source/x265.h Thu Nov 02 12:17:29 2017 +0530 >>>> +++ b/source/x265.h Sat Oct 14 09:19:03 2017 -0700 >>>> @@ -1505,6 +1505,11 @@ >>>> >>>> /* Disable lookahead */ >>>> int bDisableLookahead; >>>> + >>>> + /* Use low-pass truncated dct approximation >>>> + * This DCT approximation is less computational intensive and >>>> + gives >>>> results close to >>>> + * standard DCT for QP >= 23 */ >>>> + int bLowPassDct; >>>> } x265_param; >>>> >>>> /* x265_param_alloc: >>>> diff -r 6a310b24c6a2 -r 893b36b82133 source/x265cli.h >>>> --- a/source/x265cli.h Thu Nov 02 12:17:29 2017 +0530 >>>> +++ b/source/x265cli.h Sat Oct 14 09:19:03 2017 -0700 >>>> @@ -282,6 +282,7 @@ >>>> { "force-flush", required_argument, NULL, 0 }, >>>> { "splitrd-skip", no_argument, NULL, 0 }, >>>> { "no-splitrd-skip", no_argument, NULL, 0 }, >>>> + { "lowpass-dct", no_argument, NULL, 0 }, >>>> { 0, 0, 0, 0 }, >>>> { 0, 0, 0, 0 }, >>>> { 0, 0, 0, 0 }, >>>> @@ -543,6 +544,7 @@ >>>> H1("-r/--recon <filename> Reconstructed raw image YUV or >>>> Y4M output file name\n"); >>>> H1(" --recon-depth <integer> Bit-depth of reconstructed raw >>>> image file. Defaults to input bit depth, or 8 if Y4M\n"); >>>> H1(" --recon-y4m-exec <string> pipe reconstructed frames to >>>> Y4M >>>> viewer, ex:\"ffplay -i pipe:0 -autoexit\"\n"); >>>> + H0(" --lowpass-dct Use low-pass subband dct >>>> approximation. Default %s\n", OPT(param->bLowPassDct)); >>>> H1("\nExecutable return codes:\n"); >>>> H1(" 0 - encode successful\n"); >>>> H1(" 1 - unable to parse command line\n"); >>>> >>>> _______________________________________________ >>>> x265-devel mailing list >>>> x265-devel@videolan.org >>>> https://mailman.videolan.org/listinfo/x265-devel >>>> >>> >>> >>> _______________________________________________ >>> x265-devel mailing list >>> x265-devel@videolan.org >>> https://mailman.videolan.org/listinfo/x265-devel >>> >> _______________________________________________ >> x265-devel mailing list >> x265-devel@videolan.org >> https://mailman.videolan.org/listinfo/x265-devel >> _______________________________________________ >> x265-devel mailing list >> x265-devel@videolan.org >> https://mailman.videolan.org/listinfo/x265-devel _______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel