[x265-commits] [x265] mvfield: class to struct, remove setMvd method

Steve Borho steve at borho.org
Thu Oct 23 03:31:22 CEST 2014


details:   http://hg.videolan.org/x265/rev/7b17ecc90937
branches:  
changeset: 8583:7b17ecc90937
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 01:08:55 2014 -0500
description:
mvfield: class to struct, remove setMvd method
Subject: [x265] mvfield: remove default arguments, use consistent variable names, cleanup

details:   http://hg.videolan.org/x265/rev/a453285d756d
branches:  
changeset: 8584:a453285d756d
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 01:17:25 2014 -0500
description:
mvfield: remove default arguments, use consistent variable names, cleanup
Subject: [x265] mvfield: remove getMv access method

details:   http://hg.videolan.org/x265/rev/eec157891d46
branches:  
changeset: 8585:eec157891d46
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 01:28:06 2014 -0500
description:
mvfield: remove getMv access method
Subject: [x265] mvfield: remove getRefIdx and getMvd access methods

details:   http://hg.videolan.org/x265/rev/7b94b7de0af5
branches:  
changeset: 8586:7b94b7de0af5
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 01:29:07 2014 -0500
description:
mvfield: remove getRefIdx and getMvd access methods
Subject: [x265] defs: remove last traces of REF_PIC_LIST enums, NOT_VALID -> REF_NOT_VALID

details:   http://hg.videolan.org/x265/rev/ed57e2e5c2b6
branches:  
changeset: 8587:ed57e2e5c2b6
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 02:00:51 2014 -0500
description:
defs: remove last traces of REF_PIC_LIST enums, NOT_VALID -> REF_NOT_VALID
Subject: [x265] search: avoid unnecessary memcopies in inter prediction

details:   http://hg.videolan.org/x265/rev/f3bd6e5a880a
branches:  
changeset: 8588:f3bd6e5a880a
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 02:06:11 2014 -0500
description:
search: avoid unnecessary memcopies in inter prediction

Calling setAllMvField() twice is wasteful. At least one, perhaps both, of them
will be overwritten by the final prediction.  Better to set the REF_NOT_VALID
manually for uni-predition on the 'other' list.
Subject: [x265] entropy: remove only reference to TComCUMvField outside of cudata.h

details:   http://hg.videolan.org/x265/rev/564f07d41a6e
branches:  
changeset: 8589:564f07d41a6e
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 02:11:28 2014 -0500
description:
entropy: remove only reference to TComCUMvField outside of cudata.h
Subject: [x265] cudata: copy mvfield data from CTU in copyFromPic (more --rd 0 fixes)

details:   http://hg.videolan.org/x265/rev/b0c6b3a9ccf4
branches:  
changeset: 8590:b0c6b3a9ccf4
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 02:20:54 2014 -0500
description:
cudata: copy mvfield data from CTU in copyFromPic (more --rd 0 fixes)
Subject: [x265] cudata: replace clearMvField() with m_partSet calls

details:   http://hg.videolan.org/x265/rev/4831aa891f00
branches:  
changeset: 8591:4831aa891f00
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 02:18:35 2014 -0500
description:
cudata: replace clearMvField() with m_partSet calls
Subject: [x265] mvfield: pass objects by reference, const when possible

details:   http://hg.videolan.org/x265/rev/d5d7033e1a04
branches:  
changeset: 8592:d5d7033e1a04
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 02:29:36 2014 -0500
description:
mvfield: pass objects by reference, const when possible
Subject: [x265] mvfield: remove setMvField() method

details:   http://hg.videolan.org/x265/rev/c1453d40d1cf
branches:  
changeset: 8593:c1453d40d1cf
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 02:33:00 2014 -0500
description:
mvfield: remove setMvField() method
Subject: [x265] mvfield: remove setAllMvField wrapper

details:   http://hg.videolan.org/x265/rev/cdbb818ed024
branches:  
changeset: 8594:cdbb818ed024
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 02:40:38 2014 -0500
description:
mvfield: remove setAllMvField wrapper

When you see how the code unwound, certain optimizations may become possible
Subject: [x265] search: nits

details:   http://hg.videolan.org/x265/rev/6da134a66e0f
branches:  
changeset: 8595:6da134a66e0f
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 02:51:04 2014 -0500
description:
search: nits
Subject: [x265] mvfield: remove unnecessary depth arguments to set functions

details:   http://hg.videolan.org/x265/rev/62f736e7ca47
branches:  
changeset: 8596:62f736e7ca47
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 02:55:23 2014 -0500
description:
mvfield: remove unnecessary depth arguments to set functions

mv and refidx are CU level data, not TU level, so there is never any need to set
the values for a depth other than 0.  Remove support for NxN parts from the
switch statement, made the template function protected
Subject: [x265] mvfield: combine mv buffers into a single allocation

details:   http://hg.videolan.org/x265/rev/bbe34d78a627
branches:  
changeset: 8597:bbe34d78a627
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 03:04:31 2014 -0500
description:
mvfield: combine mv buffers into a single allocation
Subject: [x265] mvfield: move TComMvField into cudata as MVField

details:   http://hg.videolan.org/x265/rev/b7ca971f2a57
branches:  
changeset: 8598:b7ca971f2a57
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 12:12:35 2014 -0500
description:
mvfield: move TComMvField into cudata as MVField

The structure is only used for collecting merge candidates now, and does not
need any constructor
Subject: [x265] cudata: merge motion field data directly into the CUData

details:   http://hg.videolan.org/x265/rev/dbfa9c03d8a3
branches:  
changeset: 8599:dbfa9c03d8a3
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 13:04:33 2014 -0500
description:
cudata: merge motion field data directly into the CUData

TComCUMvField didn't add anything except overhead
Subject: [x265] cudata: remove depth argument to setInterDirSubParts()

details:   http://hg.videolan.org/x265/rev/9430c148eb87
branches:  
changeset: 8600:9430c148eb87
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 13:13:27 2014 -0500
description:
cudata: remove depth argument to setInterDirSubParts()

Inter dir is coded at the PU level, so it is always at the current depth
Subject: [x265] search: remove unnecessary parens

details:   http://hg.videolan.org/x265/rev/2c42168b58b8
branches:  
changeset: 8601:2c42168b58b8
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 13:20:50 2014 -0500
description:
search: remove unnecessary parens
Subject: [x265] cudata: clean up a couple defines

details:   http://hg.videolan.org/x265/rev/fa10e7328429
branches:  
changeset: 8602:fa10e7328429
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 13:58:11 2014 -0500
description:
cudata: clean up a couple defines
Subject: [x265] cudata: hoist a number of trivial functions to cudata.h for inlining

details:   http://hg.videolan.org/x265/rev/3a4708b0116c
branches:  
changeset: 8603:3a4708b0116c
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 13:48:07 2014 -0500
description:
cudata: hoist a number of trivial functions to cudata.h for inlining
Subject: [x265] cudata: simplify clearCbf()

details:   http://hg.videolan.org/x265/rev/59a39ac95108
branches:  
changeset: 8604:59a39ac95108
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 13:50:48 2014 -0500
description:
cudata: simplify clearCbf()
Subject: [x265] search: use helper function to set transform depth

details:   http://hg.videolan.org/x265/rev/583484b4a5e7
branches:  
changeset: 8605:583484b4a5e7
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 13:56:26 2014 -0500
description:
search: use helper function to set transform depth
Subject: [x265] cudata: no need to pass part size to setAll*, it can look it up itself

details:   http://hg.videolan.org/x265/rev/c55083482d74
branches:  
changeset: 8606:c55083482d74
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 14:11:07 2014 -0500
description:
cudata: no need to pass part size to setAll*, it can look it up itself

It only needed the part size in the past when these were TComCUMvField methods
and they had no access to the part size array
Subject: [x265] cudata: consistent names for consistent functionality

details:   http://hg.videolan.org/x265/rev/19f79fa18526
branches:  
changeset: 8607:19f79fa18526
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 14:15:14 2014 -0500
description:
cudata: consistent names for consistent functionality
Subject: [x265] cudata: simplify setQPSubCUs()

details:   http://hg.videolan.org/x265/rev/7b87661b8fef
branches:  
changeset: 8608:7b87661b8fef
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 14:22:43 2014 -0500
description:
cudata: simplify setQPSubCUs()
Subject: [x265] cudata: pass picWidth and picHeight to calcCTUGeoms()

details:   http://hg.videolan.org/x265/rev/5d4828d1b706
branches:  
changeset: 8609:5d4828d1b706
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 14:28:17 2014 -0500
description:
cudata: pass picWidth and picHeight to calcCTUGeoms()

this was the only method which used m_frame for anything other than accessing
m_encData
Subject: [x265] cudata: keep a FrameData pointer instead of a Frame pointer

details:   http://hg.videolan.org/x265/rev/57f9b1f41b0c
branches:  
changeset: 8610:57f9b1f41b0c
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 14:48:22 2014 -0500
description:
cudata: keep a FrameData pointer instead of a Frame pointer

90% of the dereferences of m_frame were to access m_frame->m_encData. For good
reason, all of the encode data needed by the CU is in m_encData.  A few places
need to get to the orig pic.
Subject: [x265] slice: move numCuInWidth, numCuInHeight to SPS, remove Frame pointer

details:   http://hg.videolan.org/x265/rev/fe8200af773f
branches:  
changeset: 8611:fe8200af773f
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 15:38:55 2014 -0500
description:
slice: move numCuInWidth, numCuInHeight to SPS, remove Frame pointer

Since the SPS defines the picture size and CTU size, it makes sense to keep
these values there. It's a bit annoying removing m_frame from Slice, but all
of its users didn't really want the frame itself, except in a couple instances
(most already had the frame pointer)
Subject: [x265] framefilter: optimize row-height operations

details:   http://hg.videolan.org/x265/rev/a485e3377861
branches:  
changeset: 8612:a485e3377861
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 15:45:09 2014 -0500
description:
framefilter: optimize row-height operations
Subject: [x265] slice: move numCUsInFrame from FrameData to SPS

details:   http://hg.videolan.org/x265/rev/9b55f47f2043
branches:  
changeset: 8613:9b55f47f2043
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 15:59:15 2014 -0500
description:
slice: move numCUsInFrame from FrameData to SPS
Subject: [x265] framedata: param is now unused

details:   http://hg.videolan.org/x265/rev/01e865efd595
branches:  
changeset: 8614:01e865efd595
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 17:10:43 2014 -0500
description:
framedata: param is now unused
Subject: [x265] cudata: avoid 'char subscript' warnings from GCC

details:   http://hg.videolan.org/x265/rev/6716ce0bb043
branches:  
changeset: 8615:6716ce0bb043
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 17:13:32 2014 -0500
description:
cudata: avoid 'char subscript' warnings from GCC
Subject: [x265] analysis: fix --rd 1,2 behavior (broken by 84933c3136ec)

details:   http://hg.videolan.org/x265/rev/372a8230110a
branches:  
changeset: 8616:372a8230110a
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 22 17:13:57 2014 -0500
description:
analysis: fix --rd 1,2 behavior (broken by 84933c3136ec)

Also includes some fixes for --rd 0

diffstat:

 source/Lib/TLibCommon/CommonDef.h        |    5 +-
 source/Lib/TLibCommon/TComMotionInfo.cpp |  300 --------------
 source/Lib/TLibCommon/TComMotionInfo.h   |  135 ------
 source/common/CMakeLists.txt             |    2 -
 source/common/common.h                   |    8 +-
 source/common/cudata.cpp                 |  656 ++++++++++++++++++------------
 source/common/cudata.h                   |   81 ++-
 source/common/deblock.cpp                |   39 +-
 source/common/frame.cpp                  |    6 +-
 source/common/frame.h                    |    5 +-
 source/common/framedata.cpp              |   30 +-
 source/common/framedata.h                |    6 +-
 source/common/picyuv.cpp                 |   38 +-
 source/common/picyuv.h                   |    7 +-
 source/common/predict.cpp                |   23 +-
 source/common/predict.h                  |    1 -
 source/common/slice.cpp                  |    4 +-
 source/common/slice.h                    |    7 +-
 source/encoder/analysis.cpp              |   84 ++-
 source/encoder/analysis.h                |    1 -
 source/encoder/dpb.cpp                   |    3 +-
 source/encoder/encoder.cpp               |   16 +-
 source/encoder/entropy.cpp               |   14 +-
 source/encoder/entropy.h                 |    2 +-
 source/encoder/frameencoder.cpp          |   24 +-
 source/encoder/framefilter.cpp           |   60 +-
 source/encoder/framefilter.h             |    2 +
 source/encoder/ratecontrol.cpp           |   30 +-
 source/encoder/reference.cpp             |    3 +-
 source/encoder/sao.cpp                   |    2 +-
 source/encoder/search.cpp                |  155 +++---
 source/encoder/search.h                  |   22 +-
 source/encoder/slicetype.cpp             |    3 +-
 source/encoder/weightPrediction.cpp      |    6 +-
 34 files changed, 750 insertions(+), 1030 deletions(-)

diffs (truncated from 3550 to 300 lines):

diff -r 8aa71d43db99 -r 372a8230110a source/Lib/TLibCommon/CommonDef.h
--- a/source/Lib/TLibCommon/CommonDef.h	Wed Oct 22 00:28:40 2014 -0500
+++ b/source/Lib/TLibCommon/CommonDef.h	Wed Oct 22 17:13:57 2014 -0500
@@ -87,10 +87,7 @@
 #define MAX_NUM_REF_PICS            16 // max. number of pictures used for reference
 #define MAX_NUM_REF                 16 // max. number of entries in picture reference list
 
-#define REF_PIC_LIST_0              0
-#define REF_PIC_LIST_1              1
-#define REF_PIC_LIST_X              100
-#define NOT_VALID                   -1
+#define REF_NOT_VALID               -1
 
 #define AMVP_NUM_CANDS              2 // number of AMVP candidates
 #define MRG_MAX_NUM_CANDS           5 // max number of final merge candidates
diff -r 8aa71d43db99 -r 372a8230110a source/Lib/TLibCommon/TComMotionInfo.cpp
--- a/source/Lib/TLibCommon/TComMotionInfo.cpp	Wed Oct 22 00:28:40 2014 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,300 +0,0 @@
-/* The copyright in this software is being made available under the BSD
- * License, included below. This software may be subject to other third party
- * and contributor rights, including patent rights, and no such rights are
- * granted under this license.
- *
- * Copyright (c) 2010-2013, ITU/ISO/IEC
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- *  * Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
- *    be used to endorse or promote products derived from this software without
- *    specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** \file     TComMotionInfo.cpp
-    \brief    motion information handling classes
-*/
-
-#include "TComMotionInfo.h"
-#include "common.h"
-
-using namespace x265;
-
-//! \ingroup TLibCommon
-//! \{
-
-// ====================================================================================================================
-// Public member functions
-// ====================================================================================================================
-
-// --------------------------------------------------------------------------------------------------------------------
-// Create / destroy
-// --------------------------------------------------------------------------------------------------------------------
-
-void TComCUMvField::initialize(MVFieldMemPool *p, uint32_t numPartition, int index, int idx)
-{
-    m_mv     = p->mvMemBlock     + (index * 2 + idx) * numPartition;
-    m_mvd    = p->mvdMemBlock    + (index * 2 + idx) * numPartition;
-    m_refIdx = p->refIdxMemBlock + (index * 2 + idx) * numPartition;
-    m_numPartitions = numPartition;
-}
-
-// --------------------------------------------------------------------------------------------------------------------
-// Clear / copy
-// --------------------------------------------------------------------------------------------------------------------
-
-void TComCUMvField::clearMvField()
-{
-    X265_CHECK(sizeof(*m_refIdx) == 1, "size check\n");
-    memset(m_refIdx, NOT_VALID, m_numPartitions * sizeof(*m_refIdx));
-}
-
-void TComCUMvField::copyFrom(TComCUMvField const * cuMvFieldSrc, int numPartSrc, int partAddrDst)
-{
-    int sizeInMv = sizeof(MV) * numPartSrc;
-
-    memcpy(m_mv     + partAddrDst, cuMvFieldSrc->m_mv,     sizeInMv);
-    memcpy(m_mvd    + partAddrDst, cuMvFieldSrc->m_mvd,    sizeInMv);
-    memcpy(m_refIdx + partAddrDst, cuMvFieldSrc->m_refIdx, sizeof(*m_refIdx) * numPartSrc);
-}
-
-void TComCUMvField::copyTo(TComCUMvField* cuMvFieldDst, int partAddrDst) const
-{
-    copyTo(cuMvFieldDst, partAddrDst, 0, m_numPartitions);
-}
-
-void TComCUMvField::copyTo(TComCUMvField* cuMvFieldDst, int partAddrDst, uint32_t offset, uint32_t numPart) const
-{
-    int sizeInMv = sizeof(MV) * numPart;
-    int partOffset = offset + partAddrDst;
-
-    memcpy(cuMvFieldDst->m_mv     + partOffset, m_mv     + offset, sizeInMv);
-    memcpy(cuMvFieldDst->m_mvd    + partOffset, m_mvd    + offset, sizeInMv);
-    memcpy(cuMvFieldDst->m_refIdx + partOffset, m_refIdx + offset, sizeof(*m_refIdx) * numPart);
-}
-
-// --------------------------------------------------------------------------------------------------------------------
-// Set
-// --------------------------------------------------------------------------------------------------------------------
-
-template<typename T>
-void TComCUMvField::setAll(T *p, T const & val, PartSize cuMode, int partAddr, uint32_t depth, int partIdx)
-{
-    int i;
-
-    p += partAddr;
-    int numElements = m_numPartitions >> (2 * depth);
-
-    switch (cuMode)
-    {
-    case SIZE_2Nx2N:
-        for (i = 0; i < numElements; i++)
-        {
-            p[i] = val;
-        }
-
-        break;
-
-    case SIZE_2NxN:
-        numElements >>= 1;
-        for (i = 0; i < numElements; i++)
-        {
-            p[i] = val;
-        }
-
-        break;
-
-    case SIZE_Nx2N:
-        numElements >>= 2;
-        for (i = 0; i < numElements; i++)
-        {
-            p[i] = val;
-            p[i + 2 * numElements] = val;
-        }
-
-        break;
-
-    case SIZE_NxN:
-        numElements >>= 2;
-        for (i = 0; i < numElements; i++)
-        {
-            p[i] = val;
-        }
-
-        break;
-    case SIZE_2NxnU:
-    {
-        int curPartNumQ = numElements >> 2;
-        if (partIdx == 0)
-        {
-            T *pT  = p;
-            T *pT2 = p + curPartNumQ;
-            for (i = 0; i < (curPartNumQ >> 1); i++)
-            {
-                pT[i] = val;
-                pT2[i] = val;
-            }
-        }
-        else
-        {
-            T *pT  = p;
-            for (i = 0; i < (curPartNumQ >> 1); i++)
-            {
-                pT[i] = val;
-            }
-
-            pT = p + curPartNumQ;
-            for (i = 0; i < ((curPartNumQ >> 1) + (curPartNumQ << 1)); i++)
-            {
-                pT[i] = val;
-            }
-        }
-        break;
-    }
-    case SIZE_2NxnD:
-    {
-        int curPartNumQ = numElements >> 2;
-        if (partIdx == 0)
-        {
-            T *pT  = p;
-            for (i = 0; i < ((curPartNumQ >> 1) + (curPartNumQ << 1)); i++)
-            {
-                pT[i] = val;
-            }
-
-            pT = p + (numElements - curPartNumQ);
-            for (i = 0; i < (curPartNumQ >> 1); i++)
-            {
-                pT[i] = val;
-            }
-        }
-        else
-        {
-            T *pT  = p;
-            T *pT2 = p + curPartNumQ;
-            for (i = 0; i < (curPartNumQ >> 1); i++)
-            {
-                pT[i] = val;
-                pT2[i] = val;
-            }
-        }
-        break;
-    }
-    case SIZE_nLx2N:
-    {
-        int curPartNumQ = numElements >> 2;
-        if (partIdx == 0)
-        {
-            T *pT  = p;
-            T *pT2 = p + (curPartNumQ << 1);
-            T *pT3 = p + (curPartNumQ >> 1);
-            T *pT4 = p + (curPartNumQ << 1) + (curPartNumQ >> 1);
-
-            for (i = 0; i < (curPartNumQ >> 2); i++)
-            {
-                pT[i] = val;
-                pT2[i] = val;
-                pT3[i] = val;
-                pT4[i] = val;
-            }
-        }
-        else
-        {
-            T *pT  = p;
-            T *pT2 = p + (curPartNumQ << 1);
-            for (i = 0; i < (curPartNumQ >> 2); i++)
-            {
-                pT[i] = val;
-                pT2[i] = val;
-            }
-
-            pT  = p + (curPartNumQ >> 1);
-            pT2 = p + (curPartNumQ << 1) + (curPartNumQ >> 1);
-            for (i = 0; i < ((curPartNumQ >> 2) + curPartNumQ); i++)
-            {
-                pT[i] = val;
-                pT2[i] = val;
-            }
-        }
-        break;
-    }
-    case SIZE_nRx2N:
-    {
-        int curPartNumQ = numElements >> 2;
-        if (partIdx == 0)
-        {
-            T *pT  = p;
-            T *pT2 = p + (curPartNumQ << 1);
-            for (i = 0; i < ((curPartNumQ >> 2) + curPartNumQ); i++)
-            {
-                pT[i] = val;
-                pT2[i] = val;
-            }
-
-            pT  = p + curPartNumQ + (curPartNumQ >> 1);
-            pT2 = p + numElements - curPartNumQ + (curPartNumQ >> 1);
-            for (i = 0; i < (curPartNumQ >> 2); i++)
-            {
-                pT[i] = val;
-                pT2[i] = val;
-            }
-        }
-        else
-        {
-            T *pT  = p;
-            T *pT2 = p + (curPartNumQ >> 1);
-            T *pT3 = p + (curPartNumQ << 1);
-            T *pT4 = p + (curPartNumQ << 1) + (curPartNumQ >> 1);
-            for (i = 0; i < (curPartNumQ >> 2); i++)
-            {
-                pT[i] = val;
-                pT2[i] = val;
-                pT3[i] = val;
-                pT4[i] = val;
-            }
-        }
-        break;
-    }
-    default:
-        X265_CHECK(0, "unknown partition type\n");
-        break;
-    }


More information about the x265-commits mailing list