[x265] [PATCH] primivites: rename luma_p2s to convert_p2s and move into PU
chen
chenm003 at 163.com
Thu Apr 2 08:01:26 CEST 2015
At 2015-04-02 13:50:33,"Steve Borho" <steve at borho.org> wrote:
>On 04/02, chen wrote:
>>
>>
>>
>> At 2015-04-01 23:31:39,"Steve Borho" <steve at borho.org> wrote:
>> >On 04/01, rajesh at multicorewareinc.com wrote:
>> >> # HG changeset patch
>> >> # User Rajesh Paulraj<rajesh at multicorewareinc.com>
>> >> # Date 1427889433 -19800
>> >> # Wed Apr 01 17:27:13 2015 +0530
>> >> # Node ID c26756d8ced6fe69e58b2bb77419b5f975a54de9
>> >> # Parent ac85c775620f1dcb0df056874633cbf916098bd2
>> >> primivites: rename luma_p2s to convert_p2s and move into PU
>> >>
>> >> diff -r ac85c775620f -r c26756d8ced6 source/common/ipfilter.cpp
>> >> --- a/source/common/ipfilter.cpp Tue Mar 31 20:04:28 2015 -0500
>> >> +++ b/source/common/ipfilter.cpp Wed Apr 01 17:27:13 2015 +0530
>> >> @@ -34,27 +34,8 @@
>> >> #endif
>> >>
>> >> namespace {
>> >> -template<int dstStride, int width, int height>
>> >> -void pixelToShort_c(const pixel* src, intptr_t srcStride, int16_t* dst)
>> >> -{
>> >> - int shift = IF_INTERNAL_PREC - X265_DEPTH;
>> >> - int row, col;
>> >> -
>> >> - for (row = 0; row < height; row++)
>> >> - {
>> >> - for (col = 0; col < width; col++)
>> >> - {
>> >> - int16_t val = src[col] << shift;
>> >> - dst[col] = val - (int16_t)IF_INTERNAL_OFFS;
>> >> - }
>> >> -
>> >> - src += srcStride;
>> >> - dst += dstStride;
>> >> - }
>> >> -}
>> >> -
>> >> -template<int dstStride>
>> >> -void filterPixelToShort_c(const pixel* src, intptr_t srcStride, int16_t* dst, int width, int height)
>> >> +template<int width, int height>
>> >> +void filterPixelToShort_c(const pixel* src, intptr_t srcStride, int16_t* dst, int16_t dstStride)
>> >> {
>> >> int shift = IF_INTERNAL_PREC - X265_DEPTH;
>> >> int row, col;
>> >> @@ -398,7 +379,7 @@
>> >> p.chroma[X265_CSP_I420].pu[CHROMA_420_ ## W ## x ## H].filter_vps = interp_vert_ps_c<4, W, H>; \
>> >> p.chroma[X265_CSP_I420].pu[CHROMA_420_ ## W ## x ## H].filter_vsp = interp_vert_sp_c<4, W, H>; \
>> >> p.chroma[X265_CSP_I420].pu[CHROMA_420_ ## W ## x ## H].filter_vss = interp_vert_ss_c<4, W, H>; \
>> >> - p.chroma[X265_CSP_I420].pu[CHROMA_420_ ## W ## x ## H].chroma_p2s = pixelToShort_c<MAX_CU_SIZE / 2, W, H>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_ ## W ## x ## H].chroma_p2s = filterPixelToShort_c<W, H>;
>> >>
>> >> #define CHROMA_422(W, H) \
>> >> p.chroma[X265_CSP_I422].pu[CHROMA_422_ ## W ## x ## H].filter_hpp = interp_horiz_pp_c<4, W, H>; \
>> >> @@ -407,7 +388,7 @@
>> >> p.chroma[X265_CSP_I422].pu[CHROMA_422_ ## W ## x ## H].filter_vps = interp_vert_ps_c<4, W, H>; \
>> >> p.chroma[X265_CSP_I422].pu[CHROMA_422_ ## W ## x ## H].filter_vsp = interp_vert_sp_c<4, W, H>; \
>> >> p.chroma[X265_CSP_I422].pu[CHROMA_422_ ## W ## x ## H].filter_vss = interp_vert_ss_c<4, W, H>; \
>> >> - p.chroma[X265_CSP_I422].pu[CHROMA_422_ ## W ## x ## H].chroma_p2s = pixelToShort_c<MAX_CU_SIZE / 2, W, H>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_ ## W ## x ## H].chroma_p2s = filterPixelToShort_c<W, H>;
>> >>
>> >> #define CHROMA_444(W, H) \
>> >> p.chroma[X265_CSP_I444].pu[LUMA_ ## W ## x ## H].filter_hpp = interp_horiz_pp_c<4, W, H>; \
>> >> @@ -416,7 +397,7 @@
>> >> p.chroma[X265_CSP_I444].pu[LUMA_ ## W ## x ## H].filter_vps = interp_vert_ps_c<4, W, H>; \
>> >> p.chroma[X265_CSP_I444].pu[LUMA_ ## W ## x ## H].filter_vsp = interp_vert_sp_c<4, W, H>; \
>> >> p.chroma[X265_CSP_I444].pu[LUMA_ ## W ## x ## H].filter_vss = interp_vert_ss_c<4, W, H>; \
>> >> - p.chroma[X265_CSP_I444].pu[LUMA_ ## W ## x ## H].chroma_p2s = pixelToShort_c<MAX_CU_SIZE, W, H>;
>> >> + p.chroma[X265_CSP_I444].pu[LUMA_ ## W ## x ## H].chroma_p2s = filterPixelToShort_c<W, H>;
>> >>
>> >> #define LUMA(W, H) \
>> >> p.pu[LUMA_ ## W ## x ## H].luma_hpp = interp_horiz_pp_c<8, W, H>; \
>> >> @@ -426,7 +407,7 @@
>> >> p.pu[LUMA_ ## W ## x ## H].luma_vsp = interp_vert_sp_c<8, W, H>; \
>> >> p.pu[LUMA_ ## W ## x ## H].luma_vss = interp_vert_ss_c<8, W, H>; \
>> >> p.pu[LUMA_ ## W ## x ## H].luma_hvpp = interp_hv_pp_c<8, W, H>; \
>> >> - p.pu[LUMA_ ## W ## x ## H].filter_p2s = pixelToShort_c<MAX_CU_SIZE, W, H>
>> >> + p.pu[LUMA_ ## W ## x ## H].convert_p2s = filterPixelToShort_c<W, H>;
>> >>
>> >> void setupFilterPrimitives_c(EncoderPrimitives& p)
>> >> {
>> >> @@ -530,11 +511,82 @@
>> >> CHROMA_444(48, 64);
>> >> CHROMA_444(64, 16);
>> >> CHROMA_444(16, 64);
>> >> - p.luma_p2s = filterPixelToShort_c<MAX_CU_SIZE>;
>> >>
>> >> - p.chroma[X265_CSP_I444].p2s = filterPixelToShort_c<MAX_CU_SIZE>;
>> >> - p.chroma[X265_CSP_I420].p2s = filterPixelToShort_c<MAX_CU_SIZE / 2>;
>> >> - p.chroma[X265_CSP_I422].p2s = filterPixelToShort_c<MAX_CU_SIZE / 2>;
>> >> + p.pu[LUMA_4x4].convert_p2s = filterPixelToShort_c<4, 4>;
>> >> + p.pu[LUMA_4x8].convert_p2s = filterPixelToShort_c<4, 8>;
>> >> + p.pu[LUMA_4x16].convert_p2s = filterPixelToShort_c<4, 16>;
>> >> + p.pu[LUMA_8x4].convert_p2s = filterPixelToShort_c<8, 4>;
>> >> + p.pu[LUMA_8x8].convert_p2s = filterPixelToShort_c<8, 8>;
>> >> + p.pu[LUMA_8x16].convert_p2s = filterPixelToShort_c<8, 16>;
>> >> + p.pu[LUMA_8x32].convert_p2s = filterPixelToShort_c<8, 32>;
>> >> + p.pu[LUMA_16x4].convert_p2s = filterPixelToShort_c<16, 4>;
>> >> + p.pu[LUMA_16x8].convert_p2s = filterPixelToShort_c<16, 8>;
>> >> + p.pu[LUMA_16x12].convert_p2s = filterPixelToShort_c<16, 12>;
>> >> + p.pu[LUMA_16x16].convert_p2s = filterPixelToShort_c<16, 16>;
>> >> + p.pu[LUMA_16x32].convert_p2s = filterPixelToShort_c<16, 32>;
>> >> + p.pu[LUMA_16x64].convert_p2s = filterPixelToShort_c<16, 64>;
>> >> + p.pu[LUMA_32x8].convert_p2s = filterPixelToShort_c<32, 8>;
>> >> + p.pu[LUMA_32x16].convert_p2s = filterPixelToShort_c<32, 16>;
>> >> + p.pu[LUMA_32x24].convert_p2s = filterPixelToShort_c<32, 24>;
>> >> + p.pu[LUMA_32x32].convert_p2s = filterPixelToShort_c<32, 32>;
>> >> + p.pu[LUMA_32x64].convert_p2s = filterPixelToShort_c<32, 64>;
>> >> + p.pu[LUMA_64x16].convert_p2s = filterPixelToShort_c<64, 16>;
>> >> + p.pu[LUMA_64x32].convert_p2s = filterPixelToShort_c<64, 32>;
>> >> + p.pu[LUMA_64x48].convert_p2s = filterPixelToShort_c<64, 48>;
>> >> + p.pu[LUMA_64x64].convert_p2s = filterPixelToShort_c<64, 64>;
>> >> + p.pu[LUMA_12x16].convert_p2s = filterPixelToShort_c<12, 16>;
>> >> + p.pu[LUMA_24x32].convert_p2s = filterPixelToShort_c<24, 32>;
>> >> + p.pu[LUMA_48x64].convert_p2s = filterPixelToShort_c<48, 64>;
>> >
>> >aren't there macros for instantiating templates per PU?
>> >
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_4x4].chroma_p2s = filterPixelToShort_c<4, 4>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_8x8].chroma_p2s = filterPixelToShort_c<8, 8>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_16x16].chroma_p2s = filterPixelToShort_c<16, 16>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_32x32].chroma_p2s = filterPixelToShort_c<32, 32>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_4x2].chroma_p2s = filterPixelToShort_c<4, 2>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_2x4].chroma_p2s = filterPixelToShort_c<2, 4>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_8x4].chroma_p2s = filterPixelToShort_c<8, 4>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_4x8].chroma_p2s = filterPixelToShort_c<4, 8>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_16x8].chroma_p2s = filterPixelToShort_c<16, 8>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_8x16].chroma_p2s = filterPixelToShort_c<8, 16>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_32x16].chroma_p2s = filterPixelToShort_c<32, 16>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_16x32].chroma_p2s = filterPixelToShort_c<16, 32>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_8x6].chroma_p2s = filterPixelToShort_c<8, 6>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_6x8].chroma_p2s = filterPixelToShort_c<6, 8>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_8x2].chroma_p2s = filterPixelToShort_c<8, 2>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_2x8].chroma_p2s = filterPixelToShort_c<2, 8>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_16x12].chroma_p2s = filterPixelToShort_c<16, 12>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_12x16].chroma_p2s = filterPixelToShort_c<12, 16>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_16x4].chroma_p2s = filterPixelToShort_c<16, 4>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_4x16].chroma_p2s = filterPixelToShort_c<4, 16>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_32x24].chroma_p2s = filterPixelToShort_c<32, 24>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_24x32].chroma_p2s = filterPixelToShort_c<24, 32>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_32x8].chroma_p2s = filterPixelToShort_c<32, 8>;
>> >> + p.chroma[X265_CSP_I420].pu[CHROMA_420_8x32].chroma_p2s = filterPixelToShort_c<8, 32>;
>> >> +
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_4x8].chroma_p2s = filterPixelToShort_c<4, 8>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_8x16].chroma_p2s = filterPixelToShort_c<8, 16>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_16x32].chroma_p2s = filterPixelToShort_c<16, 32>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_32x64].chroma_p2s = filterPixelToShort_c<32, 64>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_4x4].chroma_p2s = filterPixelToShort_c<4, 4>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_2x8].chroma_p2s = filterPixelToShort_c<2, 8>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_8x8].chroma_p2s = filterPixelToShort_c<8, 8>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_4x16].chroma_p2s = filterPixelToShort_c<4, 16>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_16x16].chroma_p2s = filterPixelToShort_c<16, 16>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_8x32].chroma_p2s = filterPixelToShort_c<8, 32>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_32x32].chroma_p2s = filterPixelToShort_c<32, 32>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_16x64].chroma_p2s = filterPixelToShort_c<16, 64>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_8x12].chroma_p2s = filterPixelToShort_c<8, 12>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_6x16].chroma_p2s = filterPixelToShort_c<6, 16>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_8x4].chroma_p2s = filterPixelToShort_c<8, 4>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_2x16].chroma_p2s = filterPixelToShort_c<2, 16>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_16x24].chroma_p2s = filterPixelToShort_c<16, 24>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_12x32].chroma_p2s = filterPixelToShort_c<12, 32>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_16x8].chroma_p2s = filterPixelToShort_c<16, 8>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_4x32].chroma_p2s = filterPixelToShort_c<4, 32>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_32x48].chroma_p2s = filterPixelToShort_c<32, 48>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_24x64].chroma_p2s = filterPixelToShort_c<24, 64>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_32x16].chroma_p2s = filterPixelToShort_c<32, 16>;
>> >> + p.chroma[X265_CSP_I422].pu[CHROMA_422_8x64].chroma_p2s = filterPixelToShort_c<8, 64>;
>> >>
>> >> p.extendRowBorder = extendCURowColBorder;
>> >> }
>> >> diff -r ac85c775620f -r c26756d8ced6 source/common/predict.cpp
>> >> --- a/source/common/predict.cpp Tue Mar 31 20:04:28 2015 -0500
>> >> +++ b/source/common/predict.cpp Wed Apr 01 17:27:13 2015 +0530
>> >> @@ -273,7 +273,8 @@
>> >> void Predict::predInterLumaShort(const PredictionUnit& pu, ShortYuv& dstSYuv, const PicYuv& refPic, const MV& mv) const
>> >> {
>> >> int16_t* dst = dstSYuv.getLumaAddr(pu.puAbsPartIdx);
>> >> - int dstStride = dstSYuv.m_size;
>> >> + /* get dstStride from predInterLumaShort */
>> >> + int16_t dstStride = MAX_CU_SIZE;
>> >
>> >no, this is not right. the stride of the destination buffer is its
>> >m_size. I'm not reviewing any more of this.
>> >
>>
>> There have a "X265_CHECK(dstStride == MAX_CU_SIZE, "stride expected to be max cu size\n");"
>> so I suggest him replace dstStride by MAX_CU_SIZE, but him forgot replace X265_CHECK one to dstSYuv.m_size
>
>the output stride has to be the stride of the YUV buffer. I don't know
>how it ever worked before.
>
We just use it in Predict::motionCompensation, the target is internal buffer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20150402/2bb7aeca/attachment-0001.html>
More information about the x265-devel
mailing list