[x265-commits] [x265] cli: allow --no-psy-rd or --no-psy-rdoq

Steve Borho steve at borho.org
Thu Feb 5 20:41:30 CET 2015


details:   http://hg.videolan.org/x265/rev/d42fdfc72345
branches:  stable
changeset: 9296:d42fdfc72345
user:      Steve Borho <steve at borho.org>
date:      Wed Feb 04 15:00:31 2015 -0600
description:
cli: allow --no-psy-rd or --no-psy-rdoq
Subject: [x265] rdcost: use FIX16 for psyrd scale multiplier

details:   http://hg.videolan.org/x265/rev/ec1a3c310b8c
branches:  stable
changeset: 9297:ec1a3c310b8c
user:      Steve Borho <steve at borho.org>
date:      Wed Feb 04 15:08:39 2015 -0600
description:
rdcost: use FIX16 for psyrd scale multiplier

Gives us more resolution at the lower end of the range of psy-rd values. The
max value of m_psyRdBase after the 0.33 scaling of [0..2] is less than 1.
Subject: [x265] param: lower default psy-rd scale factor to 0.3

details:   http://hg.videolan.org/x265/rev/d4f52d3270b6
branches:  stable
changeset: 9298:d4f52d3270b6
user:      Steve Borho <steve at borho.org>
date:      Wed Feb 04 15:41:46 2015 -0600
description:
param: lower default psy-rd scale factor to 0.3
Subject: [x265] stats: fix unaccounted time in the presence of pmode and/or pme

details:   http://hg.videolan.org/x265/rev/0e3ce940f2f4
branches:  
changeset: 9299:0e3ce940f2f4
user:      Steve Borho <steve at borho.org>
date:      Wed Feb 04 18:54:10 2015 -0600
description:
stats: fix unaccounted time in the presence of pmode and/or pme
Subject: [x265] fix build error, add definition for getICRateNegDiff

details:   http://hg.videolan.org/x265/rev/bd4febc33ccc
branches:  
changeset: 9300:bd4febc33ccc
user:      Santhoshini Sekar<santhoshini at multicorewareinc.com>
date:      Thu Feb 05 11:48:13 2015 +0530
description:
fix build error, add definition for getICRateNegDiff
Subject: [x265] encoder: remove repetitive include

details:   http://hg.videolan.org/x265/rev/715815429421
branches:  
changeset: 9301:715815429421
user:      Deepthi Nandakumar <deepthi at multicorewareinc.com>
date:      Thu Feb 05 12:39:47 2015 +0530
description:
encoder: remove repetitive include
Subject: [x265] fix memory leak caused due to undeleted frameEncoders

details:   http://hg.videolan.org/x265/rev/cd4117a34a19
branches:  
changeset: 9302:cd4117a34a19
user:      Santhoshini Sekar<santhoshini at multicorewareinc.com>
date:      Thu Feb 05 12:27:23 2015 +0530
description:
fix memory leak caused due to undeleted frameEncoders
Subject: [x265] wrap getICRateNegDiff inside CHECKED_BUILD condition

details:   http://hg.videolan.org/x265/rev/d7a8363cf1ba
branches:  
changeset: 9303:d7a8363cf1ba
user:      Santhoshini Sekar<santhoshini at multicorewareinc.com>
date:      Thu Feb 05 15:01:48 2015 +0530
description:
wrap getICRateNegDiff inside CHECKED_BUILD condition
Subject: [x265] param: add temporal-layers to param2string (info SEI, stats file headers, etc)

details:   http://hg.videolan.org/x265/rev/db70f03767b5
branches:  
changeset: 9304:db70f03767b5
user:      Steve Borho <steve at borho.org>
date:      Thu Feb 05 10:40:42 2015 -0600
description:
param: add temporal-layers to param2string (info SEI, stats file headers, etc)
Subject: [x265] blockcopy_pp_2x8 SSE2 asm code: optimize LEA instruction

details:   http://hg.videolan.org/x265/rev/030b8e98846e
branches:  
changeset: 9305:030b8e98846e
user:      Praveen Tiwari
date:      Thu Feb 05 14:46:54 2015 +0530
description:
blockcopy_pp_2x8 SSE2 asm code: optimize LEA instruction
Subject: [x265] blockcopy_pp_2x16 SSE2 asm code: optimization

details:   http://hg.videolan.org/x265/rev/b8a86f96e5a6
branches:  
changeset: 9306:b8a86f96e5a6
user:      Praveen Tiwari
date:      Thu Feb 05 14:54:55 2015 +0530
description:
blockcopy_pp_2x16 SSE2 asm code: optimization

reduced LEA instructions and eliminated branch instructions
improved, 310.94c -> 268.89c
Subject: [x265] blockcopy_pp_2x4: SSE2 asm code optimization

details:   http://hg.videolan.org/x265/rev/7bf6184ff06e
branches:  
changeset: 9307:7bf6184ff06e
user:      Praveen Tiwari
date:      Thu Feb 05 16:05:46 2015 +0530
description:
blockcopy_pp_2x4: SSE2 asm code optimization
Subject: [x265] cmake: add x265cli.h to cli project (a convenience for IDE users)

details:   http://hg.videolan.org/x265/rev/7e58ab6892c4
branches:  
changeset: 9308:7e58ab6892c4
user:      Steve Borho <steve at borho.org>
date:      Wed Feb 04 14:53:13 2015 -0600
description:
cmake: add x265cli.h to cli project (a convenience for IDE users)
Subject: [x265] param: no longer disable deblock at ultrafast

details:   http://hg.videolan.org/x265/rev/cefc6f03cce1
branches:  stable
changeset: 9309:cefc6f03cce1
user:      Steve Borho <steve at borho.org>
date:      Thu Feb 05 11:20:00 2015 -0600
description:
param: no longer disable deblock at ultrafast

Recent profiling shows that it has an out-sized effect on quality for the very
small performance impact.

Deblocking accounts for about 3% of the CPU time at ultrafast preset, but at
smaller resolutions it has an outsised effect on frame parallelism because
deblocking introduces a 1-row reference lag.

At 4k this lag is not important, at 1080p the lag becomes measurable, while at
720p the lag can account for about a %10 drop in performance.
Subject: [x265] docs: improve documentation for --tune zero-latency

details:   http://hg.videolan.org/x265/rev/31c65e6926de
branches:  stable
changeset: 9310:31c65e6926de
user:      Steve Borho <steve at borho.org>
date:      Thu Feb 05 11:22:22 2015 -0600
description:
docs: improve documentation for --tune zero-latency
Subject: [x265] docs: document --tune fastdecode

details:   http://hg.videolan.org/x265/rev/8bf152c11484
branches:  stable
changeset: 9311:8bf152c11484
user:      Steve Borho <steve at borho.org>
date:      Thu Feb 05 11:43:58 2015 -0600
description:
docs: document --tune fastdecode
Subject: [x265] docs: use italics to highlight tune names

details:   http://hg.videolan.org/x265/rev/16b2c318feb4
branches:  stable
changeset: 9312:16b2c318feb4
user:      Steve Borho <steve at borho.org>
date:      Thu Feb 05 11:46:29 2015 -0600
description:
docs: use italics to highlight tune names
Subject: [x265] Merge with stable

details:   http://hg.videolan.org/x265/rev/6adc0fe54354
branches:  
changeset: 9313:6adc0fe54354
user:      Steve Borho <steve at borho.org>
date:      Thu Feb 05 11:46:43 2015 -0600
description:
Merge with stable
Subject: [x265] cli: fix a typo

details:   http://hg.videolan.org/x265/rev/2456f67ca94a
branches:  
changeset: 9314:2456f67ca94a
user:      Steve Borho <steve at borho.org>
date:      Thu Feb 05 11:53:51 2015 -0600
description:
cli: fix a typo
Subject: [x265] stats: remove pme from unaccounted time

details:   http://hg.videolan.org/x265/rev/57da3fb97009
branches:  
changeset: 9315:57da3fb97009
user:      Steve Borho <steve at borho.org>
date:      Thu Feb 05 12:57:23 2015 -0600
description:
stats: remove pme from unaccounted time
Subject: [x265] stats: improve comments, fix w/s nits

details:   http://hg.videolan.org/x265/rev/bea0d617f625
branches:  
changeset: 9316:bea0d617f625
user:      Steve Borho <steve at borho.org>
date:      Thu Feb 05 12:57:40 2015 -0600
description:
stats: improve comments, fix w/s nits

diffstat:

 doc/reST/cli.rst                 |   23 +-
 doc/reST/presets.rst             |   46 ++-
 doc/reST/threading.rst           |   11 +-
 source/CMakeLists.txt            |   11 +-
 source/common/ipfilter.cpp       |   41 +-
 source/common/param.cpp          |   40 +-
 source/common/pixel.cpp          |    2 +-
 source/common/primitives.cpp     |    1 +
 source/common/primitives.h       |   10 +-
 source/common/quant.cpp          |   78 ++++-
 source/common/slice.h            |    5 +-
 source/common/threading.h        |   17 +
 source/common/x86/blockcopy8.asm |  677 +++++++++++++++++++++++---------------
 source/encoder/analysis.cpp      |   41 +-
 source/encoder/dpb.cpp           |   44 +-
 source/encoder/dpb.h             |    4 +-
 source/encoder/encoder.cpp       |  161 +++++++-
 source/encoder/encoder.h         |    2 +-
 source/encoder/entropy.cpp       |   89 ++--
 source/encoder/entropy.h         |    2 +-
 source/encoder/frameencoder.cpp  |   17 +-
 source/encoder/frameencoder.h    |   11 +-
 source/encoder/framefilter.cpp   |    5 +
 source/encoder/level.cpp         |   25 +-
 source/encoder/nal.cpp           |    2 +-
 source/encoder/rdcost.h          |    4 +-
 source/encoder/search.cpp        |  287 ++++++++-------
 source/encoder/search.h          |   89 +++++-
 source/test/ipfilterharness.cpp  |   73 ++++-
 source/test/ipfilterharness.h    |    4 +-
 source/x265.h                    |   29 +-
 source/x265cli.h                 |   15 +-
 32 files changed, 1288 insertions(+), 578 deletions(-)

diffs (truncated from 3007 to 300 lines):

diff -r 2fb7f322c6d4 -r bea0d617f625 doc/reST/cli.rst
--- a/doc/reST/cli.rst	Sat Jan 31 14:57:06 2015 -0600
+++ b/doc/reST/cli.rst	Thu Feb 05 12:57:40 2015 -0600
@@ -171,6 +171,8 @@ Performance Options
 	Over-allocation of frame threads will not improve performance, it
 	will generally just increase memory use.
 
+	**Values:** any value between 8 and 16. Default is 0, auto-detect
+
 .. option:: --threads <integer>
 
 	Number of threads to allocate for the worker thread pool  This pool
@@ -409,7 +411,10 @@ Profile, Level, Tier
 	If :option:`--level-idc` has been specified, the option adds the
 	intention to support the High tier of that level. If your specified
 	level does not support a High tier, a warning is issued and this
-	modifier flag is ignored.
+	modifier flag is ignored. If :option:`--level-idc` has been specified,
+	but not --high-tier, then the encoder will attempt to encode at the 
+	specified level, main tier first, turning on high tier only if 
+	necessary and available at that level.
 
 .. note::
 	:option:`--profile`, :option:`--level-idc`, and
@@ -791,8 +796,8 @@ areas of high motion.
 	Influence rate distortion optimizated mode decision to preserve the
 	energy of the source image in the encoded image at the expense of
 	compression efficiency. It only has effect on presets which use
-	RDO-based mode decisions (:option:`--rd` 3 and above).  1.0 is a
-	typical value. Default 1.0
+	RDO-based mode decisions (:option:`--rd` 3 and above). 1.0 is a
+	typical value. Default 0.3
 
 	**Range of values:** 0 .. 2.0
 
@@ -1357,6 +1362,18 @@ Bitstream options
 	Picture Timing SEI messages providing timing information to the
 	decoder. Default disabled
 
+.. option:: --temporal-layers,--no-temporal-layers
+
+	Enable a temporal sub layer. All referenced I/P/B frames are in the
+	base layer and all unreferenced B frames are placed in a temporal
+	sublayer. A decoder may chose to drop the sublayer and only decode
+	and display the base layer slices.
+	
+	If used with a fixed GOP (:option:`b-adapt` 0) and :option:`bframes`
+	3 then the two layers evenly split the frame rate, with a cadence of
+	PbBbP. You probably also want :option:`--no-scenecut` and a keyframe
+	interval that is a multiple of 4.
+
 .. option:: --aud, --no-aud
 
 	Emit an access unit delimiter NAL at the start of each slice access
diff -r 2fb7f322c6d4 -r bea0d617f625 doc/reST/presets.rst
--- a/doc/reST/presets.rst	Sat Jan 31 14:57:06 2015 -0600
+++ b/doc/reST/presets.rst	Thu Feb 05 12:57:40 2015 -0600
@@ -66,8 +66,6 @@ The presets adjust encoder parameters to
 +--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
 | rdLevel      |    2      |     2     |    2     |   2    |  2   |    3   |  4   |   6    |    6     |    6    |
 +--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
-| deblock      |    0      |     1     |    1     |   1    |  1   |    1   |  1   |   1    |    1     |    1    |
-+--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
 | tu-intra     |    1      |     1     |    1     |   1    |  1   |    1   |  1   |   2    |    3     |    4    |
 +--------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
 | tu-inter     |    1      |     1     |    1     |   1    |  1   |    1   |  1   |   2    |    3     |    4    |
@@ -111,7 +109,7 @@ after the preset.
 Film Grain Retention
 ~~~~~~~~~~~~~~~~~~~~
 
-:option:`--tune` grain tries to improve the retention of film grain in
+:option:`--tune` *grain* tries to improve the retention of film grain in
 the reconstructed output. It helps rate distortion optimizations select
 modes which preserve high frequency noise:
 
@@ -141,3 +139,45 @@ blurred on block boundaries:
 
     * :option:`--deblock` -2
 
+Fast Decode
+~~~~~~~~~~~
+
+:option:`--tune` *fastdecode* disables encoder features which tend to be
+bottlenecks for the decoder. It is intended for use with 4K content at
+high bitrates which can cause decoders to struggle. It disables both
+HEVC loop filters, which tend to be process bottlenecks:
+
+    * :option:`--no-deblock`
+    * :option:`--no-sao`
+
+It disables weighted prediction, which tend to be bandwidth bottlenecks:
+
+    * :option:`--no-weightp`
+    * :option:`--no-weightb`
+
+And it disables intra blocks in B frames with :option:`--no-b-intra`
+since intra predicted blocks cause serial dependencies in the decoder.
+
+Zero Latency
+~~~~~~~~~~~~
+
+There are two halves to the latency problem. There is latency at the
+decoder and latency at the encoder. :option:`--tune` *zerolatency*
+removes latency from both sides. The decoder latency is removed by:
+
+    * :option:`--bframes` 0
+
+Encoder latency is removed by:
+
+    * :option:`--b-adapt` 0
+    * :option:`--rc-lookahead` 0
+    * :option:`--no-scenecut`
+    * :option:`--no-cutree`
+    * :option:`--frame-threads` 1
+
+With all of these settings x265_encoder_encode() will run synchronously,
+the picture passed as pic_in will be encoded and returned as NALs. These
+settings disable frame parallelism, which is an important component for
+x265 performance. If you can tolerate any latency on the encoder, you
+can increase performance by increasing the number of frame threads. Each
+additional frame thread adds one frame of latency.
diff -r 2fb7f322c6d4 -r bea0d617f625 doc/reST/threading.rst
--- a/doc/reST/threading.rst	Sat Jan 31 14:57:06 2015 -0600
+++ b/doc/reST/threading.rst	Thu Feb 05 12:57:40 2015 -0600
@@ -125,9 +125,14 @@ The second extenuating circumstance is t
 for motion reference must be processed by the loop filters and the loop
 filters cannot run until a full row has been encoded, and it must run a
 full row behind the encode process so that the pixels below the row
-being filtered are available. When you add up all the row lags each
-frame ends up being 3 CTU rows behind its reference frames (the
-equivalent of 12 macroblock rows for x264)
+being filtered are available. On top of this, HEVC has two loop filters:
+deblocking and SAO, which must be run in series with a row lag between
+them. When you add up all the row lags each frame ends up being 3 CTU
+rows behind its reference frames (the equivalent of 12 macroblock rows
+for x264). And keep in mind the wave-front progression pattern; by the
+time the reference frame finishes the third row of CTUs, nearly half of
+the CTUs in the frame may be compressed (depending on the display aspect
+ratio).
 
 The third extenuating circumstance is that when a frame being encoded
 becomes blocked by a reference frame row being available, that frame's
diff -r 2fb7f322c6d4 -r bea0d617f625 source/CMakeLists.txt
--- a/source/CMakeLists.txt	Sat Jan 31 14:57:06 2015 -0600
+++ b/source/CMakeLists.txt	Thu Feb 05 12:57:40 2015 -0600
@@ -21,7 +21,7 @@ include(CheckSymbolExists)
 include(CheckCXXCompilerFlag)
 
 # X265_BUILD must be incremented each time the public API is changed
-set(X265_BUILD 43)
+set(X265_BUILD 44)
 configure_file("${PROJECT_SOURCE_DIR}/x265.def.in"
                "${PROJECT_BINARY_DIR}/x265.def")
 configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in"
@@ -240,6 +240,11 @@ if(ENABLE_VTUNE)
     add_subdirectory(profile/vtune)
 endif(ENABLE_VTUNE)
 
+option(DETAILED_CU_STATS "Enable internal profiling of encoder work" OFF)
+if(DETAILED_CU_STATS)
+    add_definitions(-DDETAILED_CU_STATS)
+endif(DETAILED_CU_STATS)
+
 add_subdirectory(encoder)
 add_subdirectory(common)
 
@@ -375,10 +380,10 @@ if(ENABLE_CLI)
 
     if(XCODE)
         # Xcode seems unable to link the CLI with libs, so link as one targget
-        add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${FilterFiles} ${GETOPT} x265.cpp x265.h
+        add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${FilterFiles} ${GETOPT} x265.cpp x265.h x265cli.h
                            $<TARGET_OBJECTS:encoder> $<TARGET_OBJECTS:common> ${YASM_OBJS} ${YASM_SRCS})
     else()
-        add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${FilterFiles} ${GETOPT} ${X265_RC_FILE} x265.cpp x265.h)
+        add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${FilterFiles} ${GETOPT} ${X265_RC_FILE} x265.cpp x265.h x265cli.h)
         if(WIN32 OR NOT ENABLE_SHARED OR INTEL_CXX)
             # The CLI cannot link to the shared library on Windows, it
             # requires internal APIs not exported from the DLL
diff -r 2fb7f322c6d4 -r bea0d617f625 source/common/ipfilter.cpp
--- a/source/common/ipfilter.cpp	Sat Jan 31 14:57:06 2015 -0600
+++ b/source/common/ipfilter.cpp	Thu Feb 05 12:57:40 2015 -0600
@@ -34,8 +34,27 @@ using namespace x265;
 #endif
 
 namespace {
+template<int dstStride, int width, int height>
+void pixelToShort_c(const pixel* src, intptr_t srcStride, int16_t* dst)
+{
+    int shift = IF_INTERNAL_PREC - X265_DEPTH;
+    int row, col;
+
+    for (row = 0; row < height; row++)
+    {
+        for (col = 0; col < width; col++)
+        {
+            int16_t val = src[col] << shift;
+            dst[col] = val - (int16_t)IF_INTERNAL_OFFS;
+        }
+
+        src += srcStride;
+        dst += dstStride;
+    }
+}
+
 template<int dstStride>
-void filterConvertPelToShort_c(const pixel* src, intptr_t srcStride, int16_t* dst, int width, int height)
+void filterPixelToShort_c(const pixel* src, intptr_t srcStride, int16_t* dst, int width, int height)
 {
     int shift = IF_INTERNAL_PREC - X265_DEPTH;
     int row, col;
@@ -378,7 +397,8 @@ namespace x265 {
     p.chroma[X265_CSP_I420].pu[CHROMA_420_ ## W ## x ## H].filter_vpp = interp_vert_pp_c<4, W, H>;  \
     p.chroma[X265_CSP_I420].pu[CHROMA_420_ ## W ## x ## H].filter_vps = interp_vert_ps_c<4, W, H>;  \
     p.chroma[X265_CSP_I420].pu[CHROMA_420_ ## W ## x ## H].filter_vsp = interp_vert_sp_c<4, W, H>;  \
-    p.chroma[X265_CSP_I420].pu[CHROMA_420_ ## W ## x ## H].filter_vss = interp_vert_ss_c<4, W, H>;
+    p.chroma[X265_CSP_I420].pu[CHROMA_420_ ## W ## x ## H].filter_vss = interp_vert_ss_c<4, W, H>; \
+    p.chroma[X265_CSP_I420].pu[CHROMA_420_ ## W ## x ## H].chroma_p2s = pixelToShort_c<MAX_CU_SIZE / 2, W, H>; 
 
 #define CHROMA_422(W, H) \
     p.chroma[X265_CSP_I422].pu[CHROMA_422_ ## W ## x ## H].filter_hpp = interp_horiz_pp_c<4, W, H>; \
@@ -386,7 +406,8 @@ namespace x265 {
     p.chroma[X265_CSP_I422].pu[CHROMA_422_ ## W ## x ## H].filter_vpp = interp_vert_pp_c<4, W, H>;  \
     p.chroma[X265_CSP_I422].pu[CHROMA_422_ ## W ## x ## H].filter_vps = interp_vert_ps_c<4, W, H>;  \
     p.chroma[X265_CSP_I422].pu[CHROMA_422_ ## W ## x ## H].filter_vsp = interp_vert_sp_c<4, W, H>;  \
-    p.chroma[X265_CSP_I422].pu[CHROMA_422_ ## W ## x ## H].filter_vss = interp_vert_ss_c<4, W, H>;
+    p.chroma[X265_CSP_I422].pu[CHROMA_422_ ## W ## x ## H].filter_vss = interp_vert_ss_c<4, W, H>; \
+    p.chroma[X265_CSP_I422].pu[CHROMA_422_ ## W ## x ## H].chroma_p2s = pixelToShort_c<MAX_CU_SIZE / 2, W, H>; 
 
 #define CHROMA_444(W, H) \
     p.chroma[X265_CSP_I444].pu[LUMA_ ## W ## x ## H].filter_hpp = interp_horiz_pp_c<4, W, H>; \
@@ -394,7 +415,8 @@ namespace x265 {
     p.chroma[X265_CSP_I444].pu[LUMA_ ## W ## x ## H].filter_vpp = interp_vert_pp_c<4, W, H>;  \
     p.chroma[X265_CSP_I444].pu[LUMA_ ## W ## x ## H].filter_vps = interp_vert_ps_c<4, W, H>;  \
     p.chroma[X265_CSP_I444].pu[LUMA_ ## W ## x ## H].filter_vsp = interp_vert_sp_c<4, W, H>;  \
-    p.chroma[X265_CSP_I444].pu[LUMA_ ## W ## x ## H].filter_vss = interp_vert_ss_c<4, W, H>;
+    p.chroma[X265_CSP_I444].pu[LUMA_ ## W ## x ## H].filter_vss = interp_vert_ss_c<4, W, H>; \
+    p.chroma[X265_CSP_I444].pu[LUMA_ ## W ## x ## H].chroma_p2s = pixelToShort_c<MAX_CU_SIZE, W, H>; 
 
 #define LUMA(W, H) \
     p.pu[LUMA_ ## W ## x ## H].luma_hpp     = interp_horiz_pp_c<8, W, H>; \
@@ -403,7 +425,8 @@ namespace x265 {
     p.pu[LUMA_ ## W ## x ## H].luma_vps     = interp_vert_ps_c<8, W, H>;  \
     p.pu[LUMA_ ## W ## x ## H].luma_vsp     = interp_vert_sp_c<8, W, H>;  \
     p.pu[LUMA_ ## W ## x ## H].luma_vss     = interp_vert_ss_c<8, W, H>;  \
-    p.pu[LUMA_ ## W ## x ## H].luma_hvpp    = interp_hv_pp_c<8, W, H>;
+    p.pu[LUMA_ ## W ## x ## H].luma_hvpp    = interp_hv_pp_c<8, W, H>; \
+    p.pu[LUMA_ ## W ## x ## H].filter_p2s = pixelToShort_c<MAX_CU_SIZE, W, H>
 
 void setupFilterPrimitives_c(EncoderPrimitives& p)
 {
@@ -507,11 +530,11 @@ void setupFilterPrimitives_c(EncoderPrim
     CHROMA_444(48, 64);
     CHROMA_444(64, 16);
     CHROMA_444(16, 64);
-    p.luma_p2s = filterConvertPelToShort_c<MAX_CU_SIZE>;
+    p.luma_p2s = filterPixelToShort_c<MAX_CU_SIZE>;
 
-    p.chroma[X265_CSP_I444].p2s = filterConvertPelToShort_c<MAX_CU_SIZE>;
-    p.chroma[X265_CSP_I420].p2s = filterConvertPelToShort_c<MAX_CU_SIZE / 2>;
-    p.chroma[X265_CSP_I422].p2s = filterConvertPelToShort_c<MAX_CU_SIZE / 2>;
+    p.chroma[X265_CSP_I444].p2s = filterPixelToShort_c<MAX_CU_SIZE>;
+    p.chroma[X265_CSP_I420].p2s = filterPixelToShort_c<MAX_CU_SIZE / 2>;
+    p.chroma[X265_CSP_I422].p2s = filterPixelToShort_c<MAX_CU_SIZE / 2>;
 
     p.extendRowBorder = extendCURowColBorder;
 }
diff -r 2fb7f322c6d4 -r bea0d617f625 source/common/param.cpp
--- a/source/common/param.cpp	Sat Jan 31 14:57:06 2015 -0600
+++ b/source/common/param.cpp	Thu Feb 05 12:57:40 2015 -0600
@@ -174,13 +174,14 @@ void x265_param_default(x265_param *para
     param->cbQpOffset = 0;
     param->crQpOffset = 0;
     param->rdPenalty = 0;
-    param->psyRd = 1.0;
+    param->psyRd = 0.3;
     param->psyRdoq = 1.0;
     param->analysisMode = 0;
     param->analysisFileName = NULL;
     param->bIntraInBFrames = 0;
     param->bLossless = 0;
     param->bCULossless = 0;
+    param->bEnableTemporalSubLayers = 0;
 
     /* Rate control options */
     param->rc.vbvMaxBitrate = 0;
@@ -258,7 +259,6 @@ int x265_param_default_preset(x265_param
             param->bEnableWeightedPred = 0;
             param->rdLevel = 2;
             param->maxNumReferences = 1;
-            param->bEnableLoopFilter = 0;
             param->rc.aqStrength = 0.0;
             param->rc.aqMode = X265_AQ_NONE;
             param->rc.cuTree = 0;
@@ -458,12 +458,8 @@ static double x265_atof(const char *str,
 static int parseName(const char *arg, const char * const * names, bool& bError)
 {
     for (int i = 0; names[i]; i++)
-    {
         if (!strcmp(arg, names[i]))


More information about the x265-commits mailing list