[x265-commits] [x265] TComPicYuv: remove unused include

Steve Borho steve at borho.org
Fri Oct 25 01:50:24 CEST 2013


details:   http://hg.videolan.org/x265/rev/a54a9fa53063
branches:  stable
changeset: 4649:a54a9fa53063
user:      Steve Borho <steve at borho.org>
date:      Thu Oct 24 15:13:13 2013 -0500
description:
TComPicYuv: remove unused include
Subject: [x265] TComPicYuv: fix padding of picture buffers

details:   http://hg.videolan.org/x265/rev/0315cf14deda
branches:  stable
changeset: 4650:0315cf14deda
user:      Steve Borho <steve at borho.org>
date:      Thu Oct 24 15:48:48 2013 -0500
description:
TComPicYuv: fix padding of picture buffers

Ensure row starts are at a multiple of 32, this causes strides to be multiple
of 64.  Before this patch, strides we capable of being multiples of 8, causing
alignment exceptions for some videos.
Subject: [x265] weightp: use source reference frames for weight analysis

details:   http://hg.videolan.org/x265/rev/a44b48b74d6f
branches:  stable
changeset: 4651:a44b48b74d6f
user:      Steve Borho <steve at borho.org>
date:      Thu Oct 24 17:06:02 2013 -0500
description:
weightp: use source reference frames for weight analysis

This fixes weightp when used in combination with frame parallelism, where the
reference's reconstructed picture is most likely not yet avaialable.

Some measurements using the sintel 480p clip
no-weightp -F1: 408.47s (3.07 fps), 144.63 kb/s, Global PSNR: 48.956
no-weightp -F3: 361.14s (3.47 fps), 144.01 kb/s, Global PSNR: 48.746

Prior to this change (recon refs used for weightp analysis):
weightp -F1: 402.84s (3.11 fps), 131.09 kb/s, Global PSNR: 49.908
x265 [info]: 278 of 687 (40.47%) P frames weighted
weightp -F3: 355.88s (3.52 fps), 132.09 kb/s, Global PSNR: 49.768
x265 [info]: 242 of 687 (35.23%) P frames weighted

After this change (source refs used for weightp analysis):
weightp -F1: 404.83s (3.10 fps), 131.82 kb/s, Global PSNR: 49.414
x265 [info]: 325 of 687 (47.31%) P frames weighted
weightp -F3: 348.32s (3.60 fps), 131.01 kb/s, Global PSNR: 49.957
x265 [info]: 325 of 687 (47.31%) P frames weighted

Because of the lower bitrate, enabling weightp actually makes this clip encode
faster.  No idea why -F1 has so much less PSNR than -F3; needs investigation.
Subject: [x265] Merge with stable

details:   http://hg.videolan.org/x265/rev/201468d75f33
branches:  
changeset: 4652:201468d75f33
user:      Steve Borho <steve at borho.org>
date:      Thu Oct 24 17:24:42 2013 -0500
description:
Merge with stable
Subject: [x265] reference: more robust initialization, remove m_startPad member variable

details:   http://hg.videolan.org/x265/rev/015839081c84
branches:  
changeset: 4653:015839081c84
user:      Steve Borho <steve at borho.org>
date:      Thu Oct 24 17:29:58 2013 -0500
description:
reference: more robust initialization, remove m_startPad member variable

m_startPad was only used in the init() function so it could be an auto-var

diffstat:

 source/Lib/TLibCommon/ContextModel.cpp        |   117 -
 source/Lib/TLibCommon/ContextModel.h          |   104 -
 source/Lib/TLibCommon/ContextTables.h         |    77 +-
 source/Lib/TLibCommon/TComPic.cpp             |    11 +-
 source/Lib/TLibCommon/TComPic.h               |     1 -
 source/Lib/TLibCommon/TComPicYuv.cpp          |    86 +-
 source/Lib/TLibCommon/TComPicYuv.h            |    17 +-
 source/Lib/TLibCommon/TComPrediction.cpp      |    11 +-
 source/Lib/TLibCommon/TComPrediction.h        |     5 +-
 source/Lib/TLibCommon/TComRom.cpp             |     8 +
 source/Lib/TLibCommon/TComRom.h               |     1 +
 source/Lib/TLibCommon/TComSlice.cpp           |   118 +-
 source/Lib/TLibCommon/TComSlice.h             |    63 +-
 source/Lib/TLibCommon/TComTrQuant.cpp         |   139 +-
 source/Lib/TLibCommon/TComTrQuant.h           |     6 +-
 source/Lib/TLibEncoder/TEncBinCoderCABAC.cpp  |    27 +-
 source/Lib/TLibEncoder/TEncBinCoderCABAC.h    |     2 +-
 source/Lib/TLibEncoder/TEncCu.cpp             |     5 -
 source/Lib/TLibEncoder/TEncEntropy.h          |     1 -
 source/Lib/TLibEncoder/TEncSbac.cpp           |   180 +-
 source/Lib/TLibEncoder/TEncSbac.h             |     3 +-
 source/Lib/TLibEncoder/TEncSearch.cpp         |    15 +-
 source/Lib/TLibEncoder/TEncSearch.h           |     3 +-
 source/Lib/TLibEncoder/WeightPredAnalysis.cpp |    10 +-
 source/common/CMakeLists.txt                  |    23 +-
 source/common/common.cpp                      |    10 +
 source/common/common.h                        |     1 +
 source/common/lowres.cpp                      |    15 +-
 source/common/lowres.h                        |     8 +-
 source/common/mv.h                            |    18 +
 source/common/primitives.cpp                  |     4 +-
 source/common/reference.cpp                   |   137 -
 source/common/reference.h                     |    78 -
 source/common/vec/blockcopy-avx2.cpp          |    94 -
 source/common/vec/intra-sse3.cpp              |  3800 ------------------------
 source/common/vec/intra-ssse3.cpp             |  3946 +++++++++++++++++++++++++
 source/common/vec/pixel-avx2.cpp              |   864 +++--
 source/common/vec/vec-primitives.cpp          |     6 +-
 source/common/x86/asm-primitives.cpp          |    20 +
 source/common/x86/pixel.h                     |     6 +
 source/common/x86/sad-a.asm                   |    19 +
 source/encoder/CMakeLists.txt                 |     1 +
 source/encoder/dpb.cpp                        |     4 -
 source/encoder/frameencoder.cpp               |    12 +-
 source/encoder/frameencoder.h                 |     2 +
 source/encoder/ratecontrol.cpp                |     2 +-
 source/encoder/reference.cpp                  |   122 +
 source/encoder/reference.h                    |    56 +
 source/encoder/slicetype.cpp                  |    52 +-
 source/encoder/slicetype.h                    |     2 +
 50 files changed, 5107 insertions(+), 5205 deletions(-)

diffs (truncated from 11805 to 300 lines):

diff -r 1aaa596bb20b -r 015839081c84 source/Lib/TLibCommon/ContextModel.cpp
--- a/source/Lib/TLibCommon/ContextModel.cpp	Thu Oct 24 14:46:48 2013 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +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     ContextModel.cpp
-    \brief    context model class
-*/
-
-#include "ContextModel.h"
-#include "TComRom.h"
-#include "common.h"
-
-using namespace x265;
-
-//! \ingroup TLibCommon
-//! \{
-
-// ====================================================================================================================
-// Public member functions
-// ====================================================================================================================
-
-/**
- - initialize context model with respect to QP and initialization value
- .
- \param  qp         input QP value
- \param  initValue  8 bit initialization value
- */
-void ContextModel::init(int qp, int initValue)
-{
-    qp = Clip3(0, 51, qp);
-
-    int  slope      = (initValue >> 4) * 5 - 45;
-    int  offset     = ((initValue & 15) << 3) - 16;
-    int  initState  =  X265_MIN(X265_MAX(1, (((slope * qp) >> 4) + offset)), 126);
-    UInt mpState    = (initState >= 64);
-    m_state       = ((mpState ? (initState - 64) : (63 - initState)) << 1) + mpState;
-}
-
-const UChar ContextModel::s_nextStateMPS[128] =
-{
-    2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
-    18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
-    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
-    50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
-    66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
-    82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
-    98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
-    114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 124, 125, 126, 127
-};
-
-const UChar ContextModel::s_nextStateLPS[128] =
-{
-    1, 0, 0, 1, 2, 3, 4, 5, 4, 5, 8, 9, 8, 9, 10, 11,
-    12, 13, 14, 15, 16, 17, 18, 19, 18, 19, 22, 23, 22, 23, 24, 25,
-    26, 27, 26, 27, 30, 31, 30, 31, 32, 33, 32, 33, 36, 37, 36, 37,
-    38, 39, 38, 39, 42, 43, 42, 43, 44, 45, 44, 45, 46, 47, 48, 49,
-    48, 49, 50, 51, 52, 53, 52, 53, 54, 55, 54, 55, 56, 57, 58, 59,
-    58, 59, 60, 61, 60, 61, 60, 61, 62, 63, 64, 65, 64, 65, 66, 67,
-    66, 67, 66, 67, 68, 69, 68, 69, 70, 71, 70, 71, 70, 71, 72, 73,
-    72, 73, 72, 73, 74, 75, 74, 75, 74, 75, 76, 77, 76, 77, 126, 127
-};
-
-UChar ContextModel::m_nextState[128][2];
-
-void ContextModel::buildNextStateTable()
-{
-    for (int i = 0; i < 128; i++)
-    {
-        for (int j = 0; j < 2; j++)
-        {
-            m_nextState[i][j] = ((i & 1) == j) ? s_nextStateMPS[i] : s_nextStateLPS[i];
-        }
-    }
-}
-
-const int ContextModel::s_entropyBits[128] =
-{
-    // Corrected table, most notably for last state
-    0x07b23, 0x085f9, 0x074a0, 0x08cbc, 0x06ee4, 0x09354, 0x067f4, 0x09c1b, 0x060b0, 0x0a62a, 0x05a9c, 0x0af5b, 0x0548d, 0x0b955, 0x04f56, 0x0c2a9,
-    0x04a87, 0x0cbf7, 0x045d6, 0x0d5c3, 0x04144, 0x0e01b, 0x03d88, 0x0e937, 0x039e0, 0x0f2cd, 0x03663, 0x0fc9e, 0x03347, 0x10600, 0x03050, 0x10f95,
-    0x02d4d, 0x11a02, 0x02ad3, 0x12333, 0x0286e, 0x12cad, 0x02604, 0x136df, 0x02425, 0x13f48, 0x021f4, 0x149c4, 0x0203e, 0x1527b, 0x01e4d, 0x15d00,
-    0x01c99, 0x166de, 0x01b18, 0x17017, 0x019a5, 0x17988, 0x01841, 0x18327, 0x016df, 0x18d50, 0x015d9, 0x19547, 0x0147c, 0x1a083, 0x0138e, 0x1a8a3,
-    0x01251, 0x1b418, 0x01166, 0x1bd27, 0x01068, 0x1c77b, 0x00f7f, 0x1d18e, 0x00eda, 0x1d91a, 0x00e19, 0x1e254, 0x00d4f, 0x1ec9a, 0x00c90, 0x1f6e0,
-    0x00c01, 0x1fef8, 0x00b5f, 0x208b1, 0x00ab6, 0x21362, 0x00a15, 0x21e46, 0x00988, 0x2285d, 0x00934, 0x22ea8, 0x008a8, 0x239b2, 0x0081d, 0x24577,
-    0x007c9, 0x24ce6, 0x00763, 0x25663, 0x00710, 0x25e8f, 0x006a0, 0x26a26, 0x00672, 0x26f23, 0x005e8, 0x27ef8, 0x005ba, 0x284b5, 0x0055e, 0x29057,
-    0x0050c, 0x29bab, 0x004c1, 0x2a674, 0x004a7, 0x2aa5e, 0x0046f, 0x2b32f, 0x0041f, 0x2c0ad, 0x003e7, 0x2ca8d, 0x003ba, 0x2d323, 0x0010c, 0x3bfbb
-};
-//! \}
diff -r 1aaa596bb20b -r 015839081c84 source/Lib/TLibCommon/ContextModel.h
--- a/source/Lib/TLibCommon/ContextModel.h	Thu Oct 24 14:46:48 2013 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +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     ContextModel.h
-    \brief    context model class (header)
-*/
-
-#ifndef X265_CONTEXTMODEL_H
-#define X265_CONTEXTMODEL_H
-
-#include "CommonDef.h"
-
-//! \ingroup TLibCommon
-//! \{
-
-namespace x265 {
-// private namespace
-
-// ====================================================================================================================
-// Class definition
-// ====================================================================================================================
-
-/// context model class
-class ContextModel
-{
-public:
-
-    ContextModel()   { m_state = 0; bBinsCoded = 0; }
-
-    ~ContextModel()  {}
-
-    UChar getState() { return m_state >> 1; } ///< get current state
-
-    UChar getMps()   { return m_state  & 1; } ///< get curret MPS
-
-    void init(int qp, int initValue);   ///< initialize state with initial probability
-
-    void updateLPS()
-    {
-        m_state = s_nextStateLPS[m_state];
-    }
-
-    void updateMPS()
-    {
-        m_state = s_nextStateMPS[m_state];
-    }
-
-    int getEntropyBits(UInt val) { return s_entropyBits[m_state ^ val]; }
-
-    void update(int binVal)
-    {
-        m_state = m_nextState[m_state][binVal];
-    }
-
-    static void buildNextStateTable();
-    static int getEntropyBitsTrm(int val) { return s_entropyBits[126 ^ val]; }
-
-    void setBinsCoded(UInt val)   { bBinsCoded = (UChar)val;  }
-
-    UInt getBinsCoded()           { return bBinsCoded;   }
-
-private:
-
-    UChar         m_state;  ///< internal state variable
-    UChar         bBinsCoded;
-    static const UChar s_nextStateMPS[128];
-    static const UChar s_nextStateLPS[128];
-    static const int   s_entropyBits[128];
-    static UChar  m_nextState[128][2];
-};
-}
-//! \}
-
-#endif // ifndef X265_CONTEXTMODEL_H
diff -r 1aaa596bb20b -r 015839081c84 source/Lib/TLibCommon/ContextTables.h
--- a/source/Lib/TLibCommon/ContextTables.h	Thu Oct 24 14:46:48 2013 +0530
+++ b/source/Lib/TLibCommon/ContextTables.h	Thu Oct 24 17:29:58 2013 -0500
@@ -39,6 +39,8 @@
 #ifndef X265_CONTEXTTABLES_H
 #define X265_CONTEXTTABLES_H
 
+#include <stdint.h>
+
 //! \ingroup TLibCommon
 //! \{
 
@@ -125,6 +127,29 @@
 #define MAX_OFF_CTX_MOD                     (OFF_CU_TRANSQUANT_BYPASS_FLAG_CTX + NUM_CU_TRANSQUANT_BYPASS_FLAG_CTX)
 
 // ====================================================================================================================
+// Sbac interface
+// ====================================================================================================================
+typedef struct ContextModel {
+    uint8_t m_state;  ///< internal state variable
+    uint8_t bBinsCoded;
+} ContextModel;
+
+extern const uint8_t g_nextStateMPS[128];
+extern const uint8_t g_nextStateLPS[128];
+extern const int     g_entropyBits[128];
+extern       uint8_t g_nextState[128][2];
+extern void buildNextStateTable();
+extern uint8_t sbacInit(int qp, int initValue);   ///< initialize state with initial probability
+
+#define sbacGetMps(S)               ((S) & 1)
+#define sbacGetState(S)             ((S) >> 1)
+#define sbacNextLPS(S)              (g_nextStateLPS[(S)])
+#define sbacNextMPS(S)              (g_nextStateMPS[(S)])
+#define sbacNext(S, V)              (g_nextState[(S)][(V)])
+#define sbacGetEntropyBits(S, V)    (g_entropyBits[(S) ^ (V)])
+#define sbacGetEntropyBitsTrm(V)    (g_entropyBits[126 ^ (V)])
+
+// ====================================================================================================================
 // Tables
 // ====================================================================================================================
 
@@ -132,7 +157,7 @@ namespace x265 {
 // private namespace
 
 // initial probability for cu_transquant_bypass flag
-static const UChar
+static const uint8_t
     INIT_CU_TRANSQUANT_BYPASS_FLAG[3][NUM_CU_TRANSQUANT_BYPASS_FLAG_CTX] =
 {
     { 154 },
@@ -141,7 +166,7 @@ static const UChar
 };
 
 // initial probability for split flag
-static const UChar
+static const uint8_t
     INIT_SPLIT_FLAG[3][NUM_SPLIT_FLAG_CTX] =
 {
     { 107,  139,  126, },
@@ -149,7 +174,7 @@ static const UChar
     { 139,  141,  157, },
 };
 
-static const UChar
+static const uint8_t
     INIT_SKIP_FLAG[3][NUM_SKIP_FLAG_CTX] =
 {
     { 197,  185,  201, },
@@ -157,7 +182,7 @@ static const UChar
     { CNU,  CNU,  CNU, },


More information about the x265-commits mailing list