Sorry, I created that from my home linux machine using hg cli, will configure patchbomb extension for hg today for later convenience.
Shazeb On Thu, Oct 3, 2013 at 2:40 AM, Steve Borho <[email protected]> wrote: > > > > On Wed, Oct 2, 2013 at 6:47 AM, Shazeb Khan > <[email protected]>wrote: > >> # HG changeset patch >> # User Shazeb Nawaz Khan <[email protected]> >> # Date 1380713440 -19800 >> # Node ID 09de1a4441d6b00c36c79c6ed90e296cbe144004 >> # Parent c5dc3e37d76772b5e26c6996ab0df5ce325f54a7 >> >> Templating weightUnidir primitive to support pixel inputs >> > > queued, but it required a lot of fixups because the patch was line-wrapped > like crazy by your MTA > > it's best to use hg email or the thg email tool to send patches. > > >> diff -r c5dc3e37d767 -r 09de1a4441d6 >> source/Lib/TLibCommon/TComWeightPrediction.cpp >> --- a/source/Lib/TLibCommon/TComWeightPrediction.cpp Tue Oct 01 >> 17:28:19 2013 +0530 >> +++ b/source/Lib/TLibCommon/TComWeightPrediction.cpp Wed Oct 02 >> 17:00:40 2013 +0530 >> @@ -431,7 +431,7 @@ >> srcStride = srcYuv0->m_width; >> dstStride = outDstYuv->getStride(); >> >> - primitives.weightpUni(srcY0, dstY, srcStride, dstStride, width, >> height, w0, round, shift, offset); >> + primitives.weightpUni((uint16_t *)srcY0, dstY, srcStride, >> dstStride, width, height, w0, round, shift, offset); >> } >> >> // Chroma U : -------------------------------------------- >> @@ -447,7 +447,7 @@ >> width >>= 1; >> height >>= 1; >> >> - primitives.weightpUni(srcU0, dstU, srcStride, dstStride, width, >> height, w0, round, shift, offset); >> + primitives.weightpUni((uint16_t *)srcU0, dstU, srcStride, dstStride, >> width, height, w0, round, shift, offset); >> >> // Chroma V : -------------------------------------------- >> w0 = wp0[2].w; >> @@ -455,7 +455,7 @@ >> shift = wp0[2].shift + shiftNum; >> round = shift ? (1 << (shift - 1)) : 0; >> >> - primitives.weightpUni(srcV0, dstV, srcStride, dstStride, width, >> height, w0, round, shift, offset); >> + primitives.weightpUni((uint16_t *)srcV0, dstV, srcStride, dstStride, >> width, height, w0, round, shift, offset); >> } >> >> //======================================================= >> diff -r c5dc3e37d767 -r 09de1a4441d6 source/common/pixel.cpp >> --- a/source/common/pixel.cpp Tue Oct 01 17:28:19 2013 +0530 >> +++ b/source/common/pixel.cpp Wed Oct 02 17:00:40 2013 +0530 >> @@ -514,7 +514,8 @@ >> >> } >> } >> >> -void weightUnidir(short *src, pixel *dst, intptr_t srcStride, intptr_t >> dstStride, int width, int height, int w0, int round, int shift, int offset) >> +template <typename T> >> +void weightUnidir(T *src, pixel *dst, intptr_t srcStride, intptr_t >> dstStride, int width, int height, int w0, int round, int shift, int offset) >> >> { >> int x, y; >> for (y = height - 1; y >= 0; y--) >> @@ -842,7 +843,8 @@ >> >> p.transpose[3] = transpose<32>; >> p.transpose[4] = transpose<64>; >> >> - p.weightpUni = weightUnidir; >> + p.weightpUniPixel = weightUnidir<pixel>; >> + p.weightpUni = weightUnidir<uint16_t>; >> >> >> p.pixelsub_sp = pixelsub_sp_c; >> p.pixeladd_pp = pixeladd_pp_c; >> diff -r c5dc3e37d767 -r 09de1a4441d6 source/common/primitives.h >> --- a/source/common/primitives.h Tue Oct 01 17:28:19 2013 +0530 >> +++ b/source/common/primitives.h Wed Oct 02 17:00:40 2013 +0530 >> @@ -228,8 +228,8 @@ >> >> typedef void (*filterRowV_N_t)(short *midA, intptr_t midStride, pixel >> *dstA, pixel *dstB, pixel *dstC, intptr_t dstStride, int width, int height, >> int marginX, int marginY, int row, int isLastRow); >> typedef void (*extendCURowBorder_t)(pixel* txt, intptr_t stride, int >> width, int height, int marginX); >> >> - >> -typedef void (*weightpUni_t)(short *src, pixel *dst, intptr_t srcStride, >> intptr_t dstStride, int width, int height, int w0, int round, int shift, >> int offset); >> +typedef void (*weightpUniPixel_t)(pixel *src, pixel *dst, intptr_t >> srcStride, intptr_t dstStride, int width, int height, int w0, int round, >> int shift, int offset); >> +typedef void (*weightpUni_t)(uint16_t *src, pixel *dst, intptr_t >> srcStride, intptr_t dstStride, int width, int height, int w0, int round, >> int shift, int offset); >> >> typedef void (*scale_t)(pixel *dst, pixel *src, intptr_t stride); >> typedef void (*downscale_t)(pixel *src0, pixel *dstf, pixel *dsth, pixel >> *dstv, pixel *dstc, >> intptr_t src_stride, intptr_t dst_stride, >> int width, int height); >> @@ -286,6 +286,7 @@ >> >> calcrecon_t calcrecon[NUM_SQUARE_BLOCKS]; >> transpose_t transpose[NUM_SQUARE_BLOCKS]; >> >> + weightpUniPixel_t weightpUniPixel; >> >> weightpUni_t weightpUni; >> pixelsub_sp_t pixelsub_sp; >> pixeladd_ss_t pixeladd_ss; >> diff -r c5dc3e37d767 -r 09de1a4441d6 source/common/vec/pixel.inc >> --- a/source/common/vec/pixel.inc Tue Oct 01 17:28:19 2013 +0530 >> +++ b/source/common/vec/pixel.inc Wed Oct 02 17:00:40 2013 +0530 >> >> @@ -469,7 +469,9 @@ >> p.transpose[2] = transpose16; >> p.transpose[3] = transpose32; >> p.transpose[4] = transpose<64>; >> - p.weightpUni = weightUnidir; >> + p.weightpUniPixel = weightUnidir<pixel>; >> + p.weightpUni = weightUnidir<uint16_t>; >> + >> #endif >> >> #if !HIGH_BIT_DEPTH >> diff -r c5dc3e37d767 -r 09de1a4441d6 source/common/vec/pixel8.inc >> --- a/source/common/vec/pixel8.inc Tue Oct 01 17:28:19 2013 +0530 >> +++ b/source/common/vec/pixel8.inc Wed Oct 02 17:00:40 2013 +0530 >> @@ -8573,7 +8573,8 @@ >> >> } >> } >> >> -void weightUnidir(short *src, pixel *dst, intptr_t srcStride, intptr_t >> dstStride, int width, int height, int w0, int round, int shift, int offset) >> +template <typename T> >> +void weightUnidir(T *src, pixel *dst, intptr_t srcStride, intptr_t >> dstStride, int width, int height, int w0, int round, int shift, int offset) >> >> { >> int x, y; >> Vec8s tmp; >> diff -r c5dc3e37d767 -r 09de1a4441d6 source/test/pixelharness.cpp >> --- a/source/test/pixelharness.cpp Tue Oct 01 17:28:19 2013 +0530 >> +++ b/source/test/pixelharness.cpp Wed Oct 02 17:00:40 2013 +0530 >> @@ -343,8 +343,8 @@ >> int offset = (rand() % 256) - 128; >> for (int i = 0; i < ITERS; i++) >> { >> - opt(sbuf1 + j, opt_dest, 64, 64, width, height, w0, round, >> shift, offset); >> - ref(sbuf1 + j, ref_dest, 64, 64, width, height, w0, round, >> shift, offset); >> + opt((uint16_t*)sbuf1 + j, opt_dest, 64, 64, width, height, w0, >> round, shift, offset); >> + ref((uint16_t*)sbuf1 + j, ref_dest, 64, 64, width, height, w0, >> round, shift, offset); >> >> if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel))) >> return false; >> @@ -355,6 +355,34 @@ >> return true; >> } >> >> +bool PixelHarness::check_weightpUni(weightpUniPixel_t ref, >> weightpUniPixel_t opt) >> +{ >> + ALIGN_VAR_16(pixel, ref_dest[64 * 64]); >> + ALIGN_VAR_16(pixel, opt_dest[64 * 64]); >> + >> + memset(ref_dest, 0, 64 * 64 * sizeof(pixel)); >> + memset(opt_dest, 0, 64 * 64 * sizeof(pixel)); >> + int j = 0; >> + int width = (2 * rand()) % 64; >> + int height = 8; >> + int w0 = rand() % 256; >> + int shift = rand() % 12; >> + int round = shift ? (1 << (shift - 1)) : 0; >> + int offset = (rand() % 256) - 128; >> + for (int i = 0; i < ITERS; i++) >> + { >> + opt((pixel *)sbuf1 + j, opt_dest, 64, 64, width, height, w0, >> round, shift, offset); >> + ref((pixel *)sbuf1 + j, ref_dest, 64, 64, width, height, w0, >> round, shift, offset); >> + >> + if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel))) >> + return false; >> + >> + j += INCR; >> + } >> + >> + return true; >> +} >> + >> bool PixelHarness::check_pixelsub_sp(pixelsub_sp_t ref, pixelsub_sp_t >> opt) >> { >> ALIGN_VAR_16(short, ref_dest[64 * 64]); >> @@ -604,6 +632,24 @@ >> } >> } >> >> + if (opt.weightpUniPixel) >> + { >> + if (!check_weightpUni(ref.weightpUniPixel, opt.weightpUniPixel)) >> + { >> + printf("Weighted Prediction for Unidir failed!\n"); >> + return false; >> + } >> + } >> + >> + if (opt.weightpUniPixel) >> + { >> + if (!check_weightpUni(ref.weightpUniPixel, opt.weightpUniPixel)) >> + { >> + printf("Weighted Prediction for Unidir failed!\n"); >> + return false; >> + } >> + } >> + >> if (opt.weightpUni) >> { >> if (!check_weightpUni(ref.weightpUni, opt.weightpUni)) >> @@ -751,10 +797,16 @@ >> REPORT_SPEEDUP(opt.blockcpy_sc, ref.blockcpy_sc, 64, 64, >> (short*)pbuf1, FENC_STRIDE, (uint8_t*)pbuf2, STRIDE); >> } >> >> + if (opt.weightpUniPixel) >> + { >> + printf("WeightpUni"); >> + REPORT_SPEEDUP(opt.weightpUniPixel, ref.weightpUniPixel, pbuf1, >> pbuf2, 64, 64, 32, 32, 128, 1 << 9, 10, 100); >> + } >> + >> if (opt.weightpUni) >> { >> printf("WeightpUni"); >> - REPORT_SPEEDUP(opt.weightpUni, ref.weightpUni, sbuf1, pbuf1, 64, >> 64, 32, 32, 128, 1 << 9, 10, 100); >> + REPORT_SPEEDUP(opt.weightpUni, ref.weightpUni, (uint16_t*)sbuf1, >> pbuf1, 64, 64, 32, 32, 128, 1 << 9, 10, 100); >> } >> >> if (opt.pixelsub_sp) >> diff -r c5dc3e37d767 -r 09de1a4441d6 source/test/pixelharness.h >> --- a/source/test/pixelharness.h Tue Oct 01 17:28:19 2013 +0530 >> +++ b/source/test/pixelharness.h Wed Oct 02 17:00:40 2013 +0530 >> @@ -46,6 +46,7 @@ >> bool check_block_copy_s_c(blockcpy_sc_t ref, blockcpy_sc_t opt); >> bool check_calresidual(calcresidual_t ref, calcresidual_t opt); >> bool check_calcrecon(calcrecon_t ref, calcrecon_t opt); >> + bool check_weightpUni(weightpUniPixel_t ref, weightpUniPixel_t opt); >> bool check_weightpUni(weightpUni_t ref, weightpUni_t opt); >> bool check_pixelsub_sp(pixelsub_sp_t ref, pixelsub_sp_t opt); >> bool check_pixeladd_ss(pixeladd_ss_t ref, pixeladd_ss_t opt); >> >> _______________________________________________ >> x265-devel mailing list >> [email protected] >> https://mailman.videolan.org/listinfo/x265-devel >> >> > > > -- > Steve Borho > > _______________________________________________ > x265-devel mailing list > [email protected] > https://mailman.videolan.org/listinfo/x265-devel > >
_______________________________________________ x265-devel mailing list [email protected] https://mailman.videolan.org/listinfo/x265-devel
