<p dir="ltr">Where can i download working beta?</p>
<div class="gmail_quote">בתאריך 24 באפר 2014 09:23, "Steve Borho" <<a href="mailto:steve@borho.org">steve@borho.org</a>> כתב:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
details:   <a href="http://hg.videolan.org/x265/rev/5f49217b2489" target="_blank">http://hg.videolan.org/x265/rev/5f49217b2489</a><br>
branches:<br>
changeset: 6744:5f49217b2489<br>
user:      Steve Borho <<a href="mailto:steve@borho.org">steve@borho.org</a>><br>
date:      Mon Apr 21 16:12:35 2014 -0500<br>
description:<br>
log: do not report weightb twice<br>
Subject: [x265] slicetype: rowsCompleted variable should be volatile<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/84315557c97f" target="_blank">http://hg.videolan.org/x265/rev/84315557c97f</a><br>
branches:<br>
changeset: 6745:84315557c97f<br>
user:      Steve Borho <<a href="mailto:steve@borho.org">steve@borho.org</a>><br>
date:      Mon Apr 21 22:23:48 2014 -0500<br>
description:<br>
slicetype: rowsCompleted variable should be volatile<br>
<br>
Don't allow a compiler to optimize out the reads, it would cause a deadlock<br>
Subject: [x265] me: stack allocated pointer moved to heap<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/54e73d05a5b1" target="_blank">http://hg.videolan.org/x265/rev/54e73d05a5b1</a><br>
branches:<br>
changeset: 6746:54e73d05a5b1<br>
user:      Deepthi Nandakumar <<a href="mailto:deepthi@multicorewareinc.com">deepthi@multicorewareinc.com</a>><br>
date:      Tue Apr 22 17:03:19 2014 +0530<br>
description:<br>
me: stack allocated pointer moved to heap<br>
Subject: [x265] me: backout previous patch; add 1 to account for temporal MV candidate<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/7ff92e09900e" target="_blank">http://hg.videolan.org/x265/rev/7ff92e09900e</a><br>
branches:<br>
changeset: 6747:7ff92e09900e<br>
user:      Deepthi Nandakumar <<a href="mailto:deepthi@multicorewareinc.com">deepthi@multicorewareinc.com</a>><br>
date:      Tue Apr 22 20:11:06 2014 +0530<br>
description:<br>
me: backout previous patch; add 1 to account for temporal MV candidate<br>
Subject: [x265] update x86inc.asm<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/ce11d3617899" target="_blank">http://hg.videolan.org/x265/rev/ce11d3617899</a><br>
branches:<br>
changeset: 6748:ce11d3617899<br>
user:      Min Chen <<a href="mailto:chenm003@163.com">chenm003@163.com</a>><br>
date:      Tue Apr 22 14:30:45 2014 +0800<br>
description:<br>
update x86inc.asm<br>
Subject: [x265] testbench: ensure randomly generated width and height are >= 16<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/d916025046f7" target="_blank">http://hg.videolan.org/x265/rev/d916025046f7</a><br>
branches:<br>
changeset: 6749:d916025046f7<br>
user:      Murugan Vairavel <<a href="mailto:murugan@multicorewareinc.com">murugan@multicorewareinc.com</a>><br>
date:      Tue Apr 22 18:15:37 2014 +0530<br>
description:<br>
testbench: ensure randomly generated width and height are >= 16<br>
<br>
Fixes a crash in testbench caused by upshift and downshift when height equal to 1<br>
Subject: [x265] pixel: Added C Primitives for estimateCUPropagateCost and removed from lookahead<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/4ed2953f358e" target="_blank">http://hg.videolan.org/x265/rev/4ed2953f358e</a><br>
branches:<br>
changeset: 6750:4ed2953f358e<br>
user:      Gopu Govindaswamy<br>
date:      Tue Apr 22 12:01:17 2014 +0530<br>
description:<br>
pixel: Added C Primitives for estimateCUPropagateCost and removed from lookahead<br>
Subject: [x265] cmake: do not prefix absolute library paths with -l in pc file<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/d11c90310c8a" target="_blank">http://hg.videolan.org/x265/rev/d11c90310c8a</a><br>
branches:<br>
changeset: 6751:d11c90310c8a<br>
user:      Steve Borho <<a href="mailto:steve@borho.org">steve@borho.org</a>><br>
date:      Tue Apr 22 13:41:04 2014 -0500<br>
description:<br>
cmake: do not prefix absolute library paths with -l in pc file<br>
<br>
fixes static linking on Mac OS X in particular<br>
Subject: [x265] Backed out changeset: ce11d3617899<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/53712f218a1a" target="_blank">http://hg.videolan.org/x265/rev/53712f218a1a</a><br>
branches:<br>
changeset: 6752:53712f218a1a<br>
user:      Steve Borho <<a href="mailto:steve@borho.org">steve@borho.org</a>><br>
date:      Tue Apr 22 22:52:49 2014 -0500<br>
description:<br>
Backed out changeset: ce11d3617899<br>
Subject: [x265] fix wrong cpu type on interp_4tap_vert_x_4x2<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/aa8442a28aa4" target="_blank">http://hg.videolan.org/x265/rev/aa8442a28aa4</a><br>
branches:<br>
changeset: 6753:aa8442a28aa4<br>
user:      Min Chen <<a href="mailto:chenm003@163.com">chenm003@163.com</a>><br>
date:      Wed Apr 23 13:56:05 2014 +0800<br>
description:<br>
fix wrong cpu type on interp_4tap_vert_x_4x2<br>
Subject: [x265] threadpool: increase reference count if pool was allocated while blocked<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/ea597d46f30e" target="_blank">http://hg.videolan.org/x265/rev/ea597d46f30e</a><br>
branches:<br>
changeset: 6754:ea597d46f30e<br>
user:      Steve Borho <<a href="mailto:steve@borho.org">steve@borho.org</a>><br>
date:      Wed Apr 23 01:56:45 2014 -0500<br>
description:<br>
threadpool: increase reference count if pool was allocated while blocked<br>
Subject: [x265] testbench: port x264 stack & register check code<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/91685d4e6c1a" target="_blank">http://hg.videolan.org/x265/rev/91685d4e6c1a</a><br>
branches:<br>
changeset: 6755:91685d4e6c1a<br>
user:      Min Chen <<a href="mailto:chenm003@163.com">chenm003@163.com</a>><br>
date:      Wed Apr 23 14:39:13 2014 -0500<br>
description:<br>
testbench: port x264 stack & register check code<br>
Subject: [x265] pixelharness: stack-check all asm pixel primitives<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/56a1c114d3be" target="_blank">http://hg.videolan.org/x265/rev/56a1c114d3be</a><br>
branches:<br>
changeset: 6756:56a1c114d3be<br>
user:      Min Chen <<a href="mailto:chenm003@163.com">chenm003@163.com</a>><br>
date:      Wed Apr 23 14:39:45 2014 -0500<br>
description:<br>
pixelharness: stack-check all asm pixel primitives<br>
Subject: [x265] update x86inc.asm<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/cdd79be8cff9" target="_blank">http://hg.videolan.org/x265/rev/cdd79be8cff9</a><br>
branches:<br>
changeset: 6757:cdd79be8cff9<br>
user:      Min Chen <<a href="mailto:chenm003@163.com">chenm003@163.com</a>><br>
date:      Wed Apr 23 14:39:24 2014 -0500<br>
description:<br>
update x86inc.asm<br>
Subject: [x265] primitives: nit<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/1c9b3a48ea13" target="_blank">http://hg.videolan.org/x265/rev/1c9b3a48ea13</a><br>
branches:<br>
changeset: 6758:1c9b3a48ea13<br>
user:      Steve Borho <<a href="mailto:steve@borho.org">steve@borho.org</a>><br>
date:      Wed Apr 23 17:28:52 2014 -0500<br>
description:<br>
primitives: nit<br>
Subject: [x265] improve by LEA to ADD in cvt32to16_shr<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/f8b68aa1877d" target="_blank">http://hg.videolan.org/x265/rev/f8b68aa1877d</a><br>
branches:<br>
changeset: 6759:f8b68aa1877d<br>
user:      Min Chen <<a href="mailto:chenm003@163.com">chenm003@163.com</a>><br>
date:      Wed Apr 23 14:39:38 2014 -0500<br>
description:<br>
improve by LEA to ADD in cvt32to16_shr<br>
Subject: [x265] cmake: export YASM_FLAGS from CMakeASM_YASMInformation.cmake<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/c24c7b2d0eff" target="_blank">http://hg.videolan.org/x265/rev/c24c7b2d0eff</a><br>
branches:<br>
changeset: 6760:c24c7b2d0eff<br>
user:      Steve Borho <<a href="mailto:steve@borho.org">steve@borho.org</a>><br>
date:      Wed Apr 23 23:50:30 2014 -0500<br>
description:<br>
cmake: export YASM_FLAGS from CMakeASM_YASMInformation.cmake<br>
<br>
This avoids duplicate logic in other cmake scripts<br>
Subject: [x265] move checkasm-a.asm to the test/ folder (fixes linux link)<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/6dca7a1de7f7" target="_blank">http://hg.videolan.org/x265/rev/6dca7a1de7f7</a><br>
branches:<br>
changeset: 6761:6dca7a1de7f7<br>
user:      Steve Borho <<a href="mailto:steve@borho.org">steve@borho.org</a>><br>
date:      Thu Apr 24 00:16:39 2014 -0500<br>
description:<br>
move checkasm-a.asm to the test/ folder (fixes linux link)<br>
Subject: [x265] align the stack for GCC x86_32 builds<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/4c341edb4cf8" target="_blank">http://hg.videolan.org/x265/rev/4c341edb4cf8</a><br>
branches:<br>
changeset: 6762:4c341edb4cf8<br>
user:      Steve Borho <<a href="mailto:steve@borho.org">steve@borho.org</a>><br>
date:      Thu Apr 17 14:15:42 2014 -0500<br>
description:<br>
align the stack for GCC x86_32 builds<br>
<br>
For all threads x265 creates, align the stack immediately in the call to<br>
threadMain().<br>
<br>
The API calls do not appear to require an aligned stack; all primitives that<br>
require stack aligned buffers are called from frame encoder or worker pool<br>
threads<br>
Subject: [x265] fixups for testbench build on Windows<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/904b96e1c436" target="_blank">http://hg.videolan.org/x265/rev/904b96e1c436</a><br>
branches:<br>
changeset: 6763:904b96e1c436<br>
user:      Steve Borho <<a href="mailto:steve@borho.org">steve@borho.org</a>><br>
date:      Thu Apr 24 00:38:01 2014 -0500<br>
description:<br>
fixups for testbench build on Windows<br>
Subject: [x265] TComMotionInfo: nit<br>
<br>
details:   <a href="http://hg.videolan.org/x265/rev/e9f64036fbee" target="_blank">http://hg.videolan.org/x265/rev/e9f64036fbee</a><br>
branches:<br>
changeset: 6764:e9f64036fbee<br>
user:      Steve Borho <<a href="mailto:steve@borho.org">steve@borho.org</a>><br>
date:      Thu Apr 24 01:15:51 2014 -0500<br>
description:<br>
TComMotionInfo: nit<br>
<br>
diffstat:<br>
<br>
 source/CMakeLists.txt                       |   29 +--<br>
 source/Lib/TLibCommon/TComMotionInfo.h      |    8 +-<br>
 source/Lib/TLibEncoder/TEncSearch.cpp       |    2 +-<br>
 source/cmake/CMakeASM_YASMInformation.cmake |   32 ++-<br>
 source/common/CMakeLists.txt                |    4 +-<br>
 source/common/common.h                      |   11 +<br>
 source/common/param.cpp                     |    1 -<br>
 source/common/pixel.cpp                     |   17 ++<br>
 source/common/primitives.h                  |    6 +-<br>
 source/common/threading.cpp                 |   10 +-<br>
 source/common/threadpool.cpp                |    6 +-<br>
 source/common/x86/asm-primitives.cpp        |    2 +-<br>
 source/common/x86/blockcopy8.asm            |    6 +-<br>
 source/common/x86/ipfilter16.asm            |    2 +-<br>
 source/common/x86/ipfilter8.h               |    2 +-<br>
 source/common/x86/x86inc.asm                |   66 +++++---<br>
 source/encoder/slicetype.cpp                |   20 +--<br>
 source/encoder/slicetype.h                  |    4 +-<br>
 source/test/CMakeLists.txt                  |   15 +-<br>
 source/test/checkasm-a.asm                  |  219 +++++++++++++++++++++++++++<br>
 source/test/pixelharness.cpp                |  223 +++++++++++++++++----------<br>
 source/test/testharness.h                   |   46 +++++<br>
 22 files changed, 544 insertions(+), 187 deletions(-)<br>
<br>
diffs (truncated from 1634 to 300 lines):<br>
<br>
diff -r 3acc99098339 -r e9f64036fbee source/CMakeLists.txt<br>
--- a/source/CMakeLists.txt     Tue Apr 22 02:16:58 2014 +0300<br>
+++ b/source/CMakeLists.txt     Thu Apr 24 01:15:51 2014 -0500<br>
@@ -206,39 +206,20 @@ add_subdirectory(encoder)<br>
 add_subdirectory(common)<br>
<br>
 if((MSVC_IDE OR XCODE) AND ENABLE_ASSEMBLY)<br>
-    # this is horrible. ugly, and hacky, and it reproduces logic found<br>
-    # in the yasm CMake modules, but this is required because of this cmake bug<br>
+    # this is required because of this cmake bug<br>
     # <a href="http://www.cmake.org/Bug/print_bug_page.php?bug_id=8170" target="_blank">http://www.cmake.org/Bug/print_bug_page.php?bug_id=8170</a><br>
-    if (X64)<br>
-        if(APPLE)<br>
-            set(FLAGS -f macho64 -m amd64 -DPREFIX -DPIC -DARCH_X86_64=1 -DHAVE_ALIGNED_STACK=1)<br>
-        else()<br>
-            set(FLAGS -f win64 -m amd64 -DARCH_X86_64=1 -DHAVE_ALIGNED_STACK=0)<br>
-        endif()<br>
-    else()<br>
-        if(APPLE)<br>
-            set(FLAGS -f macho -DARCH_X86_64=0 -DHAVE_ALIGNED_STACK=1 -DPREFIX)<br>
-        else()<br>
-            set(FLAGS -f win32 -DARCH_X86_64=0 -DHAVE_ALIGNED_STACK=0 -DPREFIX)<br>
-        endif()<br>
-    endif()<br>
     if(WIN32)<br>
         set(SUFFIX obj)<br>
     else()<br>
         set(SUFFIX o)<br>
     endif()<br>
-    if (HIGH_BIT_DEPTH)<br>
-        set(FLAGS ${FLAGS} -DHIGH_BIT_DEPTH=1 -DBIT_DEPTH=10)<br>
-    else()<br>
-        set(FLAGS ${FLAGS} -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8)<br>
-    endif()<br>
     foreach(ASM ${MSVC_ASMS})<br>
         set(YASM_SRC ${CMAKE_CURRENT_SOURCE_DIR}/common/x86/${ASM})<br>
         list(APPEND YASM_SRCS ${YASM_SRC})<br>
         list(APPEND YASM_OBJS ${ASM}.${SUFFIX})<br>
         add_custom_command(<br>
             OUTPUT ${ASM}.${SUFFIX}<br>
-            COMMAND ${YASM_EXECUTABLE} ARGS ${FLAGS} ${YASM_SRC} -o ${ASM}.${SUFFIX}<br>
+            COMMAND ${YASM_EXECUTABLE} ARGS ${YASM_FLAGS} ${YASM_SRC} -o ${ASM}.${SUFFIX}<br>
             DEPENDS ${YASM_SRC})<br>
     endforeach()<br>
 endif()<br>
@@ -294,7 +275,11 @@ endif()<br>
 if(X265_LATEST_TAG)<br>
     # convert lists of link libraries into -lstdc++ -lm etc..<br>
     foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS})<br>
-        list(APPEND PLIBLIST "-l${LIB}")<br>
+        if(IS_ABSOLUTE ${LIB} AND EXISTS ${LIB})<br>
+            list(APPEND PLIBLIST "${LIB}")<br>
+        else()<br>
+            list(APPEND PLIBLIST "-l${LIB}")<br>
+        endif()<br>
     endforeach()<br>
     if(PLIBLIST)<br>
         # blacklist of libraries that should not be in Libs.private<br>
diff -r 3acc99098339 -r e9f64036fbee source/Lib/TLibCommon/TComMotionInfo.h<br>
--- a/source/Lib/TLibCommon/TComMotionInfo.h    Tue Apr 22 02:16:58 2014 +0300<br>
+++ b/source/Lib/TLibCommon/TComMotionInfo.h    Thu Apr 24 01:15:51 2014 -0500<br>
@@ -54,11 +54,11 @@ namespace x265 {<br>
 // ====================================================================================================================<br>
<br>
 /// parameters for AMVP<br>
-typedef struct _AMVPInfo<br>
+struct AMVPInfo<br>
 {<br>
-    MV m_mvCand[AMVP_MAX_NUM_CANDS_MEM];  ///< array of motion vector predictor candidates<br>
-    int      m_num;                             ///< number of motion vector predictor candidates<br>
-} AMVPInfo;<br>
+    MV  m_mvCand[AMVP_MAX_NUM_CANDS_MEM];  ///< array of motion vector predictor candidates<br>
+    int m_num;                             ///< number of motion vector predictor candidates<br>
+};<br>
<br>
 // ====================================================================================================================<br>
 // Class definition<br>
diff -r 3acc99098339 -r e9f64036fbee source/Lib/TLibEncoder/TEncSearch.cpp<br>
--- a/source/Lib/TLibEncoder/TEncSearch.cpp     Tue Apr 22 02:16:58 2014 +0300<br>
+++ b/source/Lib/TLibEncoder/TEncSearch.cpp     Thu Apr 24 01:15:51 2014 -0500<br>
@@ -2305,7 +2305,7 @@ bool TEncSearch::predInterSearch(TComDat<br>
                         bits--;<br>
                 }<br>
<br>
-                MV mvc[(MD_ABOVE_LEFT + 1) * 2];<br>
+                MV mvc[(MD_ABOVE_LEFT + 1) * 2 + 1];<br>
                 int numMvc = cu->fillMvpCand(partIdx, partAddr, l, ref, &amvpInfo[l][ref], mvc);<br>
<br>
                 // Pick the best possible MVP from AMVP candidates based on least residual<br>
diff -r 3acc99098339 -r e9f64036fbee source/cmake/CMakeASM_YASMInformation.cmake<br>
--- a/source/cmake/CMakeASM_YASMInformation.cmake       Tue Apr 22 02:16:58 2014 +0300<br>
+++ b/source/cmake/CMakeASM_YASMInformation.cmake       Thu Apr 24 01:15:51 2014 -0500<br>
@@ -2,44 +2,46 @@ set(ASM_DIALECT "_YASM")<br>
 set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS asm)<br>
<br>
 if(X64)<br>
-    set(ASM_FLAGS "-DARCH_X86_64=1 -m amd64 -DPIC")<br>
+    list(APPEND ASM_FLAGS -DARCH_X86_64=1 -DPIC)<br>
     if(APPLE)<br>
-        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARG1 "-f macho64 -DPREFIX")<br>
+        set(ARGS -f macho64 -m amd64 -DPREFIX)<br>
     elseif(UNIX AND NOT CYGWIN)<br>
-        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARG1 "-f elf64")<br>
+        set(ARGS -f elf64 -m amd64)<br>
     else()<br>
-        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARG1 "-f win64")<br>
+        set(ARGS -f win64 -m amd64)<br>
     endif()<br>
 else()<br>
-    set(ASM_FLAGS -DARCH_X86_64=0)<br>
+    list(APPEND ASM_FLAGS -DARCH_X86_64=0)<br>
     if(APPLE)<br>
-        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARG1 "-f macho")<br>
+        set(ARGS -f macho)<br>
     elseif(UNIX AND NOT CYGWIN)<br>
-        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARG1 "-f elf32")<br>
+        set(ARGS -f elf32)<br>
     else()<br>
-        set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ARG1 "-f win32 -DPREFIX")<br>
+        set(ARGS -f win32 -DPREFIX)<br>
     endif()<br>
 endif()<br>
<br>
-# we cannot assume 16-byte stack alignment on x86_32 even with GCC<br>
-if(GCC AND X64)<br>
-    set(ASM_FLAGS "${ASM_FLAGS} -DHAVE_ALIGNED_STACK=1")<br>
+if(GCC)<br>
+    list(APPEND ASM_FLAGS -DHAVE_ALIGNED_STACK=1)<br>
 else()<br>
-    set(ASM_FLAGS "${ASM_FLAGS} -DHAVE_ALIGNED_STACK=0")<br>
+    list(APPEND ASM_FLAGS -DHAVE_ALIGNED_STACK=0)<br>
 endif()<br>
<br>
 if(HIGH_BIT_DEPTH)<br>
-    set(ASM_FLAGS "${ASM_FLAGS} -DHIGH_BIT_DEPTH=1 -DBIT_DEPTH=10")<br>
+    list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=1 -DBIT_DEPTH=10)<br>
 else()<br>
-    set(ASM_FLAGS "${ASM_FLAGS} -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8")<br>
+    list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8)<br>
 endif()<br>
+set(YASM_FLAGS ${ARGS} ${ASM_FLAGS} PARENT_SCOPE)<br>
+string(REPLACE ";" " " CMAKE_ASM_YASM_COMPILER_ARG1 "${ARGS}")<br>
<br>
 # This section exists to override the one in CMakeASMInformation.cmake<br>
 # (the default Information file). This removes the <FLAGS><br>
 # thing so that your C compiler flags that have been set via<br>
 # set_target_properties don't get passed to yasm and confuse it.<br>
 if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT)<br>
-    set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> ${ASM_FLAGS} -o <OBJECT> <SOURCE>")<br>
+    string(REPLACE ";" " " STR_ASM_FLAGS "${ASM_FLAGS}")<br>
+    set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> ${STR_ASM_FLAGS} -o <OBJECT> <SOURCE>")<br>
 endif()<br>
<br>
 include(CMakeASMInformation)<br>
diff -r 3acc99098339 -r e9f64036fbee source/common/CMakeLists.txt<br>
--- a/source/common/CMakeLists.txt      Tue Apr 22 02:16:58 2014 +0300<br>
+++ b/source/common/CMakeLists.txt      Thu Apr 24 01:15:51 2014 -0500<br>
@@ -119,10 +119,10 @@ if(ENABLE_ASSEMBLY)<br>
         # MSVC requires custom build rules in the main cmake script for yasm<br>
         set(MSVC_ASMS "${A_SRCS}" CACHE INTERNAL "yasm sources")<br>
         set(A_SRCS)<br>
-    else()<br>
-        enable_language(ASM_YASM)<br>
     endif()<br>
<br>
+    enable_language(ASM_YASM)<br>
+<br>
     foreach(SRC ${A_SRCS} ${C_SRCS})<br>
         set(ASM_PRIMITIVES ${ASM_PRIMITIVES} x86/${SRC})<br>
     endforeach()<br>
diff -r 3acc99098339 -r e9f64036fbee source/common/common.h<br>
--- a/source/common/common.h    Tue Apr 22 02:16:58 2014 +0300<br>
+++ b/source/common/common.h    Thu Apr 24 01:15:51 2014 -0500<br>
@@ -47,10 +47,21 @@<br>
 #define ALIGN_VAR_8(T, var)  T var __attribute__((aligned(8)))<br>
 #define ALIGN_VAR_16(T, var) T var __attribute__((aligned(16)))<br>
 #define ALIGN_VAR_32(T, var) T var __attribute__((aligned(32)))<br>
+<br>
+#if X265_ARCH_X86 && !defined(X86_64)<br>
+extern "C" intptr_t x265_stack_align( void (*func)(), ... );<br>
+#define x265_stack_align(func,...) x265_stack_align((void (*)())func, __VA_ARGS__)<br>
+#else<br>
+#define x265_stack_align(func,...) func(__VA_ARGS__)<br>
+#endif<br>
+<br>
 #elif defined(_MSC_VER)<br>
+<br>
 #define ALIGN_VAR_8(T, var)  __declspec(align(8)) T var<br>
 #define ALIGN_VAR_16(T, var) __declspec(align(16)) T var<br>
 #define ALIGN_VAR_32(T, var) __declspec(align(32)) T var<br>
+#define x265_stack_align(func,...) func(__VA_ARGS__)<br>
+<br>
 #endif // if defined(__GNUC__)<br>
<br>
 #if HIGH_BIT_DEPTH<br>
diff -r 3acc99098339 -r e9f64036fbee source/common/param.cpp<br>
--- a/source/common/param.cpp   Tue Apr 22 02:16:58 2014 +0300<br>
+++ b/source/common/param.cpp   Thu Apr 24 01:15:51 2014 -0500<br>
@@ -1103,7 +1103,6 @@ void x265_print_params(x265_param *param<br>
         else<br>
             fprintf(stderr, "tskip ");<br>
     }<br>
-    TOOLOPT(param->bEnableWeightedBiPred, "weightbp");<br>
     fprintf(stderr, "\n");<br>
     fflush(stderr);<br>
 }<br>
diff -r 3acc99098339 -r e9f64036fbee source/common/pixel.cpp<br>
--- a/source/common/pixel.cpp   Tue Apr 22 02:16:58 2014 +0300<br>
+++ b/source/common/pixel.cpp   Thu Apr 24 01:15:51 2014 -0500<br>
@@ -865,6 +865,22 @@ void planecopy_sp_c(uint16_t *src, intpt<br>
         src += srcStride;<br>
     }<br>
 }<br>
+<br>
+/* Estimate the total amount of influence on future quality that could be had if we<br>
+ * were to improve the reference samples used to inter predict any given CU. */<br>
+void estimateCUPropagateCost(int *dst, uint16_t *propagateIn, int32_t *intraCosts, uint16_t *interCosts,<br>
+                                        int32_t *invQscales, double *fpsFactor, int len)<br>
+{<br>
+    double fps = *fpsFactor / 256;<br>
+    for (int i = 0; i < len; i++)<br>
+    {<br>
+        double intraCost       = intraCosts[i] * invQscales[i];<br>
+        double propagateAmount = (double)propagateIn[i] + intraCost * fps;<br>
+        double propagateNum    = (double)intraCosts[i] - (interCosts[i] & ((1 << 14) - 1));<br>
+        double propagateDenom  = (double)intraCosts[i];<br>
+        dst[i] = (int)(propagateAmount * propagateNum / propagateDenom + 0.5);<br>
+    }<br>
+}<br>
 }  // end anonymous namespace<br>
<br>
 namespace x265 {<br>
@@ -1158,5 +1174,6 @@ void Setup_C_PixelPrimitives(EncoderPrim<br>
     p.plane_copy_deinterleave_c = plane_copy_deinterleave_chroma;<br>
     p.planecopy_cp = planecopy_cp_c;<br>
     p.planecopy_sp = planecopy_sp_c;<br>
+    p.propagateCost = estimateCUPropagateCost;<br>
 }<br>
 }<br>
diff -r 3acc99098339 -r e9f64036fbee source/common/primitives.h<br>
--- a/source/common/primitives.h        Tue Apr 22 02:16:58 2014 +0300<br>
+++ b/source/common/primitives.h        Thu Apr 24 01:15:51 2014 -0500<br>
@@ -152,7 +152,7 @@ typedef void (*extendCURowBorder_t)(pixe<br>
 typedef void (*ssim_4x4x2_core_t)(const pixel *pix1, intptr_t stride1, const pixel *pix2, intptr_t stride2, int sums[2][4]);<br>
 typedef float (*ssim_end4_t)(int sum0[5][4], int sum1[5][4], int width);<br>
 typedef uint64_t (*var_t)(pixel *pix, intptr_t stride);<br>
-typedef void (*plane_copy_deinterleave_t)(pixel *dstu, intptr_t dstuStride, pixel *dstv, intptr_t dstvStride, pixel *src,  intptr_t srcStride, int w, int h);<br>
+typedef void (*plane_copy_deinterleave_t)(pixel *dstu, intptr_t dstuStride, pixel *dstv, intptr_t dstvStride, pixel *src, intptr_t srcStride, int w, int h);<br>
<br>
 typedef void (*filter_pp_t) (pixel *src, intptr_t srcStride, pixel *dst, intptr_t dstStride, int coeffIdx);<br>
 typedef void (*filter_hps_t) (pixel *src, intptr_t srcStride, int16_t *dst, intptr_t dstStride, int coeffIdx, int isRowExt);<br>
@@ -175,6 +175,8 @@ typedef void (*saoCuOrgE0_t)(pixel * rec<br>
 typedef void (*planecopy_cp_t) (uint8_t *src, intptr_t srcStride, pixel *dst, intptr_t dstStride, int width, int height, int shift);<br>
 typedef void (*planecopy_sp_t) (uint16_t *src, intptr_t srcStride, pixel *dst, intptr_t dstStride, int width, int height, int shift, uint16_t mask);<br>
<br>
+typedef void (*cutree_propagate_cost) (int *dst, uint16_t *propagateIn, int32_t *intraCosts, uint16_t *interCosts, int32_t *invQscales, double *fpsFactor, int len);<br>
+<br>
 /* Define a structure containing function pointers to optimized encoder<br>
  * primitives.  Each pointer can reference either an assembly routine,<br>
  * a vectorized primitive, or a C function. */<br>
@@ -247,6 +249,8 @@ struct EncoderPrimitives<br>
     planecopy_cp_t    planecopy_cp;<br>
     planecopy_sp_t    planecopy_sp;<br>
<br>
+    cutree_propagate_cost    propagateCost;<br>
+<br>
     struct<br>
     {<br>
         filter_pp_t     filter_vpp[NUM_LUMA_PARTITIONS];<br>
diff -r 3acc99098339 -r e9f64036fbee source/common/threading.cpp<br>
--- a/source/common/threading.cpp       Tue Apr 22 02:16:58 2014 +0300<br>
+++ b/source/common/threading.cpp       Thu Apr 24 01:15:51 2014 -0500<br>
@@ -28,12 +28,18 @@<br>
 namespace x265 {<br>
 // x265 private namespace<br>
<br>
+/* C shim for forced stack alignment */<br>
+static void stackAlignMain(Thread *instance)<br>
+{<br>
+    instance->threadMain();<br>
+}<br>
+<br>
 #if _WIN32<br>
<br>
 static DWORD WINAPI ThreadShim(Thread *instance)<br>
 {<br>
     // defer processing to the virtual function implemented in the derived class<br>
-    instance->threadMain();<br>
+    x265_stack_align(stackAlignMain, instance);<br>
<br>
     return 0;<br>
 }<br>
@@ -70,7 +76,7 @@ static void *ThreadShim(void *opaque)<br>
     // defer processing to the virtual function implemented in the derived class<br>
     Thread *instance = reinterpret_cast<Thread *>(opaque);<br>
<br>
-    instance->threadMain();<br>
+    x265_stack_align(stackAlignMain, instance);<br>
<br>
     return NULL;<br>
_______________________________________________<br>
x265-commits mailing list<br>
<a href="mailto:x265-commits@videolan.org">x265-commits@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-commits" target="_blank">https://mailman.videolan.org/listinfo/x265-commits</a><br>
</blockquote></div>