トップ 検索 一覧 差分 ソース ヘルプ RSS ログイン

x264-changelog-jp r2300-r2399

このページの全ては誤っているかもしれません。x264関連の記事に関してを読んでください。

x264-changelog-jp r2300-r2399

r2300-r2399のchangelogの日本語訳。その他のリビジョンと注意事項についてはx264-changelog-jpへどうぞ。

前:x264-changelog-jp r2200-r2299 - 次:x264-changelog-jp r2400-r2499?

最近は全くと言っていいほどdiffを見ていないため、速報とか暫定訳とか仮訳とか書いてなくとも色々怪しいです。

x264r2358

commit 9e941d1fabb2de4b15f169057a07dc395307d2ce

Author: Anton Mitrofanov

Date: Mon Aug 26 21:20:31 2013 +0400

Fix masked access violation in KERNEL32

Caused crashes under gdb in Windows and might cause other unknown problems.

KERNEL32内でのmasked access violationを修正。

Windowsでgdb配下においてクラッシュを引き起こし、その他の何がしかの問題を起こしていたかもしれない。

x264r2357

commit e61d9f9d3d77584136a591e01cebecbd7547a43b

Author: Hiroki Taniura

Date: Sun Aug 25 01:18:57 2013 +0900

Fix GPAC support on Windows

Windows上でのGPACのサポートを修正。

ビルドにのみ影響。

x264r2356

commit a1d3d17239e94a82ab261a071384295406bd8587

Author: Henrik Gramner

Date: Sun Aug 11 19:50:42 2013 +0200

Windows Unicode support

Windows, unlike most other operating systems, uses UTF-16 for Unicode strings while x264 is designed for UTF-8.

This patch does the following in order to handle things like Unicode filenames:

* Keep strings internally as UTF-8.

* Retrieve the CLI command line as UTF-16 and convert it to UTF-8.

* Always use Unicode versions of Windows API functions and convert strings to UTF-16 when calling them.

* Attempt to use legacy 8.3 short filenames for external libraries without Unicode support.

Windows Unicodeサポート。

x264はUTF-8向けに設計されているが、他のほとんどのオペレーティングシステムと異なり、WindowsはUnicode文字列にUTF-16を使用する。

このパッチはUnicodeファイル名を扱うために以下の様なことを行う:

* 内部的に文字列をUTF-8として保持する。

* CLIコマンドラインをUTF-16として取得しそれをUTF-8に変換する。

* 常にUnicodeバージョンのWindows APIを使用し、呼び出し時に文字列をUTF-16に変換する。

* Unicodeサポートのない外部ライブラリに対しては、古い8.3の短いファイル名を使用しようと試みる。

X264_BUILD 138。

x264r2355

commit 3155f69090354bcb63479d6f8875c55bb8b3f783

Author: Kieran Kunhya

Date: Sat Jul 20 18:47:59 2013 +0100

AVC-Intra support

This format has been reverse engineered and x264's output has almost exactly

the same bitstream as Panasonic cameras and encoders produce. It therefore does

not comply with SMPTE RP2027 since Panasonic themselves do not comply with

their own specification. It has been tested in Avid, Premiere, Edius and

Quantel.

Parts of this patch were written by Jason Garrett-Glaser and some reverse

engineering was done by Joseph Artsimovich.

AVC-Intraのサポート。

この形式はリバースエンジニアリングされたもので、x264の出力はPanasonicのカメラやエンコーダーが作り出すものとほとんど同じビットストリームである。そのため、Panasonic自身が彼らの仕様に適合しないのと同様、これはSMPTE RP2027に適合しない。これはAvid, Premire, Eius, そしてQuantelでテストされている。

このパッチは部分的にJason Garrett-Glaserにより書かれ、リバースエンジニアリングの幾分かはJoseph Artsimovichにより行われた。

X264_BUILD 137。

オプションに--avcintra-compatが追加。intraフレームだけで構成する、主に映像編集向けの形式。

x264r2354

commit b690d473359b4ac7f8e72244af67014cc41b7953

Author: Henrik Gramner

Date: Mon Jul 8 12:06:42 2013 -0700

Transparent hugepage support

Combine frame and mb data mallocs into a single large malloc.

Additionally, on Linux systems with hugepage support, ask for hugepages on

large mallocs.

This gives a small performance improvement (~0.2-0.9%) on systems without

hugepage support, as well as a small memory footprint reduction.

On recent Linux kernels with hugepage support enabled (set to madvise or

always), it improves performance up to 4% at the cost of about 7-12% more

memory usage on typical settings..

It may help even more on Haswell and other recent CPUs with improved 2MB page

support in hardware.

Transparent hugepageのサポート。

フレームとmbデータのmallocを一つの大きなmallocに統合。

加えて、hugepageのサポートのあるLinuxシステムでは、大きなmallocにおいてhugepageに問い合わせる。

これはメモリフットプリントの小さな減少と共に、hugepageのサポートがないシステムで小さな性能向上(〜0.2-0.9%)をもたらす。

hugepageサポートが有効化されている最近のLinuxカーネルにおいては、典型的な設定で7-12%のメモリ消費量を増加させるのと引き換えに、最大4%程度、性能を向上させる。

ハードウェアによる、改善された2MBのページサポートがあるHaswellや他の最近のCPUでは、より有効だろう。

メモリ管理の速度的コストを低減する実装。hugepageがどういったものであるかの説明がないためにわかりづらいが、これはソフトウェア的なメモリ管理のコストと、ハードウェア的なメモリ管理のコストの両面で有用な変更になる。

ソフトウェア的な面から言うと、C言語上でメモリを確保するmallocというのは、内部的に排他処理やリスト管理が必要であるため、基本的でありながら速度的コストの高い処理である。ので、どうせ使用することがわかっているメモリであれば、細かいサイズで複数回mallocを呼ぶよりも、一括して確保してしまえば効率がいい。また、mallocされた領域の管理コストもmallocの回数が多ければ多いほど高く付く。

ハードウェア的な面から言うと、CPUはCPUで、プロセスが論理的なメモリ空間(32bitなら4GiBの空間)内のどこをどのくらい実際に使用しているか、というのを管理し、物理メモリと対応付けている。その管理はバイト単位ではなくページ単位で行っており(ページング)、1ページが4KiB(12bitのアドレス空間)である。4KiBのページ群をフラットに管理すると効率が悪いため、x86-64ではページ番号として扱う36bit(64bitの総アドレス空間 - 無効16bit - ページ内オフセットの12bitアドレス空間)を9bitごとに4つに分け、さらに階層化がなされている。つまりあるメモリにアクセスしようとした場合、上位から9bit分ずつのテーブルを4回参照して(PTE)4KiBのページに辿り着く。

が、現在の巨大なメモリ空間では4KiBは小さすぎて、これまた効率が悪い。そこで登場するのがhugepageで、考え方としては上記の階層のうち最下層を無視して、12+9=21bit空間、つまり2MiBで1ページとしてしまう。こうすると、3回の参照でページまで辿り着くことができ、PTEとそのキャッシュであるTLEアクセスの省力化となる。また、2MiBのページを一体に扱うことで、フレームバッファなどの「メモリブロック中のどこかを参照する場合は、その中の他の場所も参照する可能性が高い」メモリにおいて、その一部が4KiBごとにフラグメントしてしまう可能性も排除できる。

ただし、メモリを大きな単位で(大雑把に)扱うようになるため、2MiBがフルに活用されない場合は「CPU的には割り当て済みだけと実際には使われない」半端な領域ができる。このため、hugepageの仕組みは速度と容量のトレードオフとなる。全てのページが2MiBではあまりに非効率であるため、実際には従来の4KiBページとhugepageは共存し、確保するメモリサイズによって使い分けられる。組み込みシステムではよくある仕組みだ。

hugepageは以前には特殊な仕掛けを使用し、ソフトウェア側でも意識してコードを書く必要があったが、LinuxがネイティブにサポートしたことでTransparent(透過的)、つまり殆ど意識すること無く使用可能になった。

ソフトウェア面の工夫と、ハードウェアの機能・特性の活用という2面から、使用するメモリをまとめて大きなブロックとして扱おうというのがこのパッチになる。

x264r2353

commit 0a6825c6fe9ee5d2ded73e8c43be3e6dfd6a7658

Author: Henrik Gramner

Date: Fri Jul 5 21:15:54 2013 +0200

x86: SSSE3 implementation of pixel_sad_x3 and pixel_sad_x4

x86: pixel_sad_x3とpixel_sad_x4のSSSE3実装。

x264r2352

commit ac5d88116e39bab7a63050ce62bedd5d543902ca

Author: Henrik Gramner

Date: Fri Jul 5 21:15:49 2013 +0200

x86: Faster AVX2 pixel_sad_x3 and pixel_sad_x4

x86: AVX2 pixel_sad_x3とpixel_asd_x4を高速化。

x264r2351

commit 348f1b7f91319d0ac059a2067dc5c9f539df5889

Author: Diogo Franco (Kovensky)

Date: Tue Jul 23 22:17:44 2013 -0300

configure: Support cygwin64

configure: cygwin64をサポート。

ビルドにのみ影響。

x264r2350**STABLE**

commit 3361d59a0a83dcb8b321cc0eb8e6ba68ca49c7d4

Author: Derek Buitenhuis

Date: Fri Aug 9 13:39:27 2013 -0400

x86inc: Check for __OUTPUT_FORMAT__ having a value of "x64"

This is also a valid value for WIN64.

x86inc: __OUTPUT_FORMAT__が"x64"の値を持つかをチェック。

これはWIN64でも有効な値である。

ビルドにのみ影響。

x264r2349

commit f3d9a5839978125fa3f95b38460f8c8854feec24

Author: Anton Mitrofanov

Date: Tue Jul 23 14:11:50 2013 -0700

Fix cases in which intra refresh allowed prediction from disallowed pixels

intra refreshが、許可されないピクセルからの予測を許可してしまっていたケースを修正。

x264r2348

commit 88cff5ab9b6f3be1bb2edc5dd9f753dcc2b987e5

Author: Anton Mitrofanov

Date: Wed Aug 7 01:56:34 2013 +0400

Fix a few minor bugs found with a static analyzer

静的解析ツールで発見されたいくつかの小さなバグを修正。

x264r2347

commit 613548f7f9655504cd8fdf0f00ccf2df9e9768eb

Author: Jason Garrett-Glaser

Date: Fri Jul 12 16:07:35 2013 -0700

Fix AVX2 detection bug with "limit CPUID" enabled in BIOS

BIOSで"limit CPUID"が有効にされている場合のAVX2の検出バグを修正。

x264r2346

commit 0c738e30ec025f0effdb62802685fce40cf20057

Author: Henrik Gramner

Date: Fri Jul 5 21:15:43 2013 +0200

x86: Remove X264_CPU_SSE_MISALIGN functions

Prevents a crash if the misaligned exception mask bit is cleared for some reason.

Misaligned SSE functions are only used on AMD Phenom CPUs and the benefit is miniscule.

They also require modifying the MXCSR control register and by removing those functions

we can get rid of that complexity altogether.

VEX-encoded instructions also supports unaligned memory operands. I tried adding AVX

implementations of all removed functions but there were no performance improvements on

Ivy Bridge. pixel_sad_x3 and pixel_sad_x4 had significant code size reductions though

so I kept them and added some minor cosmetics fixes and tweaks.

x86: X264_CPU_SSE_MISALIGN関数を削除。

何がしかの理由でmisaligned exception mask bitがクリアされていた場合のクラッシュを防ぐ。

Misaligned SSE関数はAMD Phenom CPUでのみ使用され、その利得は非常に小さい。

それらはMXCSRコントロールレジスタを修正することも要求するが、それら関数を削除することでその複雑性も共に取り除くことができる。

VEX-encoded命令は非アラインメモリオペランドもサポートする。全ての削除された関数のAVX実装を追加しようと試みたが、Ivy Bridge上では全く性能の向上がなかった。しかしpixel_sad_x3とpixel_sad_x4には有意なコードサイズの減少があったため、それらは保持することとし、いくつかの小さなコスメティックスと調整を追加した。

X264_BUILD 136。

x264r2345

commit f0c1c53d58420d209f0fb7b63e49125ab1c85aa7

Author: Jason Garrett-Glaser

Date: Thu Jun 20 15:51:39 2013 -0700

Tweak i16x16-delta-quant-avoidance code

Don't omit the delta quant if it'd raise the quantizer to do so; this fixes

a rare flickering issue caused by deblocking.

i16x16-delta-quant-avoidanceのコードを調整。

delta quantを省略することによりquantizerを上昇させる場合には省略しない; これはデブロックにより引き起こされる稀なflickering問題を修正する。

FIXME: コードを見たほうが良さそうだが時間がない。

x264r2344

commit 23ef03667f4218c8bed152b177eb5e66e9781687

Author: Jason Garrett-Glaser

Date: Sun Jun 9 09:06:27 2013 -0700

x86: faster AVX2 iDCT, AVX deblock_luma_h, deblock_luma_h_intra

x86: AVX2 iDCT, AVX deblock_luma_h, deblock_luma_h_intraを高速化。

x264r2343

commit 4d24facd4170c6bed3f5205381b6fe2f2974bed3

Author: Lucien

Date: Mon Jun 17 18:28:09 2013 +0000

Add new color primaries, transfer characteristics, matrix coefficients

新たなcolor primary, transfer characteristics, matrix coefficientsを追加。

X264_BUILD 135。

今のところ使用する機会は少ないかもしれないが、HEVCで主に使われるであろうbt2020などが追加になっている。

x264r2342

commit 8c8b46f1fbcf1c4b684afff9160d074077909965

Author: Jason Garrett-Glaser

Date: Fri May 31 17:01:29 2013 -0700

Add "--stitchable" option for segmented encoding

Stops x264 from attempting to optimize global stream headers, ensuring that

different segments of a video will have identical headers when used with

identical encoding settings.

segmentエンコーディングのために"--stitchable"オプションを追加。

x264がglobal stream headerを最適化しようとするのを止め、ビデオの異なるsegmentが、同一のエンコーディング設定において、同一のヘッダを持つように保証する。

X264_BUILD 134。

同じヘッダを持っていれば、ヘッダ領域を除いたバイトデータを単に後ろに結合するだけで連続再生可能なデータとなる(ちょっと語弊があるけど)。それをstitchableと呼んでいる。x264を使用したシステムを組む場合、そうできたほうが便利なケースがあるので用意されたのだろう。

同じ意味を持つヘッダでも、ビット単位で同一でないと、解析して意味を考慮しないと同一性を保証できないため、muxerにとっては負担となる。このオプションを指定すればヘッダが同一であることを簡単に確認できるので、扱いやすい。

x264r2341

commit e4ac506d2cbeceb7d1cbe02e2e69dac6ac57975a

Author: Jason Garrett-Glaser

Date: Thu Jun 27 08:29:06 2013 -0700

Interface: if vbv-maxrate < bitrate, set bitrate = vbv-maxrate

This probably makes more sense to the user than setting vbv-maxrate = bitrate,

as before.

インターフェース: vbv-maxrate < bitrate の場合、 bitrate = vbv-maxrate とする。

以前のように vbv-maxrate = bitrate とするよりもユーザーにとって妥当だろう。

x264r2340

commit 11d2203c5b1d8d64f7b647b5f01e212eb97aab12

Author: Anton Mitrofanov

Date: Tue May 28 05:02:42 2013 -0700

OpenCL cosmetics

OpenCLのコスメティックス。

x264r2339

commit 585324fee380109acd9986388f857f413a60b896

Author: Anton Mitrofanov

Date: Tue Jun 18 00:16:33 2013 +0400

Fix possible crash when writing very large filler NALUs

Bitstream-reallocation function didn't handle the case of filler.

とても大きなfiller NALUを書き込もうとする際にクラッシュする可能性を修正。

Bitstream-reallocation関数はfillerのケースを扱っていなかった。

x264r2338

commit 8be78d3df47a43cfd8dde047026e7f238030e253

Author: Loren Merritt

Date: Mon Jun 17 11:27:09 2013 -0700

Fix build with PIC on some systems

いくつかのシステムにおけるPICビルドの修正。

ビルドにのみ影響。

x264r2337

commit f45158c6f20007ef8f17059dfc084c5b35b74f44

Author: Henrik Gramner

Date: Sun Jun 2 18:41:17 2013 +0200

Fix potential misaligment crash in AVX2 denoise_dct

AVX2 denoise_dctにおける潜在的な非アラインによるクラッシュを修正。

x264r2336

commit d5dbf461bbb4564b5aeb2c88f3b42e38a60dafc1

Author: Anton Mitrofanov

Date: Tue May 28 01:48:15 2013 +0400

Fix building with compilers without inline asm support

Also fix crash in high bit depth builds compiled with unaligned stack.

inline asmをサポートしないコンパイラでのビルドを修正。

また、非アラインスタックでの高ビット深度ビルドにおけるクラッシュを修正。

x264r2335

commit 3af33c98a60a62bf9dee9ccb0f2475b8124a5354

Author: Anton Mitrofanov

Date: Wed May 22 22:43:59 2013 +0400

Fix compilation with OpenCL on MacOS X

Also fix crash in the case of OpenCL error during encoding.

MacOS X上でのOpenCL付きコンパイルを修正。

また、エンコード中にOpenCLエラーが発生した場合のクラッシュを修正。

x264r2334

git-id : a3ac64b8b467eea1264c0053022893bc84b2e9a2

Author : Anton Mitrofanov

Date: Mon May 6 22:51:11 2013 +0400

OpenCL support improvement/refactoring

Autoload the OpenCL library so that it's not required to run an openCL-enabled

build of x264.

Update X264_BUILD, which should have been changed with the first patch.

OpenCLサポートの改善・リファクタリング。

OpenCLのライブラリを自動読み込みすることでopenCL-enabledでビルドされたx264を実行する必要がなくなった。

最初のパッチで変更されるべきだったのだが、X264_BUILDを更新。

X264_BUILD 133。

x264r2333

git-id : c47347c01eb4d9933e2d9705f44707dbb396f611

Author : Jason Garrett-Glaser

Date: Thu May 16 13:51:37 2013 -0700

x86: shave a few instructions off AVX deblock

x86: AVX deblockからいくらかの命令を削減。

x264r2332

git-id : b547a4ea1169411610855002db9a8182b1e73314

Author : Henrik Gramner

Date: Tue May 14 18:57:40 2013 +0200

x86: AVX2 dequant_4x4_dc

x86: AVX2 dequant_4x4_dc。

x264r2331

git-id : 907573d3f7873b7600cc94d1e287d52628e11766

Author : Henrik Gramner

Date: Tue May 14 18:53:12 2013 +0200

x86: AVX2 high bit-depth dequant

x86: AVX2高ビット深度逆量子化。

x264r2330

git-id : 442c6a420f8727d2f4087e9f3f317fb1774b9262

Author : Jason Garrett-Glaser

Date: Thu May 9 17:20:05 2013 -0700

x86-64: 64-bit variant of AVX2 hpel_filter

~5% faster than 32-bit.

x86-64: AVX2 hpel_filterの64-bit版。

32-bitより〜5%速い。

x264r2329

git-id : 26a6451591cd7cd25fcfeeacee3850e5dd7a7f7e

Author : Henrik Gramner

Date: Mon May 6 18:41:24 2013 +0200

x86: AVX2 high bit-depth denoise_dct

28->15 cycles

Also reorder instructions to use fewer registers, 3 cycles faster on Ivy Bridge with 64-bit Windows.

x86: AVX2高ビット深度denoise_dct。

28→15サイクルに。

また、使用レジスタをより少なくするために命令順を変更し、64-bit WindowsでのIvy Bridgeで3サイクル高速化。

x264r2328

git-id : db95d6af63bec7839b3d3e1f2eb67b8689dc8170

Author : Henrik Gramner

Date: Sat May 4 18:48:58 2013 +0200

x86: AVX2 high bit-depth quant

quant_4x4: 13->6 cycles

quant_4x4_dc: 14->8 cycles

quant_8x8: 47->24 cycles

quant_4x4x4: 48->25 cycles

x86: AVX2高ビット深度量子化。

quant_4x4: 13→6サイクルに。

quant_4x4_dc: 14→8サイクルに。

quant_8x8: 47→24サイクルに。

quant_4x4x4: 48→25サイクルに。

x264r2327

git-id : 327386f70836507cb44266e5d71bd1d744fe3d78

Author : Jason Garrett-Glaser

Date: Wed May 1 14:32:11 2013 -0700

x86: AVX2 add16x16_idct_dc

27 -> 19 cycles

x86: AVX2 add16x16_idct_dc。

27→19サイクルに。

x264r2326

git-id : c82db4ed07d4a69a84ac99d5e79e32f61141494f

Author : Jason Garrett-Glaser

Date: Mon Apr 29 16:16:54 2013 -0700

x86: faster AVX2 quant_4x4x4

10->9 cycles

x86: AVX2 quant_4x4x4を高速化。

10→9サイクルに。

x264r2325

git-id : b79f4a6e460b00c85f0ee67b03299bf1d15dd48c

Author : Jason Garrett-Glaser

Date: Sat Apr 27 21:03:32 2013 -0700

x86: AVX2 intra_sad_x3_8x8c

30->22 cycles

x86: AVX2 intra_sad_x3_8x8c。

30→22サイクルに。

x264r2324

git-id : 2c0bca3f798e20133f61c3517202942e873e00d6

Author : Henrik Gramner

Date: Sun Apr 28 11:11:03 2013 +0200

x86: AVX2 high bit-depth intra_sad_x3_8x8

43->24 cycles

x86: AVX2高ビット深度intra_sad_x3_8x8。

43→23サイクルに。

x264r2323

git-id : b2c30e1a470181b591619b211ae0342e9cc8aac9

Author : Jason Garrett-Glaser

Date: Wed Apr 24 14:22:15 2013 -0700

x86: AVX2 deblock strength

30->18 cycles

x86: AVX2 deblock strength。

30→18サイクルに。

x264r2322

git-id : 37edf16c1955cfc9d2843024af0fa7aa6268ad90

Author : Henrik Gramner

Date: Wed May 1 17:42:48 2013 +0200

x86: Faster high bit-depth intra_sad_x3_4x4

20->16 cycles on Ivy Bridge

x86: 高ビット深度intra_sad_x3_4x4を高速化。

Ivy Bridge上で20→16サイクルに。

x264r2321

git-id : a9ed051f2bc73c9bfeff006d7328bd2bc99ce147

Author : Jason Garrett-Glaser

Date: Tue Apr 30 17:36:46 2013 -0700

x86: faster SSSE3 hpel

~7% faster using the pmulhrsw trick from mc_chroma.

x86: SSSE3 hpelを高速化。

mc_chroma由来のpmulhrswのトリックを使用し〜7%高速化。

x264r2320

git-id : 9373d5fa6e7a5cc5bcc756125cbc2e7fe058ea43

Author : Jason Garrett-Glaser

Date: Mon Apr 29 14:22:23 2013 -0700

x86-64: faster SSSE3 trellis

~2% faster trellis.

x86-64: SSSE3 trellisを高速化。

trellisが〜2%高速に。

x264r2319

git-id : 2a716040eb8b89efd92ea61ab08ecc41bf0b8623

Author : Jason Garrett-Glaser

Date: Thu May 2 17:10:26 2013 -0700

x86: 32-byte align the stack if possible

Avoids the need for manual 32 byte array alignment on compilers that support

-mpreferred-stack-boundary.

x86: 可能ならスタックを32-byteアラインするように。

-mpreferred-stack-boundaryをサポートするコンパイラ上で、手動での配列の32byteアラインメントを不要にする。

x264r2318

git-id : eefaff1128ea9eb8dcd6796957ca5e56727337b8

Author : Henrik Gramner

Date: Sat May 11 23:39:09 2013 +0200

x86inc: Utilize the shadow space on 64-bit Windows

Store XMM6 and XMM7 in the shadow space in functions that clobbers them.

This way we don't have to adjust the stack pointer as often,

reducing the number of instructions as well as code size.

x86inc: 64-bit Windowsにおいてシャドウスペースを活用するように。

XMM6とXMM7を頻繁に叩く関数で、それらをシャドウスペースに格納する。

この方法によってスタックポインタを頻繁に調整する必要がなくなり、コードサイズと共に命令数を削減できる。

x264r2317

git-id : b4be6e56629cf8fdcf53adc6b879969d8f6760b3

Author : Henrik Gramner

Date: Fri May 3 23:06:10 2013 +0200

x86: Don't use explicitly aligned versions of SAD on AVX CPUs

On modern CPUs movdqu isn't slower than movdqa when used on aligned data and using the same code in both cases saves cache.

This was already done for the high bit-depth AVX2 implementation but the aligned version still exists as dead code so remove that.

x86: AVX CPUでSADの明示的なアラインのバージョンを使用しないようにした。

現代的なCPUでは、アラインされたデータ上で使用された場合に、movdquはmovdqaより遅くはなく、両方のケースで同じコードを使うことはキャッシュの節約になる。

これは高ビット深度AVX2実装では既に行われていたが、アラインバージョンはデッドコードとして存在してしまうため、それを削除した。

少し前にUtVideoの作者さんがこの辺りに関してツイートしていたような。と思ってMentionしたら、或るプログラマの一生 » SSE の整数ロードストア命令のベンチマークの記事を教えて頂いたので興味ある方は是非どうぞ。

x264r2316

git-id : 99f553ec300d928d23522304ebf4818574b85ed3

Author : Henrik Gramner

Date: Fri May 3 20:18:03 2013 +0200

x86: Add missing initializations for high bit-depth sad_aligned

x86: 高ビット深度sad_alignedに対して不足していた初期化を追加。

x264r2315

git-id : 42f2f78a05985a49fea0fb1bff050c95257810bb

Author : Jason Garrett-Glaser

Date: Mon May 13 16:52:18 2013 -0700

x86: add Jaguar CPU detection

x86: JaguarのCPU検出を追加。

x264r2314

git-id : f12a17f5ecde41148256cb0c132cb31ac6602f3e

Author : Henrik Gramner

Date: Tue May 7 17:21:03 2013 +0200

x86inc: Remove .rodata kludges

The Mach-O bug was fixed in yasm 0.8.0 and we don't support versions that old.

a.out was superseded by ELF on sane systems a few decades ago.

x86inc: .rodataの暫定対処を削除。

Mach-0バグはyasm 0.8.0で修正されており、そのような古いバージョンを我々はサポートしない。

a.outはまともなシステムでは数十年前にELFに取って代わられている。

x264r2313

git-id : c3b166a6cf55afaeea5bbc94ebb275b92efbd3d8

Author : Henrik Gramner

Date: Sat May 4 16:21:32 2013 +0200

checkasm: Use 64-bit cycle counters

Prevents overflows that can occur in some cases.

checkasm: 64-bitのサイクルカウンタを使用。

いくつかのケースで起こりうるオーバーフローを抑止。

x264r2312

git-id : e943696e98ba9a75f5100c5692e39708ff2cc422

Author : Henrik Gramner

Date: Fri May 10 13:55:32 2013 +0200

checkasm: Fix stack alignment bug

checkasm: スタックアラインメントのバグを修正。

x264r2311

git-id : b1749e204d14087a768990e8bfe964d343e0b9a9

Author : Jason Garrett-Glaser

Date: Wed May 8 10:48:41 2013 -0700

Fix invalid memcpy in sliced-threads

Likely didn't actually break in practice, but memcpy with src==dst

is incorrect.

sliced-threadsでの無効なmemcpyを修正。

実際には壊れてはいなかったようだが、src==dstであるmemcpyは不正である。

src領域とdst領域が重なる場合の仕様は規格上未定義動作のはず。

x264r2310

git-id : 76a5c3a19f97cd34b65aeff050de4042b054bc65

Author : Jason Garrett-Glaser

Date: Mon Apr 29 12:14:01 2013 -0700

Fix two bugs in slice-min-mbs and slices-max

Slices-max broke slice-max-size when slice-max wasn't used.

Slice-min-mbs broke in rare cases near the end of a threadslice.

slice-min-mbsとslices-maxの2つのバグを修正。

Slices-maxはslice-maxが使われていない場合のslice-max-sizeを壊していた。

Slice-min-mbsはthreadsliceの終わり付近で稀に壊れていた。

x264r2309

git-id : 3b1f1f71459b54b976588b871edc7f459b4d0434

Author : Jason Garrett-Glaser

Date: Thu Apr 4 18:00:23 2013 -0700

x86: SSSE3 LUT-based faster coeff_level_run

~2x faster coeff_level_run.

Faster CAVLC encoding: {1%,2%,7%} overall with {superfast,medium,slower}.

Uses the same pshufb LUT abuse trick as in the previous ads_mvs patch.

x86: 表引きベース(LUT-based)のより高速なSSSE3 coeff_level_run。

coeff_level_runを〜2倍高速化。

CAVLCエンコーディングを高速化: 全体で{superfast,medium,slower}に対しそれぞれ{1%,2%,7%}高速。

以前のads_mvsパッチ内のものと同じpshufb LUTの(正統でない)トリックを使用。

r2287と同じで、CAVLCではほぼ必ず通るパスのため、着実に高速化する。

x264r2308

git-id : c05bf544b659510b9008c1037fd8887e8917d30c

Author : Jason Garrett-Glaser

Date: Mon Mar 25 14:03:37 2013 -0700

x86-64: BMI2 cabac_residual functions

x86-64: BMI2 cabac_residual関数。

x264r2307

git-id : 437f808579754b5674fb6183331e8ca9bcf53647

Author : Jason Garrett-Glaser

Date: Wed Mar 20 15:08:35 2013 -0700

x86: SSSE3 ads_mvs

~55% faster ads in benchasm, ~15-30% in real encoding.

~4% faster "placebo" preset overall.

x86: SSSE3 ads_mvs。

benchasmでadsが〜55%高速化、実際のエンコーディングでは〜15-30%程度。

"placebo"プリセットにおいて全体で〜4%高速化。

x264r2306

git-id : 2ad961f2d6fc681db6fc87f2c0ca68ff2a00e65e

Author : Henrik Gramner

Date: Tue Apr 16 23:27:53 2013 +0200

x86: AVX2 pixel_ssd_nv12_core

x86: AVX2 pixel_ssd_nv12_core。

x264r2305

git-id : 40406b804105964d6b5abea38833d69f6d617815

Author : Henrik Gramner

Date: Tue Apr 16 23:27:50 2013 +0200

x86: AVX2 high bit-depth pixel_ssd

x86: AVX2高ビット深度pixel_ssd。

x264r2304

git-id : c2852be748c66f1ff25f38133d5efbd6059bed6c

Author : Henrik Gramner

Date: Tue Apr 16 23:27:46 2013 +0200

x86: AVX2 high bit-depth pixel_sad_x3/pixel_sad_x4

Also reduce the number of xmm registers used by sse2/ssse3 pixel_sad_x3.

x86: AVX2高ビット深度pixel_sad_x3/pixel_sad_x4

また、sse2/ssse3 pixel_sad_x3で使用されるxmmレジスタの数を削減。

x264r2303

git-id : fa9dcd02ea386e46314eb0c518b0b5763ef73c80

Author : Henrik Gramner

Date: Tue Apr 16 23:27:43 2013 +0200

x86: AVX2 high bit-depth vsad

x86: AVX2高ビット深度vsad。

x264r2302

git-id : 567d03619b0af415362454eb20066e0167266a43

Author : Henrik Gramner

Date: Tue Apr 16 23:27:39 2013 +0200

x86: AVX2 high bit-depth pixel_sad

Also use loops instead of duplicating code; reduces code size by ~10kB with

negligible effect on performance.

x86: AVX2高ビット深度pixel_sad。

また、コードを複製せずループを使うようにした; 性能に些細な影響があるもののコードサイズを〜10kB削減。

x264r2301

git-id : 6cc9f169844cc84a7da8cc4fbf08a3f5dea86c63

Author : Henrik Gramner

Date: Tue Apr 16 23:27:35 2013 +0200

x86: AVX2 high_bit_depth pixel_avg2, get_ref, mc_copy_w16, mc_luma

Also reduce the number of xmm registers used by mc_copy_* to avoid

saving and restoring xmm6 and xmm7 on 64-bit Windows.

x86: AVX2高ビット深度pixel_avg2、get_ref、mc_copy_w16、mc_luma。

また、64-bit Windows上でxmm6とxmm7の保存・復元を避けるために、mc_copy_*で使用されるxmmレジスタの数を削減した。

レジスタの保存に関することは以前にも書いた気がするのだけれども。

多くのCPUでは、普通はCPUメーカーが定める、ABIと呼ばれる決まり事があり、プログラミング言語の種類に関わらず、一般的に守るべきこととされている。そのうちでも例えば、「関数の戻り値はEAXで返すよ」などの関数呼び出しに関するものを、「呼出規約」と呼ぶ。

ほとんどのレジスタが同じ機能を持ち、ほとんどの命令が全てのレジスタに適用出来る、新しめのフラットな構成のRISC CPUでは、ABIの一部を敢えて守らないことも不可能ではない。が、各種ライブラリのバイナリとの互換性がなくなるので、道は踏み外さないのが普通だ。そして歴史あるCISCのx86では、ABIを前提に作られている命令もあるので、実質的に守らざるを得なかったりもする。

その呼出規約には、関数を呼ぶ側で、「呼んだら内容が上書きされる可能性がある」レジスタが定められている。例えば上記「関数の戻り値はEAXで返すよ」の規則では、EAXは戻り値に使われるので、当然上書きされる。もし関数を呼ぶ側が、関数呼び出し前のEAXの内容を、関数呼び出し後も使いたいのなら、それは関数呼び出し前に、メモリ等に別途保存(退避)しておかねばならない。

その逆に、関数を呼ぶ側では、退避しておかなくてもよいレジスタも定められている。すると、呼び出される関数は、もしそのレジスタを自関数内で使用したいのであれば、自分でレジスタ上書き前に退避し、レジスタ使用後に復元しなければない。

これは当然無駄なメモリアクセスとなり、SIMD化できるようなものでもないので、避けられるなら避けるのが最も効率が良い。

x264r2300

git-id : c3711285a6dd1343197ac3e53bb95acf99c6cb42

Author : Henrik Gramner

Date: Tue Apr 16 23:27:32 2013 +0200

x86: AVX2 nal_escape

Also rewrite the entire function to be faster and drop the AVX version which is no longer useful.

x86: AVX2 nal_escape。

また、関数全体を書きなおし、もう有用ではないAVXバージョンをドロップした。


前:x264-changelog-jp r2200-r2299 - 次:x264-changelog-jp r2400-r2499?

最終更新時間:2013年08月31日 00時08分34秒