[x265-commits] [x265] [x265, slice] fix calculate on slice address bits

chen chenm003 at 163.com
Mon Nov 7 15:16:18 CET 2016


details:   http://hg.videolan.org/x265/rev/af3678bc1dff
branches:  
changeset: 11604:af3678bc1dff
user:      chen <chenm003 at 163.com>
date:      Wed Oct 05 11:58:49 2016 +0530
description:
[x265,slice] fix calculate on slice address bits
>From df3f1ed60baa2b5baab0fe9f98f6f2d0f4a6265d Mon Sep 17 00:00:00 2001
From: Min Chen <min.chen at multicorewareinc.com>
Date: Tue, 4 Oct 2016 13:43:40 -0500
Subject: [PATCH] [slice] fix calculate on slice address bits
Subject: [x265] cli: add option to support limit-TU

details:   http://hg.videolan.org/x265/rev/eb855d09b353
branches:  
changeset: 11605:eb855d09b353
user:      Kavitha Sampath <kavitha at multicorewareinc.com>
date:      Tue Oct 04 13:27:48 2016 +0530
description:
cli: add option to support limit-TU
Subject: [x265] limit TU : use cbf and quantization coefficients to limit recursion

details:   http://hg.videolan.org/x265/rev/ac41f9a73040
branches:  
changeset: 11606:ac41f9a73040
user:      Bhavna Hariharan <bhavna at multicorewareinc.com>
date:      Fri Sep 23 14:22:41 2016 +0530
description:
limit TU : use cbf and quantization coefficients to limit recursion
Subject: [x265] limitTU: use max TU depth of first subTU to limit recursion of others in split

details:   http://hg.videolan.org/x265/rev/14956a01e5f6
branches:  
changeset: 11607:14956a01e5f6
user:      Kavitha Sampath <kavitha at multicorewareinc.com>
date:      Fri Sep 30 17:55:41 2016 +0530
description:
limitTU: use max TU depth of first subTU to limit recursion of others in split
Subject: [x265] limitTU: compare full TU's cost with split cost to limit recursion

details:   http://hg.videolan.org/x265/rev/3851e1e905ef
branches:  
changeset: 11608:3851e1e905ef
user:      Kavitha Sampath <kavitha at multicorewareinc.com>
date:      Fri Sep 30 19:59:24 2016 +0530
description:
limitTU: compare full TU's cost with split cost to limit recursion
Subject: [x265] limitTU: cleanup

details:   http://hg.videolan.org/x265/rev/36a8f03e2ac0
branches:  
changeset: 11609:36a8f03e2ac0
user:      Kavitha Sampath <kavitha at multicorewareinc.com>
date:      Wed Oct 05 16:51:43 2016 +0530
description:
limitTU: cleanup
Subject: [x265] tests: update command lines to cover test for limit-tu

details:   http://hg.videolan.org/x265/rev/c64393b415ad
branches:  
changeset: 11610:c64393b415ad
user:      Kavitha Sampath <kavitha at multicorewareinc.com>
date:      Thu Oct 06 13:55:11 2016 +0530
description:
tests: update command lines to cover test for limit-tu
Subject: [x265] Fix bug that over-writing PPS QP causing inconsisent output and optimise this method.

details:   http://hg.videolan.org/x265/rev/0e9fb7dfba5a
branches:  
changeset: 11611:0e9fb7dfba5a
user:      xuefeng <xuefeng at multicorewareinc.com>
date:      Wed Oct 12 17:01:39 2016 +0800
description:
Fix bug that over-writing PPS QP causing inconsisent output and optimise this method.
Subject: [x265] Store most frequently used list in ref list in PPS

details:   http://hg.videolan.org/x265/rev/c97805dad914
branches:  
changeset: 11612:c97805dad914
user:      weixuan
date:      Thu Oct 13 17:53:48 2016 +0800
description:
Store most frequently used list in ref list in PPS
Subject: [x265] api: Introduce param options to toggle PPS bitstream optimizations

details:   http://hg.videolan.org/x265/rev/304116f4cd41
branches:  
changeset: 11613:304116f4cd41
user:      Pradeep Ramachandran <pradeep at multicorewareinc.com>
date:      Mon Oct 17 14:00:05 2016 +0530
description:
api: Introduce param options to toggle PPS bitstream optimizations
Subject: [x265] nit: whitespace fixes

details:   http://hg.videolan.org/x265/rev/b826b8eabcb1
branches:  
changeset: 11614:b826b8eabcb1
user:      Pradeep Ramachandran <pradeep at multicorewareinc.com>
date:      Mon Oct 17 16:52:23 2016 +0530
description:
nit: whitespace fixes
Subject: [x265] limitTU: fix energy calculation used in limiting TU recursion

details:   http://hg.videolan.org/x265/rev/0e9e52640546
branches:  
changeset: 11615:0e9e52640546
user:      Bhavna Hariharan <bhavna at multicorewareinc.com>
date:      Wed Oct 12 17:58:49 2016 +0530
description:
limitTU: fix energy calculation used in limiting TU recursion

This commit changes the output of limit TU
Subject: [x265] Store commonly-used RPS in SPS  in 2 pass mode.

details:   http://hg.videolan.org/x265/rev/3f9fab5e334c
branches:  
changeset: 11616:3f9fab5e334c
user:      ZhengWang <zheng at multicorewareinc.com>
date:      Mon Oct 24 14:54:41 2016 +0800
description:
Store commonly-used RPS in SPS  in 2 pass mode.
Add new param --[no]-multi-pass-opt-rps to control it, default disabled.
Subject: [x265] slicetype: Add bias used in scenecut detection as param option.

details:   http://hg.videolan.org/x265/rev/9853b43af91b
branches:  
changeset: 11617:9853b43af91b
user:      Gopi Satykrishna Akisetty <gopi.satykrishna at multicorewareinc.com>
date:      Tue Oct 25 10:03:34 2016 +0530
description:
slicetype: Add bias used in scenecut detection as param option.
Subject: [x265] test: Add multi-pass-opt-rps test to 2-pass rate control tests

details:   http://hg.videolan.org/x265/rev/bc911034c2a0
branches:  
changeset: 11618:bc911034c2a0
user:      Pradeep Ramachandran <pradeep at multicorewareinc.com>
date:      Tue Oct 25 11:32:10 2016 +0530
description:
test: Add multi-pass-opt-rps test to 2-pass rate control tests
Subject: [x265] [PPC] Altivec support on IBM Power8 CPU

details:   http://hg.videolan.org/x265/rev/a43054bb5b94
branches:  
changeset: 11619:a43054bb5b94
user:      Roger Moussalli <rmoussal at us.ibm.com>
date:      Tue Oct 25 21:31:48 2016 +0530
description:
[PPC] Altivec support on IBM Power8 CPU
Patch modify and integrate by Min Chen
Subject: [x265] [PATCH] [PPC] support option --no-asm to disable Altivec

details:   http://hg.videolan.org/x265/rev/db11beebf83e
branches:  
changeset: 11620:db11beebf83e
user:      Min Chen <min.chen at multicorewareinc.com>
date:      Mon Oct 24 16:27:35 2016 -0500
description:
[PATCH] [PPC] support option --no-asm to disable Altivec
[x265,PPC] support option --no-asm to disable Altivec
>From d23527c6204921b782ef8bc2f1a69de88163202a Mon Sep 17 00:00:00 2001
Subject: [x265] [PATCH] [PPC] GPL v2 copyright header

details:   http://hg.videolan.org/x265/rev/f5b72bd5f687
branches:  
changeset: 11621:f5b72bd5f687
user:      Min Chen <min.chen at multicorewareinc.com>
date:      Mon Oct 24 16:38:55 2016 -0500
description:
[PATCH] [PPC] GPL v2 copyright header
[x265,PPC] GPL v2 copyright header
>From 1bea85513646e4d9d992bbe326a9cb3275ec313a Mon Sep 17 00:00:00 2001
Subject: [x265] CLI: allow 'mono' & 'mono16' color space for y4m input

details:   http://hg.videolan.org/x265/rev/d059b4c97e87
branches:  
changeset: 11622:d059b4c97e87
user:      Ma0 <mateuszb at poczta.onet.pl>
date:      Sun Oct 16 19:30:59 2016 +0200
description:
CLI: allow 'mono' & 'mono16' color space for y4m input
Subject: [x265] Add scenecut bias to info

details:   http://hg.videolan.org/x265/rev/e8324bc2bdf7
branches:  
changeset: 11623:e8324bc2bdf7
user:      Divya Manivannan <divya at multicorewareinc.com>
date:      Thu Oct 27 10:17:23 2016 +0530
description:
Add scenecut bias to info
Subject: [x265] Add VBV support for No-WPP

details:   http://hg.videolan.org/x265/rev/d1110dea114e
branches:  
changeset: 11624:d1110dea114e
user:      Aruna Matheswaran
date:      Thu Oct 13 15:22:44 2016 +0530
description:
Add VBV support for No-WPP
Subject: [x265] param: Limit range of log2-max-poc-lsb according to HEVC spec.

details:   http://hg.videolan.org/x265/rev/a8dc14986369
branches:  
changeset: 11625:a8dc14986369
user:      Pradeep Ramachandran <pradeep at multicorewareinc.com>
date:      Thu Oct 27 12:38:15 2016 +0530
description:
param: Limit range of log2-max-poc-lsb according to HEVC spec.
Subject: [x265] test: Update 2-pass rc test with fixed GOP structure

details:   http://hg.videolan.org/x265/rev/d216cb9b3b47
branches:  
changeset: 11626:d216cb9b3b47
user:      Pradeep Ramachandran <pradeep at multicorewareinc.com>
date:      Thu Oct 27 12:44:15 2016 +0530
description:
test: Update 2-pass rc test with fixed GOP structure
Subject: [x265] Clip number of slices to be = # rows if larger, instead of exiting

details:   http://hg.videolan.org/x265/rev/1ed3848edf80
branches:  
changeset: 11627:1ed3848edf80
user:      Min Chen <min.chen at multicorewareinc.com>
date:      Mon Oct 31 09:15:51 2016 +0530
description:
Clip number of slices to be = # rows if larger, instead of exiting
Subject: [x265] Add param check when store commonly RSP in SPS in 2-pass mode.

details:   http://hg.videolan.org/x265/rev/b08109b3701e
branches:  
changeset: 11628:b08109b3701e
user:      ZhengWang <zheng at multicorewareinc.com>
date:      Fri Oct 28 10:28:15 2016 +0800
description:
Add param check when store commonly RSP in SPS in 2-pass mode.
Modify param "multi-pass-opt-rps" test command.

# HG changeset patch
# User ZhengWang <zheng at multicorewareinc.com>
# Date 1477621695 -28800
#      五 10月 28 10:28:15 2016 +0800
# Node ID d0969d59975b649eec6c7c018b67ecd59d21ad21
# Parent  d216cb9b3b4777fd768311cb3c7281b0fcf1213d
Add param check when store commonly RSP in SPS in 2-pass mode.
Modify param "multi-pass-opt-rps" test command.
Subject: [x265] doc: Improve doc in help

details:   http://hg.videolan.org/x265/rev/616cf2cbb1a9
branches:  
changeset: 11629:616cf2cbb1a9
user:      Pradeep Ramachandran <pradeep at multicorewareinc.com>
date:      Tue Nov 01 16:03:25 2016 +0530
description:
doc: Improve doc in help
Subject: [x265] doc: Improve rst docs

details:   http://hg.videolan.org/x265/rev/8d836177cac9
branches:  
changeset: 11630:8d836177cac9
user:      Pradeep Ramachandran <pradeep at multicorewareinc.com>
date:      Tue Nov 01 16:58:15 2016 +0530
description:
doc: Improve rst docs
Subject: [x265] test: Fix rate-control test cli for 2-pass test with --multi-pass-opt-rps

details:   http://hg.videolan.org/x265/rev/5f8cb46b9dae
branches:  
changeset: 11631:5f8cb46b9dae
user:      Pradeep Ramachandran <pradeep at multicorewareinc.com>
date:      Tue Nov 01 21:20:15 2016 +0530
description:
test: Fix rate-control test cli for 2-pass test with --multi-pass-opt-rps
Subject: [x265] [slices] fix multi-slices output non-determination bug

details:   http://hg.videolan.org/x265/rev/7a8a4998eca6
branches:  
changeset: 11632:7a8a4998eca6
user:      Min Chen <min.chen at multicorewareinc.com>
date:      Mon Oct 31 12:31:24 2016 -0500
description:
[slices] fix multi-slices output non-determination bug
Subject: [x265] [slices] restrict mv never beyond boundary in both slices and non-slices mode

details:   http://hg.videolan.org/x265/rev/1dcca786e698
branches:  
changeset: 11633:1dcca786e698
user:      Min Chen <min.chen at multicorewareinc.com>
date:      Tue Nov 01 14:58:56 2016 -0500
description:
[slices] restrict mv never beyond boundary in both slices and non-slices mode
Subject: [x265] doc: Improve doc of vui-timing-info and vui-hrd-info

details:   http://hg.videolan.org/x265/rev/1a5905a6379a
branches:  
changeset: 11634:1a5905a6379a
user:      Pradeep Ramachandran <pradeep at multicorewareinc.com>
date:      Wed Nov 02 11:04:04 2016 +0530
description:
doc: Improve doc of vui-timing-info and vui-hrd-info
Subject: [x265] api/cli: rename the scenecut bias option

details:   http://hg.videolan.org/x265/rev/8b9d1cc0d495
branches:  
changeset: 11635:8b9d1cc0d495
user:      Gopi Satykrishna Akisetty <gopi.satykrishna at multicorewareinc.com>
date:      Wed Nov 02 11:40:11 2016 +0530
description:
api/cli: rename the scenecut bias option
Subject: [x265] regression: remove pme from smoke tests

details:   http://hg.videolan.org/x265/rev/583fc74fc0a2
branches:  
changeset: 11636:583fc74fc0a2
user:      Mahesh Pittala <mahesh at multicorewareinc.com>
date:      Thu Nov 03 13:20:51 2016 +0530
description:
regression: remove pme from smoke tests

diffstat:

 doc/reST/cli.rst                        |     39 +-
 source/CMakeLists.txt                   |     36 +-
 source/common/CMakeLists.txt            |     15 +-
 source/common/bitstream.h               |      1 +
 source/common/common.h                  |      3 +-
 source/common/cpu.cpp                   |     17 +-
 source/common/framedata.cpp             |      3 +
 source/common/framedata.h               |     11 +-
 source/common/param.cpp                 |     48 +-
 source/common/ppc/dct_altivec.cpp       |    819 +
 source/common/ppc/intrapred_altivec.cpp |  30809 ++++++++++++++++++++++++++++++
 source/common/ppc/ipfilter_altivec.cpp  |   1522 +
 source/common/ppc/pixel_altivec.cpp     |   4318 ++++
 source/common/ppc/ppccommon.h           |     91 +
 source/common/primitives.cpp            |      9 +
 source/common/primitives.h              |      6 +
 source/common/slice.h                   |     14 +-
 source/common/version.cpp               |      2 +-
 source/encoder/analysis.cpp             |      8 +-
 source/encoder/api.cpp                  |      5 +
 source/encoder/encoder.cpp              |    327 +-
 source/encoder/encoder.h                |     34 +-
 source/encoder/entropy.cpp              |     32 +-
 source/encoder/entropy.h                |      2 +-
 source/encoder/frameencoder.cpp         |    128 +-
 source/encoder/frameencoder.h           |      1 +
 source/encoder/motion.cpp               |    123 +-
 source/encoder/nal.h                    |      1 +
 source/encoder/ratecontrol.cpp          |    163 +-
 source/encoder/ratecontrol.h            |      6 +-
 source/encoder/sao.cpp                  |      7 +
 source/encoder/search.cpp               |    190 +-
 source/encoder/search.h                 |     14 +-
 source/encoder/slicetype.cpp            |      2 +-
 source/input/y4m.cpp                    |     24 +-
 source/test/rate-control-tests.txt      |      6 +-
 source/test/regression-tests.txt        |     17 +-
 source/test/smoke-tests.txt             |      4 +-
 source/x265.h                           |     23 +
 source/x265cli.h                        |     17 +-
 40 files changed, 38684 insertions(+), 213 deletions(-)

diffs (truncated from 40139 to 300 lines):

diff -r 91ed7cb38e66 -r 583fc74fc0a2 doc/reST/cli.rst
--- a/doc/reST/cli.rst	Mon Oct 03 12:33:19 2016 +0530
+++ b/doc/reST/cli.rst	Thu Nov 03 13:20:51 2016 +0530
@@ -869,6 +869,16 @@ as the residual quad-tree (RQT).
 	partitions, in which case a TU split is implied and thus the
 	residual quad-tree begins one layer below the CU quad-tree.
 
+.. option:: --limit-tu <0|1|2>
+
+	Enables early exit from TU depth recursion, for inter coded blocks.
+	Level 1 - decides to recurse to next higher depth based on cost 
+	comparison of full size TU and split TU.
+	Level 2 - based on first split subTU's depth, limits recursion of
+	other split subTUs.
+
+	Default: 0
+
 .. option:: --nr-intra <integer>, --nr-inter <integer>
 
 	Noise reduction - an adaptive deadzone applied after DCT
@@ -1153,6 +1163,13 @@ Slice decision options
 	:option:`--scenecut` 0 or :option:`--no-scenecut` disables adaptive
 	I frame placement. Default 40
 
+.. option:: --scenecut-bias <0..100.0>
+
+	This value represents the percentage difference between the inter cost and
+	intra cost of a frame used in scenecut detection. For example, a value of 5 indicates,
+	if the inter cost of a frame is greater than or equal to 95 percent of the intra cost of the frame,
+	then detect this frame as scenecut. Values between 5 and 15 are recommended. Default 5.	
+	
 .. option:: --intra-refresh
 
 	Enables Periodic Intra Refresh(PIR) instead of keyframe insertion.
@@ -1833,15 +1850,29 @@ Bitstream options
 
   Maximum of the picture order count. Default 8
 
-.. option:: --[no]-vui-timing-info
+.. option:: --[no-]vui-timing-info
 
-	Discard optional VUI timing info from bitstream. Default enabled.
+	Emit VUI timing info in bitstream. Default enabled.
 
-.. option:: --[no]-vui-hrd-info
+.. option:: --[no-]vui-hrd-info
 
-	Discard optional VUI HRD info from bitstream. Default enabled when
+	Emit VUI HRD info in  bitstream. Default enabled when
 	:option:`--hrd` is enabled.
 
+.. option:: --[no-]opt-qp-pps
+
+	Optimize QP in PPS (instead of default value of 26) based on the QP values
+	observed in last GOP. Default enabled.
+
+.. option:: --[no-]opt-ref-list-length-pps
+
+	Optimize L0 and L1 ref list length in PPS (instead of default value of 0)
+	based on the lengths observed in the last GOP. Default enabled.
+
+.. option:: --[no-]multi-pass-opt-rps
+
+	Enable storing commonly RPS in SPS in multi pass mode. Default disabled.
+
 
 Debugging options
 =================
diff -r 91ed7cb38e66 -r 583fc74fc0a2 source/CMakeLists.txt
--- a/source/CMakeLists.txt	Mon Oct 03 12:33:19 2016 +0530
+++ b/source/CMakeLists.txt	Thu Nov 03 13:20:51 2016 +0530
@@ -30,7 +30,7 @@ option(STATIC_LINK_CRT "Statically link 
 mark_as_advanced(FPROFILE_USE FPROFILE_GENERATE NATIVE_BUILD)
 
 # X265_BUILD must be incremented each time the public API is changed
-set(X265_BUILD 96)
+set(X265_BUILD 101)
 configure_file("${PROJECT_SOURCE_DIR}/x265.def.in"
                "${PROJECT_BINARY_DIR}/x265.def")
 configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in"
@@ -60,6 +60,11 @@ elseif(POWERMATCH GREATER "-1")
     message(STATUS "Detected POWER target processor")
     set(POWER 1)
     add_definitions(-DX265_ARCH_POWER=1)
+    if("${CMAKE_SIZEOF_VOID_P}" MATCHES 8)
+        set(PPC64 1)
+        add_definitions(-DPPC64=1)
+        message(STATUS "Detected POWER PPC64 target processor")
+    endif()
 elseif(ARMMATCH GREATER "-1")
     if(CROSS_COMPILE_ARM)
         message(STATUS "Cross compiling for ARM arch")
@@ -167,6 +172,19 @@ elseif(CLANG)
 elseif(CMAKE_COMPILER_IS_GNUCXX)
     set(GCC 1)
 endif()
+
+if(CC STREQUAL "xlc")
+    message(STATUS "Use XLC compiler")
+    set(XLC 1)
+    set(GCC 0)
+    #set(CMAKE_C_COMPILER "/usr/bin/xlc")
+    #set(CMAKE_CXX_COMPILER "/usr/bin/xlc++")
+    add_definitions(-D__XLC__=1)
+    add_definitions(-O3 -qstrict -qhot -qaltivec)
+    add_definitions(-qinline=level=10 -qpath=IL:/data/video_files/latest.tpo/)
+endif()
+
+
 if(GCC)
     add_definitions(-Wall -Wextra -Wshadow)
     add_definitions(-D__STDC_LIMIT_MACROS=1)
@@ -396,6 +414,22 @@ if(WIN32)
     endif(WINXP_SUPPORT)
 endif()
 
+if(POWER)
+    # IBM Power8
+    option(ENABLE_ALTIVEC "Enable ALTIVEC profiling instrumentation" ON)
+    if(ENABLE_ALTIVEC)
+        add_definitions(-DHAVE_ALTIVEC=1 -maltivec -mabi=altivec)
+        add_definitions(-flax-vector-conversions -fpermissive)
+    else()
+        add_definitions(-DHAVE_ALTIVEC=0)
+    endif()
+
+    option(CPU_POWER8 "Enable CPU POWER8 profiling instrumentation" ON)
+    if(CPU_POWER8)
+        add_definitions(-mcpu=power8 -DX265_ARCH_POWER8=1)
+    endif()
+endif()
+
 include(version) # determine X265_VERSION and X265_LATEST_TAG
 include_directories(. common encoder "${PROJECT_BINARY_DIR}")
 
diff -r 91ed7cb38e66 -r 583fc74fc0a2 source/common/CMakeLists.txt
--- a/source/common/CMakeLists.txt	Mon Oct 03 12:33:19 2016 +0530
+++ b/source/common/CMakeLists.txt	Thu Nov 03 13:20:51 2016 +0530
@@ -99,6 +99,19 @@ if(ENABLE_ASSEMBLY AND (ARM OR CROSS_COM
     source_group(Assembly FILES ${ASM_PRIMITIVES})
 endif(ENABLE_ASSEMBLY AND (ARM OR CROSS_COMPILE_ARM))
 
+if(POWER)
+    set_source_files_properties(version.cpp PROPERTIES COMPILE_FLAGS -DX265_VERSION=${X265_VERSION})
+    if(ENABLE_ALTIVEC)
+        set(ALTIVEC_SRCS pixel_altivec.cpp dct_altivec.cpp ipfilter_altivec.cpp intrapred_altivec.cpp)
+        foreach(SRC ${ALTIVEC_SRCS})
+            set(ALTIVEC_PRIMITIVES ${ALTIVEC_PRIMITIVES} ppc/${SRC})
+        endforeach()
+        source_group(Intrinsics_altivec FILES ${ALTIVEC_PRIMITIVES})
+        set_source_files_properties(${ALTIVEC_PRIMITIVES} PROPERTIES COMPILE_FLAGS -Wno-unused)
+    endif()
+endif()
+
+
 # set_target_properties can't do list expansion
 string(REPLACE ";" " " VERSION_FLAGS "${VFLAGS}")
 set_source_files_properties(version.cpp PROPERTIES COMPILE_FLAGS ${VERSION_FLAGS})
@@ -116,7 +129,7 @@ if(WIN32)
 endif(WIN32)
 
 add_library(common OBJECT
-    ${ASM_PRIMITIVES} ${VEC_PRIMITIVES} ${WINXP}
+    ${ASM_PRIMITIVES} ${VEC_PRIMITIVES} ${ALTIVEC_PRIMITIVES} ${WINXP}
     primitives.cpp primitives.h
     pixel.cpp dct.cpp ipfilter.cpp intrapred.cpp loopfilter.cpp
     constants.cpp constants.h
diff -r 91ed7cb38e66 -r 583fc74fc0a2 source/common/bitstream.h
--- a/source/common/bitstream.h	Mon Oct 03 12:33:19 2016 +0530
+++ b/source/common/bitstream.h	Thu Nov 03 13:20:51 2016 +0530
@@ -71,6 +71,7 @@ public:
     uint32_t getNumberOfWrittenBytes() const { return m_byteOccupancy; }
     uint32_t getNumberOfWrittenBits()  const { return m_byteOccupancy * 8 + m_partialByteBits; }
     const uint8_t* getFIFO() const           { return m_fifo; }
+    void     copyBits(Bitstream* stream)     { m_partialByteBits = stream->m_partialByteBits; m_byteOccupancy = stream->m_byteOccupancy; m_partialByte = stream->m_partialByte; }
 
     void     write(uint32_t val, uint32_t numBits);
     void     writeByte(uint32_t val);
diff -r 91ed7cb38e66 -r 583fc74fc0a2 source/common/common.h
--- a/source/common/common.h	Mon Oct 03 12:33:19 2016 +0530
+++ b/source/common/common.h	Thu Nov 03 13:20:51 2016 +0530
@@ -176,7 +176,7 @@ typedef int16_t  coeff_t;      // transf
 
 #define X265_MIN(a, b) ((a) < (b) ? (a) : (b))
 #define X265_MAX(a, b) ((a) > (b) ? (a) : (b))
-#define COPY1_IF_LT(x, y) if ((y) < (x)) (x) = (y);
+#define COPY1_IF_LT(x, y) {if ((y) < (x)) (x) = (y);}
 #define COPY2_IF_LT(x, y, a, b) \
     if ((y) < (x)) \
     { \
@@ -312,6 +312,7 @@ typedef int16_t  coeff_t;      // transf
 
 #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 MAX_NUM_SHORT_TERM_RPS      64 // max. number of short term reference picture set in SPS
 
 #define REF_NOT_VALID               -1
 
diff -r 91ed7cb38e66 -r 583fc74fc0a2 source/common/cpu.cpp
--- a/source/common/cpu.cpp	Mon Oct 03 12:33:19 2016 +0530
+++ b/source/common/cpu.cpp	Thu Nov 03 13:20:51 2016 +0530
@@ -99,6 +99,10 @@ const cpu_name_t cpu_names[] =
     { "ARMv6",           X265_CPU_ARMV6 },
     { "NEON",            X265_CPU_NEON },
     { "FastNeonMRC",     X265_CPU_FAST_NEON_MRC },
+
+#elif X265_ARCH_POWER8
+    { "Altivec",         X265_CPU_ALTIVEC },
+
 #endif // if X265_ARCH_X86
     { "", 0 },
 };
@@ -363,7 +367,18 @@ uint32_t cpu_detect(void)
     return flags;
 }
 
-#else // if X265_ARCH_X86
+#elif X265_ARCH_POWER8
+
+uint32_t cpu_detect(void)
+{
+#if HAVE_ALTIVEC
+    return X265_CPU_ALTIVEC;
+#else
+    return 0;
+#endif
+}
+
+#else // if X265_ARCH_POWER8
 
 uint32_t cpu_detect(void)
 {
diff -r 91ed7cb38e66 -r 583fc74fc0a2 source/common/framedata.cpp
--- a/source/common/framedata.cpp	Mon Oct 03 12:33:19 2016 +0530
+++ b/source/common/framedata.cpp	Thu Nov 03 13:20:51 2016 +0530
@@ -37,6 +37,9 @@ bool FrameData::create(const x265_param&
     m_slice  = new Slice;
     m_picCTU = new CUData[sps.numCUsInFrame];
     m_picCsp = csp;
+    m_spsrpsIdx = -1;
+    if (param.rc.bStatWrite)
+        m_spsrps = const_cast<RPS*>(sps.spsrps);
 
     m_cuMemPool.create(0, param.internalCsp, sps.numCUsInFrame);
     for (uint32_t ctuAddr = 0; ctuAddr < sps.numCUsInFrame; ctuAddr++)
diff -r 91ed7cb38e66 -r 583fc74fc0a2 source/common/framedata.h
--- a/source/common/framedata.h	Mon Oct 03 12:33:19 2016 +0530
+++ b/source/common/framedata.h	Thu Nov 03 13:20:51 2016 +0530
@@ -106,6 +106,9 @@ public:
     CUDataMemPool  m_cuMemPool;
     CUData*        m_picCTU;
 
+    RPS*           m_spsrps;
+    int            m_spsrpsIdx;
+
     /* Rate control data used during encode and by references */
     struct RCStatCU
     {
@@ -123,10 +126,10 @@ public:
         uint32_t encodedBits;   /* sum of 'totalBits' of encoded CTUs */
         uint32_t satdForVbv;    /* sum of lowres (estimated) costs for entire row */
         uint32_t intraSatdForVbv; /* sum of lowres (estimated) intra costs for entire row */
-        uint32_t diagSatd;
-        uint32_t diagIntraSatd;
-        double   diagQp;
-        double   diagQpScale;
+        uint32_t rowSatd;
+        uint32_t rowIntraSatd;
+        double   rowQp;
+        double   rowQpScale;
         double   sumQpRc;
         double   sumQpAq;
     };
diff -r 91ed7cb38e66 -r 583fc74fc0a2 source/common/param.cpp
--- a/source/common/param.cpp	Mon Oct 03 12:33:19 2016 +0530
+++ b/source/common/param.cpp	Thu Nov 03 13:20:51 2016 +0530
@@ -149,6 +149,7 @@ void x265_param_default(x265_param* para
     param->bBPyramid = 1;
     param->scenecutThreshold = 40; /* Magic number pulled in from x264 */
     param->lookaheadSlices = 8;
+    param->scenecutBias = 5.0;
 
     /* Intra Coding Tools */
     param->bEnableConstrainedIntra = 0;
@@ -176,6 +177,7 @@ void x265_param_default(x265_param* para
     param->maxNumReferences = 3;
     param->bEnableTemporalMvp = 1;
     param->bSourceReferenceEstimation = 0;
+    param->limitTU = 0;
 
     /* Loop Filter */
     param->bEnableLoopFilter = 1;
@@ -197,6 +199,7 @@ void x265_param_default(x265_param* para
     param->bCULossless = 0;
     param->bEnableTemporalSubLayers = 0;
     param->bEnableRdRefine = 0;
+    param->bMultiPassOptRPS = 0;
 
     /* Rate control options */
     param->rc.vbvMaxBitrate = 0;


More information about the x265-commits mailing list