[x265-commits] [x265] cmake: generate and install pkgconfig file

Steve Borho steve at borho.org
Thu Oct 24 21:47:04 CEST 2013


details:   http://hg.videolan.org/x265/rev/b2fcb1bf7b75
branches:  stable
changeset: 4627:b2fcb1bf7b75
user:      Steve Borho <steve at borho.org>
date:      Tue Oct 22 17:19:58 2013 -0500
description:
cmake: generate and install pkgconfig file

This installs the x265.pc into /usr/local/lib/pkgconfig/ with these contents:

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: x265
Description: H.265/HEVC video encoder
Version: 0.4.1
Libs: -L${libdir} -lx265
Libs.private:  -lstdc++ -lm -lc -lpthread -lrt
Cflags: -I${includedir}

The pkg-config file is only generated and installed if CMake finds pkg-config

Q1: it seems unwise to hard-code "/lib" in a few places, what if lib64 is
used or something else?
Q2: Should x265.pc have a version number like x265-0.4.1.pc?
Subject: [x265] CSV log: Enable frame-by-frame CSV logging

details:   http://hg.videolan.org/x265/rev/0c8dbda94696
branches:  stable
changeset: 4628:0c8dbda94696
user:      Kavitha Sampath <kavitha at multicorewareinc.com>
date:      Wed Oct 23 16:03:17 2013 +0530
description:
CSV log: Enable frame-by-frame CSV logging
Subject: [x265] api: large reorg of logging and statistics

details:   http://hg.videolan.org/x265/rev/3e53b004a8f8
branches:  stable
changeset: 4629:3e53b004a8f8
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 23 16:11:59 2013 -0500
description:
api: large reorg of logging and statistics

* move all CSV logging into the encoder so API users can take advantage of it
* remove hacky global PSNR return value from x265_encoder_close
* add time and bitrate values to x265_stats_t
* remove some dead HM code
* use x265_log in the CLI
Subject: [x265] api: white-space cleanups in x265.h

details:   http://hg.videolan.org/x265/rev/7beeab25a8fb
branches:  stable
changeset: 4630:7beeab25a8fb
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 23 16:12:17 2013 -0500
description:
api: white-space cleanups in x265.h
Subject: [x265] api: drop _t suffix from public data types, for POSIX compatibility

details:   http://hg.videolan.org/x265/rev/b07c29e930fe
branches:  stable
changeset: 4631:b07c29e930fe
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 23 17:03:55 2013 -0500
description:
api: drop _t suffix from public data types, for POSIX compatibility

x265_t was changed to x265_encoder, since x265 is too short and would collide
with our namespace.
Subject: [x265] Merge with stable

details:   http://hg.videolan.org/x265/rev/6ea79d6f7e17
branches:  
changeset: 4632:6ea79d6f7e17
user:      Steve Borho <steve at borho.org>
date:      Thu Oct 24 00:31:45 2013 -0500
description:
Merge with stable
Subject: [x265] reference: cache MotionReference instances in each FrameEncoder

details:   http://hg.videolan.org/x265/rev/95384f8f7c22
branches:  
changeset: 4633:95384f8f7c22
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 23 23:37:31 2013 -0500
description:
reference: cache MotionReference instances in each FrameEncoder

This prevents these structures from being allocated over and over for each frame
The source files were moved into the encoder folder where they've belonged but
couldn't live in the past because TComPicYuv needed to know their contents.
Subject: [x265] TComSlice: remove unused TComRefPicListModification

details:   http://hg.videolan.org/x265/rev/855151a30078
branches:  
changeset: 4634:855151a30078
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 23 23:52:34 2013 -0500
description:
TComSlice: remove unused TComRefPicListModification
Subject: [x265] TComSlice: remove unused m_bEqualRef and helper functions

details:   http://hg.videolan.org/x265/rev/d31740e6905d
branches:  
changeset: 4635:d31740e6905d
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 23 23:59:39 2013 -0500
description:
TComSlice: remove unused m_bEqualRef and helper functions
Subject: [x265] TComSlice: remove unused copySliceInfo

details:   http://hg.videolan.org/x265/rev/e8f05b1c543a
branches:  
changeset: 4636:e8f05b1c543a
user:      Steve Borho <steve at borho.org>
date:      Wed Oct 23 23:59:51 2013 -0500
description:
TComSlice: remove unused copySliceInfo
Subject: [x265] asm: instantiate some sad_x3 and sad_x4 functions for HEVC partitions

details:   http://hg.videolan.org/x265/rev/3b8fa23f68ec
branches:  
changeset: 4637:3b8fa23f68ec
user:      Steve Borho <steve at borho.org>
date:      Thu Oct 24 02:26:01 2013 -0500
description:
asm: instantiate some sad_x3 and sad_x4 functions for HEVC partitions
Subject: [x265] fix commit typo

details:   http://hg.videolan.org/x265/rev/eb694f6150b1
branches:  
changeset: 4638:eb694f6150b1
user:      Min Chen <chenm003 at 163.com>
date:      Thu Oct 24 14:26:25 2013 +0800
description:
fix commit typo
Subject: [x265] Displaying the number of weighted P frames used in console log

details:   http://hg.videolan.org/x265/rev/e8992549a970
branches:  stable
changeset: 4639:e8992549a970
user:      Shazeb Nawaz Khan <shazeb at multicorewareinc.com>
date:      Thu Oct 24 12:28:31 2013 +0530
description:
Displaying the number of weighted P frames used in console log
Subject: [x265] encoder: fix bitrate statistic (accBits is a bit count, not byte count)

details:   http://hg.videolan.org/x265/rev/98bf7e4154f5
branches:  stable
changeset: 4640:98bf7e4154f5
user:      Steve Borho <steve at borho.org>
date:      Thu Oct 24 13:44:49 2013 -0500
description:
encoder: fix bitrate statistic (accBits is a bit count, not byte count)
Subject: [x265] output: use 64bit file offsets to prevent overflow with 4k video

details:   http://hg.videolan.org/x265/rev/f94f18950283
branches:  stable
changeset: 4641:f94f18950283
user:      Gopu Govindaswamy <gopu at multicorewareinc.com>
date:      Thu Oct 24 14:30:25 2013 +0530
description:
output: use 64bit file offsets to prevent overflow with 4k video
Subject: [x265] input: If Any error in reading frame from file, deactivate the thread and exit encoder gracefully

details:   http://hg.videolan.org/x265/rev/b69e4433cc97
branches:  stable
changeset: 4642:b69e4433cc97
user:      Gopu Govindaswamy <gopu at multicorewareinc.com>
date:      Thu Oct 24 17:34:46 2013 +0530
description:
input: If Any error in reading frame from file, deactivate the thread and exit encoder gracefully
Subject: [x265] lookahead: fix reference initialization for intra prediction

details:   http://hg.videolan.org/x265/rev/1aaa596bb20b
branches:  stable
changeset: 4643:1aaa596bb20b
user:      Deepthi Devaki <deepthidevaki at multicorewareinc.com>
date:      Thu Oct 24 14:46:48 2013 +0530
description:
lookahead: fix reference initialization for intra prediction

buffer size of pAbove/pLeft is height+1+width = 2*cusize+1
Subject: [x265] improvement TComTrQuant::getSigCtxInc by lookup table for 'cnt'

details:   http://hg.videolan.org/x265/rev/25d372f13fb6
branches:  
changeset: 4644:25d372f13fb6
user:      Min Chen <chenm003 at 163.com>
date:      Thu Oct 24 17:07:33 2013 +0800
description:
improvement TComTrQuant::getSigCtxInc by lookup table for 'cnt'
Subject: [x265] improvement TComTrQuant::calcPatternSigCtx

details:   http://hg.videolan.org/x265/rev/84bf706ace32
branches:  
changeset: 4645:84bf706ace32
user:      Min Chen <chenm003 at 163.com>
date:      Thu Oct 24 19:33:15 2013 +0800
description:
improvement TComTrQuant::calcPatternSigCtx

1. replace width/height by size, since there are only NxN
2. use mask operatior to avoid condition and branch
Subject: [x265] improvement getSigCoeffGroupCtxInc by merge pointer calculate

details:   http://hg.videolan.org/x265/rev/c986a9fc7f8f
branches:  
changeset: 4646:c986a9fc7f8f
user:      Min Chen <chenm003 at 163.com>
date:      Thu Oct 24 19:55:58 2013 +0800
description:
improvement getSigCoeffGroupCtxInc by merge pointer calculate
Subject: [x265] improvement xGetRateLast by remove reduce double operator

details:   http://hg.videolan.org/x265/rev/4bb4dbe427ec
branches:  
changeset: 4647:4bb4dbe427ec
user:      Min Chen <chenm003 at 163.com>
date:      Thu Oct 24 20:20:36 2013 +0800
description:
improvement xGetRateLast by remove reduce double operator
Subject: [x265] Merge with stable

details:   http://hg.videolan.org/x265/rev/a349dec61168
branches:  
changeset: 4648:a349dec61168
user:      Steve Borho <steve at borho.org>
date:      Thu Oct 24 14:08:29 2013 -0500
description:
Merge with stable

diffstat:

 source/CMakeLists.txt                        |    13 +-
 source/Lib/TLibCommon/CommonDef.h            |     3 -
 source/Lib/TLibCommon/ContextModel.cpp       |   117 -
 source/Lib/TLibCommon/ContextModel.h         |   104 -
 source/Lib/TLibCommon/ContextTables.h        |    77 +-
 source/Lib/TLibCommon/TComPic.cpp            |    13 +-
 source/Lib/TLibCommon/TComPic.h              |     3 +-
 source/Lib/TLibCommon/TComPicYuv.cpp         |    49 +-
 source/Lib/TLibCommon/TComPicYuv.h           |    19 +-
 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          |   119 +-
 source/Lib/TLibCommon/TComSlice.h            |    60 +-
 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/TEncCfg.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/common/CMakeLists.txt                 |    23 +-
 source/common/common.cpp                     |    56 +-
 source/common/common.h                       |    12 +-
 source/common/lowres.cpp                     |    15 +-
 source/common/lowres.h                       |     8 +-
 source/common/mv.h                           |    18 +
 source/common/primitives.cpp                 |     6 +-
 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/dllmain.cpp                           |     6 +-
 source/encoder/CMakeLists.txt                |     1 +
 source/encoder/dpb.cpp                       |     4 -
 source/encoder/encoder.cpp                   |   184 +-
 source/encoder/encoder.h                     |    26 +-
 source/encoder/frameencoder.cpp              |    25 +-
 source/encoder/frameencoder.h                |     3 +
 source/encoder/ratecontrol.cpp               |     2 +-
 source/encoder/reference.cpp                 |   126 +
 source/encoder/reference.h                   |    58 +
 source/encoder/slicetype.cpp                 |    58 +-
 source/encoder/slicetype.h                   |     2 +
 source/input/input.h                         |     2 +-
 source/input/y4m.cpp                         |    11 +-
 source/input/y4m.h                           |     2 +-
 source/input/yuv.cpp                         |     4 +-
 source/input/yuv.h                           |     2 +-
 source/output/output.h                       |     2 +-
 source/output/y4m.cpp                        |     7 +-
 source/output/y4m.h                          |     2 +-
 source/output/yuv.cpp                        |     7 +-
 source/output/yuv.h                          |     2 +-
 source/x265.cpp                              |   230 +-
 source/x265.def.in                           |     1 +
 source/x265.h                                |    87 +-
 source/x265.pc.in                            |    11 +
 69 files changed, 5452 insertions(+), 5506 deletions(-)

diffs (truncated from 13382 to 300 lines):

diff -r 6a7383b8cbf0 -r a349dec61168 source/CMakeLists.txt
--- a/source/CMakeLists.txt	Wed Oct 23 16:03:53 2013 +0530
+++ b/source/CMakeLists.txt	Thu Oct 24 14:08:29 2013 -0500
@@ -10,7 +10,7 @@ project (x265)
 cmake_minimum_required (VERSION 2.8.8) # OBJECT libraries require 2.8.8
 
 # X265_BUILD must be incremented each time the public API is changed
-set(X265_BUILD 1)
+set(X265_BUILD 2)
 configure_file("${PROJECT_SOURCE_DIR}/x265.def.in"
                "${PROJECT_BINARY_DIR}/x265.def")
 configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in"
@@ -108,7 +108,7 @@ if(YASM_FOUND)
 endif(YASM_FOUND)
 
 if(UNIX)
-    SET(PLATFORM_LIBS pthread m)
+    SET(PLATFORM_LIBS pthread)
     if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
         SET(PLATFORM_LIBS ${PLATFORM_LIBS} rt)
     endif(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
@@ -182,6 +182,15 @@ if(X265_LATEST_TAG)
             RUNTIME DESTINATION bin
             LIBRARY DESTINATION lib
             ARCHIVE DESTINATION lib)
+
+    # convert lists of link libraries into -lstdc++ -lm etc..
+    foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS})
+        set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}")
+    endforeach()
+    # Produce a pkg-config file for linking against the shared lib
+    configure_file("x265.pc.in" "x265.pc" @ONLY)
+    install(FILES       "${CMAKE_CURRENT_BINARY_DIR}/x265.pc"
+            DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
 endif()
 install(TARGETS x265-static
         RUNTIME DESTINATION bin
diff -r 6a7383b8cbf0 -r a349dec61168 source/Lib/TLibCommon/CommonDef.h
--- a/source/Lib/TLibCommon/CommonDef.h	Wed Oct 23 16:03:53 2013 +0530
+++ b/source/Lib/TLibCommon/CommonDef.h	Thu Oct 24 14:08:29 2013 -0500
@@ -126,9 +126,6 @@
 
 #define CABAC_INIT_PRESENT_FLAG     1
 
-#define _SUMMARY_OUT_               0           ///< print-out PSNR results of all slices to summary.txt
-#define _SUMMARY_PIC_               0           ///< print-out PSNR results for each slice type to summary.txt
-
 #define MAX_GOP                     64          ///< max. value of hierarchical GOP size
 
 #define MAX_NUM_REF_PICS            16          ///< max. number of pictures used for reference
diff -r 6a7383b8cbf0 -r a349dec61168 source/Lib/TLibCommon/ContextModel.cpp
--- a/source/Lib/TLibCommon/ContextModel.cpp	Wed Oct 23 16:03:53 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 6a7383b8cbf0 -r a349dec61168 source/Lib/TLibCommon/ContextModel.h
--- a/source/Lib/TLibCommon/ContextModel.h	Wed Oct 23 16:03:53 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 6a7383b8cbf0 -r a349dec61168 source/Lib/TLibCommon/ContextTables.h
--- a/source/Lib/TLibCommon/ContextTables.h	Wed Oct 23 16:03:53 2013 +0530
+++ b/source/Lib/TLibCommon/ContextTables.h	Thu Oct 24 14:08:29 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;


More information about the x265-commits mailing list