[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