[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