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

x264-changelog-jp r2200-r2299

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

x264-changelog-jp r2200-r2299

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

前:x264-changelog-jp r2100-r2199 - 次:x264-changelog-jp r2300-r2399

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

x264r2299

git-id : 255271fd7999b6b7ff7d65b7b8de1a2dc8919b1a

Author : Henrik Gramner

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

x86: AVX memzero_aligned

x86: AVX memzero_aligned。

x264r2298

git-id : 43632cc8a9115c076204f46e31a5d5c3e58bf934

Author : Henrik Gramner

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

x86: AVX2 predict_16x16_dc

x86: AVX2 predict_16x16_dc。

x264r2297

git-id : dcad117131f0e0b5032bf5ca8c27def7fcdce17f

Author : Henrik Gramner

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

x86: AVX2 predict_8x8c_p/predict_8x16c_p

x86: AVX2 predict_8x8c_p/predict_8x16c_p。

x264r2296

git-id : f5bff68b16e3125dc95705d060c89935a298f0ff

Author : Henrik Gramner

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

x86: AVX2 predict_16x16_p

Also fix the AVX implementation to correctly use the SSSE3 inline asm

instead of SSE2.

x86: AVX2 predict_16x16_p。

また、SSE2の代わりにSSSE3インラインasmを正しく使用するため、AVX実装を修正。

x264r2295

git-id : 92eb201b65cb9338500135bda1e2ee4d6861727c

Author : Henrik Gramner

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

x86: AVX high bit-depth predict_16x16_v

Also restructure some code to reduce code size of various functions,

especially in high bit-depth.

x86: AVX高ビット深度predict_16x16_v。

また、特に高ビット深度において、様々な関数のコードサイズを削減するため、いくつかのコードを再構成。

x264r2294

git-id : 16f3261076c7159aeea902e68ca064c6d0a2cfd8

Author : Henrik Gramner

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

x86: AVX2 high bit-depth predict_4x4_h

x86: AVX2高ビット深度predict_4x4_h。

x264r2293

git-id : a38b5fc6ec7348342d8ee4ff21abf3e82c5f7bbf

Author : Henrik Gramner

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

x86: AVX2 high bit-depth predict_16x16_h

x86: AVX2高ビット深度predict_16x16_h。

x264r2292

git-id : 89f8263b141492a3b45274616fa0327289329c26

Author : Henrik Gramner

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

x86: AVX2 high bit-depth predict_8x8c_h/predict_8x16c_h

x86: AVX2高ビット深度predict_8x8c_h/predict_8x16c_h。

x264r2291

git-id : 78b8af872f49aeaa3727ac4e0c8d3b53f0716f51

Author : Henrik Gramner

Date: Tue Apr 16 23:26:47 2013 +0200

x86util: Support ymm registers in HADD macros

x86util: HADDマクロ内でymmレジスタのサポート。

x264r2290

git-id : d07b421cf19fc4d77f0bff9d4d6b11db27d81374

Author : Jason Garrett-Glaser

Date: Tue Feb 26 16:26:34 2013 -0800

x86: more AVX2 framework, AVX2 functions, plus some existing asm tweaks

AVX2 functions:

mc_chroma

intra_sad_x3_16x16

last64

ads

hpel

dct4

idct4

sub16x16_dct8

quant_4x4x4

quant_4x4

quant_4x4_dc

quant_8x8

SAD_X3/X4

SATD

var

var2

SSD

zigzag interleave

weightp

weightb

intra_sad_8x8_x9

decimate

integral

hadamard_ac

sa8d_satd

sa8d

lowres_init

denoise

x86: さらなるAVX2フレームワーク、AVX2関数、そして既存asmの調整。

AVX2関数:

mc_chroma

intra_sad_x3_16x16

last64

ads

hpel

dct4

idct4

sub16x16_dct8

quant_4x4x4

quant_4x4

quant_4x4_dc

quant_8x8

SAD_X3/X4

SATD

var

var2

SSD

zigzag interleave

weightp

weightb

intra_sad_8x8_x9

decimate

integral

hadamard_ac

sa8d_satd

sa8d

lowres_init

denoise

ここからしばらく、Haswellで導入されるAVX2対応のコミットが続く。

どの程度の成果が期待されるかはDark_Shikari氏が書いているし、それをrigaya氏がrigayaの日記兼メモ帳 x264のAVX2最適化で要約してくれているので、そちらに譲る。

x264r2289

git-id : e228f65488b02967bc450bbe3b92ac44eb0088d7

Author : Loren Merritt

Date: Mon Feb 25 21:16:45 2013 +0000

x86inc: create xm# and ym#, analagous to m#

For when we want to mix simd sizes within one function.

x86inc: m#と類似の、xm#をym#作成。

一つの関数内でsimdのサイズを混在させたい場合のため。

analogous。

x264r2288

git-id : e916dfb774059bc2b63dfe88e32fa21f51abd2b7

Author : Jason Garrett-Glaser

Date: Fri Apr 5 16:08:35 2013 -0700

x86inc: fix AVX emulation of cmp(p|s)(s|d)

x86inc: cmp(p|s)(s|d)のAVXエミュレーションを修正。

x264r2287

git-id : 5b01ce105051144c4dd91866e1642cc8d7926c89

Author : Jason Garrett-Glaser

Date: Tue Feb 5 17:15:00 2013 -0800

x86-64: cabac_block_residual assembly

RDO: ~20% faster than C

Bitstream: ~50% faster than C

1-2% faster overall, highest on preset superfast/fast/medium.

x86-64: cabac_block_residualのアセンブリ。

RDO: Cより〜20%高速。

Bitstream: Cより〜50%高速。

全体で1〜2%高速、preset superfast/fast/mediumで最も顕著。

SkipやDirectなMBでない限りは必ず通るパスの高速化なので、地味ながら着実に性能を上げる。

x264r2286

git-id : 3a5f6c0aeacfcb21e7853ab4879f23ec8ae5e042

Author : Steve Borho

Date: Thu Feb 21 12:48:40 2013 -0600

OpenCL lookahead

OpenCL support is compiled in by default, but must be enabled at runtime by an

--opencl command line flag. Compiling OpenCL support requires perl. To avoid

the perl requirement use: configure --disable-opencl.

When enabled, the lookahead thread is mostly off-loaded to an OpenCL capable GPU

device. Lowres intra cost prediction, lowres motion search (including subpel)

and bidir cost predictions are all done on the GPU. MB-tree and final slice

decisions are still done by the CPU. Presets which do not use a threaded

lookahead will not use OpenCL at all (superfast, ultrafast).

Because of data dependencies, the GPU must use an iterative motion search which

performs more total work than the CPU would do, so this is not work efficient

or power efficient. But if there are spare GPU cycles to spare, it can often

speed up the encode. Output quality when OpenCL lookahead is enabled is often

very slightly worse in quality than the CPU quality (because of the same data

dependencies).

x264 must compile its OpenCL kernels for your device before running them, and in

order to avoid doing this every run it caches the compiled kernel binary in a

file named x264_lookahead.clbin (--opencl-clbin FNAME to override). The cache

file will be ignored if the device, driver, or OpenCL source are changed.

x264 will use the first GPU device which supports the required cl_image

features required by its kernels. Most modern discrete GPUs and all AMD

integrated GPUs will work. Intel integrated GPUs (up to IvyBridge) do not

support those necessary features. Use --opencl-device N to specify a number of

capable GPUs to skip during device detection.

Switchable graphics environments (e.g. AMD Enduro) are currently not supported,

as some have bugs in their OpenCL drivers that cause output to be silently

incorrect.

Developed by MulticoreWare with support from AMD and Telestream.

OpenCL lookahead。

OpenCLのサポートはデフォルトでコンパイルされるが、--openclのコマンドラインフラグで実行時に有効にする必要がある。

OpenCLサポートのコンパイルにはperlが必要である。perlの要求を避けるにはconfigure --disable-openclを使うこと。

有効にされた場合、lookaheadのスレッドは、大部分がOpenCLを利用可能なGPUデバイスにオフロードされる。

Lowres intraコスト予測、Lowres動き検索(サブピクセルを含む)、bidirコスト予測は全てGPUで行われる。

MB-treeと最終的なスライス決定はまだCPUで行われる。

threaded lookaheadを使わないpreset(superfast, ultrafast)はOpenCLを全く使わない。

データの依存関係から、GPUはCPUが行うよりも総量の多い作業である、反復的動き検索を使わねばならず、

そのためこれは作業的にまたは電力的に効率的ではない。

しかしそこに割り振り可能な余剰なGPUサイクルがあるのであれば、それはエンコードを高速化できることが多い。

OpenCL lookaheadが有効時の出力クオリティは、(同じくデータの依存関係によって、)

ごくわずかにCPUでのクオリティよりも悪いことが多い。

x264はOpenCLカーネルを機器上で実行する前に、それらをコンパイルせなばならず、

そしてそれを毎回行うのを避けるため、コンパイルされたカーネルバイナリをx264_lookahead.clbinという名前のファイル

(--opencl-clbin FNAMEでオーバーライド可能)にキャッシュする。

このキャッシュファイルは、デバイス、ドライバ、またはOpenCLのソースが変わった際は無視される。

x264は、カーネルが要求する、必要なcl_image機能をサポートする最初のGPUデバイスを使う。

ほとんどの現代的な外部GPUと、全てのAMDの統合されたGPUは動作することだろう。

Intelの統合されたGPU(IvyBridgeまで)はそれらの必要な機能をサポートしない。

デバイスの検出時に利用可能なGPUをスキップするには、--opencl-device Nを使いその数を指定する。

切り替え可能なグラフィック環境(例えばAMD Enduro)は、

いくつかのOpenCLドライバにバグがあり、出力が暗に不正となるため、現在のところサポートされない。

AMDとTelestreamのサポートを受けMulticoreWareが開発。

おや、X264_BUILDが変わってない…?けどいいのかな?

x264としては初のGPUを使うエンコードの公式サポート。これまでにもGPU支援を実装する話は何度もあったが、みな途中で頓挫していたため、期待する向きも多かったろう。真の意味で効率が良いかは別として、確かに一定の範囲で高速化するようだ。

ドライバやライブラリの整備状況の問題から、現在のところWindows環境でのみサポートされる。

メガパッチではあるが、libx264本体に対する変更は驚くほど少ない。そういう意味ではGPUの進化を褒めるべきなのか、OpenCLのラッパーを褒めるべきなのか。上記で書いてあるもの以外では、weightpも一応GPUで実施されるようだ。

内部的には、結構細かな単位でGPU側の機能を関数化して呼んでいる。本来であればx264としての処理ステージごとにGPUに丸投げしてしまいたいのだろうが、流石にそうもいかないようだ。例えば動き検索なら、x264的には全動き検索が終わった結果だけくれればいいのだろうが、実装は動き検索内でのiterationごとに制御が返り、再びGPUを呼ぶようになっている模様。詳しく見ていないが、計算自体はGPUに投げても、結果の評価はCPU側で行うしかないのかもしれない。

訳者は実はGPU支援にあまり興味がないというか、苦労の割に貰いが少ないと思っていて、下手に書くとケチを付けることになってしまいそうなので多くは書かないでおこう。

x264r2285

git-id : e436158903c6171ce4abe78f03f013fe04f193bd

Author : Jason Garrett-Glaser

Date: Mon Mar 4 15:19:47 2013 -0800

weightp: improve scale/offset search, chroma

Rescale the scale factor if the offset clips. This makes weightp more effective

in fades to/from white (and an other situation that requires big offsets).

Search more than 1 scale factor and more than 1 offset, depending on --subme.

Try to find the optimal chroma denominator instead of hardcoding it.

Overall improvement: a few percent in fade-heavy clips, such as a sample from

Avatar: TLA.

weightp: chromaのscale/offsetの検索を改善。

offsetがクリップする場合、scale factorをrescaleする。

これは白へ、または白からのフェード(や、その他の大きなオフセットを要するシチュエーション)でのweightpをより効果的にする。

--submeによって、1より大きいscale factor、1より大きいoffsetを検索する。

chromaの分母をハードコーディングせず最適な値を検索しようと試みる。

全体の改善: 例えばAvatar: TLAからのサンプルのようにフェードの重いクリップにおいて、数%。

x264r2284

git-id : 389d06e8f93916b4fe5766ee4503380f2632ef79

Author : Jason Garrett-Glaser

Date: Tue Feb 19 13:48:44 2013 -0800

Add slices-max feature

The H.264 spec technically has limits on the number of slices per frame. x264

normally ignores this, since most use-cases that require large numbers of

slices prefer it to. However, certain decoders may break with extremely large

numbers of slices, as can occur with some slice-max-size/mbs settings.

When set, x264 will refuse to create any slices beyond the maximum number,

even if slice-max-size/mbs requires otherwise.

slices-maxの機能を追加。

H.264の仕様は技術的には1フレーム内のスライス数に制限を有している。

多数のスライスを要求するほとんどのユースケースは、敢えてそうしているため、x264は通常、その制限を無視する。

しかしながら、ある一定のslice-max-size/mbs設定では発生し得るような、極端に多数のスライスでは、特定のデコーダーがおかしくなる。

設定された場合、例えslice-max-size/mbsでの要求が矛盾しようとも、x264は最大値を超えるスライスを作成することを拒否する。

X264_BUILD 132。

x264r2283

git-id : f546e98eb8f9afd15fb7e8f95ec02fcf65155079

Author : Jason Garrett-Glaser

Date: Thu Feb 14 17:22:02 2013 -0800

Add slice-min-mbs feature

Works in conjunction with slice-max-mbs and/or slice-max-size to avoid overly

small slices.

Useful with certain decoders that barf on extremely small slices.

If slice-min-mbs would be violated as a result of slice-max-size, x264 will

exceed slice-max-size and print a warning.

slice-min-mbsの機能を追加。

slice-max-mbsやslice-max-sizeと複合で動作し過渡に小さなスライスを回避する。

極端に小さなスライスがお口に合わない、特定のデコーダに有用。

slice-max-sizeの結果にslice-min-mbsが違反する場合、x264はslice-max-sizeの側を破り、警告を表示する。

X264_BUILD 131。

そもそもスライスはRD比の悪化につながるので、画質・圧縮率の観点では可能な限りスライス数は小さいほうがよい。処理の並列可能度が高まるので高速化の可能性は高まるが、x264が一時期スライスベースのスレッディングサポートをやめていたように、我々の業界(どこだよ)ではあまり好まれていない。

しかし世の中にはそれを好むというか、積極的に使う業界もあり、そういった所でも使われるx264としてはそういった関連のオプションも増えていくのだろう。

個人的にはBlu-rayで要求される4を超えるスライスを使うことはないと思うので、興味を惹かれない。

x264r2282 **STABLE**

git-id : 1db46210d525856a8f9e59944913127287d956c5

Author : Anton Mitrofanov

Date: Tue Mar 26 18:56:21 2013 +0400

Disable mbtree asm with cpu-independent option

Results vary between versions because of different rounding results.

cpu-independentオプションでmbtreeのasmを無効化。

丸め処理の結果が異なることにより、バージョン間で結果が変化してしまう。

x264r2281

git-id : fceb3b197f5fcaded3943718c162b662b52b208f

Author : Anton Mitrofanov

Date: Tue Mar 26 18:30:00 2013 +0400

Show "avs: no" --disable-avs option instead of empty string

--disable-avsオプションで空文字列の代わりに"avs: no"を表示。

ビルド時(configure)の表示にのみ影響。

x264r2280

git-id : 68ee80a51f6f1de78877a9907e3efcbb1fe13ac6

Author : Tim Walker

Date: Tue Mar 19 23:42:43 2013 +0100

lavf input: don't use deprecated AVStream fields

Fixes building against newer libavcodecs from the Libav project.

lavf input: 非推奨のAVStreamのフィールドを使わないようにした。

Libav projectの新しめのlibavcodecに対するビルドを修正する。

x264r2279

git-id : 5980580d5a4d32eebf32b2f274807dd4aa68836b

Author : Anton Mitrofanov

Date: Tue Mar 26 19:54:36 2013 +0400

Fix y4m input with C420paldv colorspace

C420paldv色空間でのy4m入力を修正。

x264r2278

git-id : 580cc69707f6996dad8544d6ef0d5a8bbc1b5864

Author : Jason Garrett-Glaser

Date: Sat Mar 2 01:22:29 2013 -0800

x86: correctly check stack alignment for Atom hadamard_ac

Regression in r2265 (only affected compilers with broken stack alignment,

like ICL on win32).

x86: Atomのhadamard_acに対し正しくスタックアラインメントのチェックをするようにした。

r2265でのレグレッション(win32でのICLのような、壊れたスタックアラインメントのコンパイラにのみ影響していた)。

x264r2277

git-id : b3c15fcf677a4ceb59c8f4adc39dc93ecd06ff8a

Author : Loren Merritt

Date: Mon Feb 25 21:23:55 2013 +0000

x86inc: fix some corner cases of SWAP

SWAP with >=3 named (rather than numbered) args

PERMUTE followed by SWAP with 2 named args

used to produce the wrong permutation

x86inc: SWAPのいくつかのコーナーケースを修正。

3つ以上の名前付き(順序付きではなく)引数でのSWAP。

2つの名前付き引数でのSWAPが直後に来るPERMUTE。

誤った置換を生じていた。

コーナーケースというのは、通常は発生しない、例外的な問題のあるケースのこと。

訳者はyasmのマクロを知らないので、どういうことなのかはよくわからんです。

x264r2276

git-id : 89aecb440e2939be7fb72d8362eb12504711b94f

Author : Jason Garrett-Glaser

Date: Wed Feb 27 13:30:22 2013 -0800

Fix array overreads that caused miscompilation in gcc 4.8

gcc 4.8でコンパイルミスを発生させていた配列の過剰読み込みを修正

プリプロセッサをあまり使い込むとffmpeg/libavのように実態がなんだかよくわからなくなってしまう恐れが…。トークン結合演算子を使い出したら危険。いや、便利なんだけれども、書いた人にしか意図がわからなくなりがち。

x264r2275

git-id : e355b0e12d6cb380c13cdce15b42093eb8eeef44

Author : Jason Garrett-Glaser

Date: Thu Feb 28 13:32:37 2013 -0800

Fix undefined behavior in x264_ratecontrol_mb

x264_ratecontrol_mbでの未定義の動作を修正。

多重代入は右結合なんじゃなかったっけ?と思うのだけども。

x264r2274

git-id : c832fe995bf3d41cae1d3d22e10cb2288e8a650a

Author : Stefan Groenroos

Date: Fri Mar 1 22:35:34 2013 +0200

ARM: Fix bug in x264_quant_4x4x4_neon

Regression in r2273.

ARM: x264_quant_4x4x4_neonのバグを修正。

r2273でのレグレッション。

x264r2273

git-id : b3065e660df391168067f13216d99825260939d4

Author : Stefan Groenroos

Date: Mon Feb 25 23:43:09 2013 +0200

ARM: update NEON mc_chroma to work with NV12 and re-enable it

Up to 10-15% faster overall.

ARM: NEON版mc_chromaをNV12でも動くように更新し、再有効化。

全体で10-15%高速化。

x264r2272

git-id : e82cf2c8e3bc0d7623f3e8ed9a4684bc3dc40b91

Author : Jason Garrett-Glaser

Date: Thu Feb 14 15:00:48 2013 -0800

CABAC/CAVLC: use the new bit-iterating macro here too

CABAC/CAVLC: 新しいbit-iteratingマクロをここでも使用。

x264r2271

git-id : 253e2c3f7eab79d74450de4f88a8bf451fd01be4

Author : Jason Garrett-Glaser

Date: Fri Feb 8 15:34:38 2013 -0800

quant_4x4x4: quant one 8x8 block at a time

This reduces overhead and lets us use less branchy code for zigzag, dequant,

decimate, and so on.

Reorganize and optimize a lot of macroblock_encode using this new function.

~1-2% faster overall.

Includes NEON and x86 versions of the new function.

Using larger merged functions like this will also make wider SIMD, like

AVX2, more effective.

quant_4x4x4: ひとつの8x8ブロックを一度に量子化。

これはオーバーヘッドを低減し、zigzag, dequant, decimateなどなどに対し、より少量の分岐で済むようにする。

この新しい関数を使いmacroblock_encodeを大きく再構成・最適化。

全体で〜1-2%高速化。

新関数のNEONとx86のバージョンを含む。

このような大きく統合された関数を使用することは、

AVX2のように、より処理幅の広いSIMDをより効果的にする。

x264r2270

git-id : eaae05ea3f104dc9fa948327e10649ec693adf0e

Author : Stephen Hutchinson

Date: Tue Feb 12 21:55:43 2013 -0500

Add AvxSynth support to the AviSynth input module.

Uses dlopen to load AvxSynth on Linux and OS X.

Allows the use of --demuxer avs for AvxSynth, though the only source filter it

can currently use is FFMS2.

Add a local copy of avxsynth_c.h and its dependent headers in extras/ so that

users don't need to actually have AvxSynth development headers installed to

enable support for it (mirroring the AviSynth behavior).

Based on a patch by 0x09 (tab at lavabit.com)

AviSynth入力モジュールにAvxSynthのサポートを追加。

LinuxとOS XではAvxSynthをロードするためにdlopenを使用。

AvxSynthに対し--demuxer avsを使うことを可能にするが、ソースフィルタは現状で唯一FFMS2だけである。

avxsynth_c.hとその依存ヘッダのローカルコピーををextras/に追加したので、

AvxSynthのサポートを有効化するために、

ユーザーが開発用ヘッダを実際にインストールする必要はない(AviSynthの真似である)。

0x09(tab at lavabit.com)のパッチに基づく。

x264r2269

git-id : b2c70f6548a68b874006a176d48cd0ca4e03859a

Author : Jason Garrett-Glaser

Date: Fri Feb 8 00:13:15 2013 -0800

Eliminate some branchiness in ME/analysis

Faster, fewer branch mispredictions.

ME/analysisで幾つか分岐を除去。

より高速で、分岐予測ミスを減少させる。

x264r2268

git-id : 9d600d64194e0b2a77a8d9aa3f05b141cf473af0

Author : Jason Garrett-Glaser

Date: Wed Feb 6 16:55:39 2013 -0800

Fix some store forwarding stalls

There's quite a few others, but most of them don't help to fix or there's no

easy way to avoid them.

いくつかのstore forwarding stallを修正。

他にも非常に多数あるが、ほとんどは修正不能であるか、簡単な回避方法がない。

若干専門的な話になるが、store forwarding stallはインテルのサイトに説明がある。How to Avoid Store-Forwarding Stalls on the Pentium 4 Processor(もちろん英語)。これによると、あるメモリ領域に書き込み、直後にそこから別のサイズで読みだすと、キャッシュの更新を待ってしまい、実行が滞るらしい。例えば16bitで書いて、同じ番地からすぐ32bitで読み出すなど。

x264r2267

git-id : 9fe40b1e0db6cd93652e3a45dbbd8f24dbe0b70e

Author : Jason Garrett-Glaser

Date: Tue Feb 5 01:23:23 2013 -0800

x86: faster AVX satd/sa8d/sa8d_satd/hadamard_ac

Use Conroe-style movddup in AVX transforms; both Sandy Bridge and Bulldozer

do movddup in the load unit, so it's totally free this way.

On Sandy Bridge:

~6% faster sa8d_satd

~5% faster hadamard_ac

~9% faster 32-bit satd

~2% faster sa8d

x86: AVX版のsatd/sa8d/sa8d_satd/hadamard_acを高速化。

AVXの変形においてConroeスタイルのmovddupを使用;

Sandy BridgeもBulldozerもmovddupをロードユニットで行うため、これで問題はない。

Sandy Bridgeにおいて:

sa8d_satdが〜6%高速化

hadamard_acが〜5%高速化

32-bit satdが〜9%高速化

sa8dが〜2%高速化

x264r2266

git-id : 4f24bb34453fdedefd161063e20516d148b80f8b

Author : Jason Garrett-Glaser

Date: Sat Feb 2 12:37:08 2013 -0800

x86: detect Bobcat, improve Atom optimizations, reorganize flags

The Bobcat has a 64-bit SIMD unit reminiscent of the Athlon 64; detect this

and apply the appropriate flags.

It also has an extremely slow palignr instruction; create a flag for this to

avoid massive penalties on palignr-heavy functions.

Improve Atom function selection and document exactly what the SLOW_ATOM flag

covers.

Add Atom-optimized SATD/SA8D/hadamard_ac functions: simply combine the ssse3

optimizations with the sse2 algorithm to avoid pmaddubsw, which is slow on

Atom along with other SIMD multiplies.

Drop TBM detection; it'll probably never be useful for x264.

Invert FastShuffle to SlowShuffle; it only ever applied to one CPU (Conroe).

Detect CMOV, to fail more gracefully when run on a chip with MMX2 but no CMOV.

x86: Bobcatの検出、Atom最適化の改善、flagsの再編。

Bobcatは、Athlon 64を連想させる64-bit SIMDユニットを持つ; これを検出して適切なフラグを適用する。

また、極端に遅いpalignr命令を持つ; palignr偏重な関数における多大なペナルティを避けるため、これに対するフラグを作成。

Atomの関数選択を改善し、SLOW_ATOMフラグが何をカバーするかをドキュメント化した。

Atomに最適化したSATD/SA8D/hadamard_ac関数を追加: 他のSIMD乗算と並びAtomでは遅いpmaddubswを避けるため、単純に、ssse3最適化をsse2のアルゴリズムと統合した。

TBMの検出をやめた; 恐らくx264で役立つことはない。

FastShuffleをSlowShuffleに反転した; 1つのCPU(Conroe)にしか適用されないので。

MMX2がありCMOVがないチップ上で実行しようとする際、より穏やかな失敗にするため、CMOVを検出するようにした。

X264_BUILD 130。CPU flagsが再編されたため。

もともとx264ではATOMは最適化の対象とされていなかった。それがr1611で多少考慮されるようになり、今回もう少しだけ進められ、ATOM用の最適化関数も作成された。

最後の一文は婉曲的で意味が取りづらいが、要はクラッシュせずエラーメッセージを出すようにした、ということかと思われる。もともとCMOVはasmが有効なx264で必須(CMOVなし版のasmも検討されたことはあるが、あまりに広範に使われており切り分けるのは妥当ではないという結論だったはず)であり、MMX2があればCMOVもあるものと仮定していたことによる。そのため、CPUの機能としてはCMOVを検出するが、それで実行されるasm関数が変わることはない。

TBM: Trailing Bit Manipulation

x264r2265

git-id : d556d5540ab90b2c89a5ba0cd6ce393f87c19faf

Author : Oskar Arvidsson

Date: Sat Jan 19 01:47:09 2013 +0100

x86: combined SA8D/SATD dsp function

Speedup is most apparent for 8-bit (~30%), but gives some improvements

for 10-bit too (~12%).

64-bit only for now.

x86: SA8D/SATDのdsp関数を統合。

速度向上は8-bitで最も顕著(〜30%)だが、10-bitでもいくらか改善(〜12%)する。

現在のところ64-bitのみ。

x264r2264

git-id : 5c2ca5dee339a215cb331c426d40fa548675f088

Author : Oskar Arvidsson

Date: Tue Jan 29 23:44:32 2013 +0100

x86: port SSE2+ SATD functions to high bit depth

Makes SATD 20-50% faster across all partition sizes but 4x4.

x86: SSE2+のSATD関数を高ビット深度に移植。

4x4以外のすべてのpartitionサイズにわたり、SATDを20-50%高速化。

x264r2263

git-id : b09bc0cc936751f6ad1f20f5e11f523f6051ebc3

Author : Oskar Arvidsson

Date: Wed Feb 6 02:07:53 2013 +0100

x86: faster high bit depth ssd

About 15% faster on average.

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

平均で15%程度高速。

x264r2262

git-id : 91049858f8a051e87efcbe97285657fa3ef9a639

Author : Jason Garrett-Glaser

Date: Fri Jan 18 22:55:46 2013 -0800

x86: optimize and clean up predictor checking

Branchlessly handle elimination of candidates in MMX roundclip asm.

Add a new asm function, similar to roundclip, except without the round part.

Optimize and organize the C code, and make both subme>=3 and subme<3 consistent.

Add lots of explanatory comments and try to make things a little more understandable.

~5-10% faster with subme>=3, ~15-20% faster with subme<3.

x86: predictorチェックの最適化と整理。

MMXのroundclip asmにおいて候補の除去を分岐なしで扱う。

丸め部分がないこと以外はroudclipと類似であるasm関数を追加。

Cコードを最適化・構造化し、subme3以上・未満を一貫させた。

説明的なコメントを数多く追加し、少しはわかりやすくするように努めてみた。

subme>=3で〜5-10%高速、subme<3で〜15-20%高速。

こういうパッチはペンギン様かと思ったら、Dark_Shikari氏だった。

x264r2261

git-id : a216e5c92a1543e5d748928f7531cfd771739cbf

Author : Jason Garrett-Glaser

Date: Tue Jan 22 12:31:55 2013 -0800

Fix two bugs in predictor checking

pmv wasn't checked properly in some cases, as well as zero vector.

Output-changing portion of the following patch.

predictorのチェック時のバグを2つ修正。

pmvはいくつかのケースで正しくチェックされていなかった。ゼロベクタの時も。

続くパッチの、出力を変える部分。

x264r2260

git-id : 4d220bc18cb177b6812c381e7fb808f9ae3189e1

Author : Jason Garrett-Glaser

Date: Thu Jan 10 13:15:52 2013 -0800

Improve lookahead-threads auto selection

Smarter decision to improve fast-first-pass performance in 2-pass encodes.

Dramatically improves CPU utilization on multi-core systems.

Tested on a quad-core Ivy Bridge (12 threads, 1080p):

Fast first pass:

veryfast: ~7% faster

faster: ~11% faster

fast/medium: ~15% faster

slow/slower: ~42% faster

veryslow: ~55% faster

CRF/1-pass:

veryfast: ~9% faster

(all others remained the same)

lookahead-threadsの自動選択を向上。

2-passエンコードにおいてfast-first-passの性能を向上させる、より賢い決定方法。

マルチコアシステムにおけるCPUの利用効率を劇的に向上させる。

クアッドコアIvy Bridge上でのテスト(12スレッド、1080p):

Fast first pass:

veryfast: 〜7%高速

faster: 〜11%高速

fast/medium: 〜15%高速

slow/slower: 〜42%高速

veryslow: 〜55%高速

CRF/1-pass:

veryfast: 〜9%高速

(その他も同様)

lookaheadに使うスレッド数を、処理の重さのバランスから自動的に決定する。

特に2-passエンコードにおいて、fast-first-passは解析が目的である。後段の実エンコード部分に対し、前段であるlookahead部分(主な解析部分)の処理が、1-passのエンコードよりも重くなる。前段の処理が終わらなければ後段の処理ができないため、場合によっては後段に割り当てられたスレッドが手持ち無沙汰となるケースが発生する。つまりここのスレッド数の配分がおかしいと、いくら合計スレッド数が多くとも、CPUを使い切れない。

そのため、b-adapt, subme, b-framesなどの主要な解析オプションの内容から、最適と思われるスレッド数を決定するのが今回のパッチ。b-adapt=2で、submeが低く(後段で行うRefinement/RDO系機能が少ないためだろう)、b-framesが多い(動き補償解析が重い)ほど、lookaheadに多くスレッドが割かれる。

なお、lookaheadのスレッド数は多すぎると精度低下につながるため、適当に上限(高さピクセル数 / 128)も設定されている。また、sliced-threadsの際はスレッドの考え方が異なるため、自動決定はしない。

x264r2259

git-id : c63a518d43bb3822342513eb4af109551e86fbd2

Author : Henrik Gramner

Date: Sun Jan 27 23:01:59 2013 +0100

x86: Use SSE instead of SSE2 for copying data

Reduces code size because movaps/movups is one byte shorter than movdqa/movdqu.

Also merge MMX and SSE versions of memcpy_aligned into a single macro.

x86: データのコピーにSSE2の代わりにSSEを使用。

movaps/movupsはmovdqa/movdquよりも1バイト短いので、コードサイズを削減。

また、MMXとSSEのバージョンのmemcpy_alignedを1つのマクロに統合。

出力に影響なし。のはず。

x264r2258

git-id : 0ce5b431b94f3934a7229ab264c12f1106e4330d

Author : Henrik Gramner

Date: Sun Jan 13 18:27:08 2013 +0100

64-bit cabac optimizations

~4% faster PIC

WIN64:

~3% faster and 16 byte shorter cabac_encode_bypass

~8% faster cabac_encode_terminal

Benchmarked on Ivy Bridge

UNIX64:

One instruction less in cabac_encode_bypass

64-bit cabac 最適化。

〜4%高速なPIC。

WIN64:

〜3%高速で16バイト短いcabac_encode_bypass。

〜8%高速なcabac_encode_terminal。

Ivy Bridge上でのベンチマーク。

UNIX64:

cabac_encode_bypassで1命令削減。

出力に影響なし。のはず。

FIXME: PICって??

x264r2257

git-id : 51a5976144d80d9dc178fcaba2da5224809ee6ba

Author : Mike Gorchak

Date: Sat Feb 2 23:35:00 2013 -0800

configure: add QNX support

configure: QNXのサポートを追加。

ほう、これは面白い。QNX(きゅーにっくす)はPOSIX互換のリアルタイムOSで、組み込み系に使用される。訳者は以前に少しだけ扱ったことがあるが、日本では名前を聞くことも少なく、もう廃れたかと思っていたのだが…まだまだ現役であったか。

と書くとバカにしているように聞こえるかもしれないが、徹底したマイクロカーネル実装は若干堅苦しいくらいに洗練されていたし、公式のドキュメントは、独自製品としては(英語なら)とても充実していた。一時のSymbianと同じで、プログラミングパラダイムが若干特殊であることを除けば、十分に普及するだけの基礎があるOSだと思う。

日本ではまだμITRONが強いのだろうか。基本的なAPI仕様がオープンとは言え、μITRONはPOSIXよりかなり限定的な規格であるし、日本の組み込み界がガラパゴスでないことを祈ろう…。

ちなみに、最近では組み込みと言ってもリアルタイム性の不要な分野も多く、組み込み経験者だからといってリアルタイムOS経験者とは限らない

x264r2256

git-id : 486ff39f398401d126fbf0379287b1a7ca7fae6e

Author : Henrik Gramner

Date: Sun Jan 20 19:35:06 2013 +0100

Windows: Enable DEP and ASLR

Windows: DEPとASLRを有効化。

出力に影響なし。

いわゆるNXビットなどの対応。

x264r2255

git-id : 8da42b78154304ef194747a375a7e1ff3021d0a9

Author : Henrik Gramner

Date: Thu Jan 17 19:17:24 2013 +0100

x86inc: Set ELF hidden visibility for global constants

x86inc: グローバル定数に対しELFの隠し属性(非可視)を設定。

動作に影響なし。

x264r2254

git-id : 989019209b2ccc828480f0e1f506747703134db3

Author : Diego Biurrun

Date: Thu Jan 17 11:18:31 2013 +0100

x86inc: Add cvisible macro for C functions with public prefix

This allows defining externally visible library symbols.

Signed-off-by: Diego Biurrun

x86inc: パブリックプレフィックスを持つC関数に対しcvisibleマクロを付加。

これは外部から見えるライブラリシンボルを定義することを可能にする。

Signed-off-by: Diego Biurrun

動作に影響なし。

x264r2253

git-id : 91b0f0e6415b9cc56b625eb77dd5b471a59d3230

Author : Diego Biurrun

Date: Thu Jan 17 11:30:37 2013 -0800

x86inc: rename program_name to private_prefix

Synced from libav.

The new name is more descriptive and will allow defining a separate public

prefix for externally visible library symbols.

x86inc: program_nameをprivate_prefixに変更した。

libavと同期。

新しい名前はより説明的で、外部から見えるライブラリのシンボルに対し、

個別のパブリックプレフィックスを定義することを可能にする。

動作に影響なし。

x264r2252

git-id : a4e77598d2e1e55483bf0918f6ec2fda51ee9507

Author : Jason Garrett-Glaser

Date: Mon Jan 14 05:35:30 2013 -0800

x264.h: improve x264_encoder_reconfig documentation

x264.h: x264_encoder_reconfigのドキュメントを改善。

バイナリに影響なし。

x264r2251

git-id : ce9efeafaad38bc6795d4469c952af2d5bb75a84

Author : Henrik Gramner

Date: Sat Feb 16 19:36:50 2013 +0100

Cosmetics: stricter definition of parameterless functions

コスメティックス:パラメータなしの関数の定義をより厳密にした。

バイナリに影響なし。

コンパイル時にコードの問題を発見できるケースができる。普通は間違えない部分なのであまり意味はないが、商業プログラミングでは必須とされることも。

x264r2250

git-id : e403db4f9079811f5a1f9a1339e7c85b41800ca7

Author : Neil

Date: Mon Jan 28 10:47:38 2013 +0800

Update "Install and compile x264" in doc/regression_test.txt

doc/regression_test.txtの"Install and compile x264"を更新。

バイナリに影響なし。

svn時代の表記を修正しただけ。

x264r2249

git-id : c13fbaf279d41e6bb8db09e95aec1b638ff026e8

Author : Anton Mitrofanov

Date: Thu Jan 24 12:11:26 2013 +0400

Fix possible non-determinism with mbtree + open-gop + sync-lookahead

Code assumed keyframe analysis would only pull one frame off the list; this

isn't true with open-gop.

mbtree + open-gop + sync-lookaheadでの潜在的な非決定性を修正。

コードはキーフレーム解析がリストから1フレーム引くと仮定していた; これはopen-gopでは真でない。

x264r2248

git-id : 736d69b5875587b61c03aa45438e19ddba1f7035

Author : Anton Mitrofanov

Date: Mon Feb 25 19:28:19 2013 +0400

x86: don't use the red zone on win64

x86: win64上でレッドゾーンを使わないようにした。

ここでいうレッドゾーンとは、スタック(メモリ)の危険な領域、ということのようだ。そういえばx86-64におけるABIはWindowsとLinux/U*ix系で違うと聞いたような気もする。そこら辺の調整と思われる。

x264r2247

git-id : 637005ebef9f36b816a9777183660ea17f5b249d

Author : Jason Garrett-Glaser

Date: Sun Feb 10 16:12:34 2013 -0800

x86-64: fix trellis asm with interlacing

Regression in r2145.

Assembly assumed array was [2][64] when it was actually [2][63].

Tiny (~0.1%) compression improvement.

x86-64: インターレースでのtrellisのasmを修正。

r2145でのレグレッション。

アセンブリは配列が[2][64]であると仮定していたが実際には[2][63]であった。

僅かな(〜0.1%)圧縮率の向上。

x264r2246

git-id : ba5ce76f7506b5f3d083a9eda8c4705e192f15ff

Author : Ronald S. Bultje

Date: Wed Jan 30 09:48:14 2013 -0800

x86-32: use simple nop codes for <= sse

The "CentaurHauls family 6 model 9 stepping 8" family of CPUs (flags:

fpu vme de pse tsc msr cx8 sep mtrr pge mov pat mmx fxsr sse up rng

rng_en ace ace_en) SIGILLs on long nop codes.

x86-32: <= sse に対して(訳注:SSE以下の環境において)単純なnopコードを使用。

"CentaurHauls family 6 model 9 stepping 8"ファミリーのCPU

(flags: fpu vme de pse tsc msr cx8 sep mtrr pge mov pat mmx fxsr sse up rng rng_en ace ace_en)

では長いnopコードでSIGILLとなる。

一言で言えば、特定の古いx86互換CPUでのクラッシュを修正したということ。

nopとは「何もしない」命令のこと。単純に考えると、何もしないというのは一見無駄なようにも思えるが、最適化(例えばスーパースカラによる同時実行性など)を考えるときには、命令の組み合わせを調整するなどのために、意外とよく使用される。ItaniumなどのVLIW系CPUではコンパイル時の命令配置が実行効率に大きく響くため、アーキテクチャ的に、NOPの存在がほぼ必須となっていたりする。その他にもバイナリハックをする場合など、パディングや分岐潰しに使われ、結構重要な命令である。

x86系CPUにおいて、NOPのマシン語レベルでの表現にはいくつか方法がある。x264がこれまで使っていた命令は、現在はVIA Technologies傘下となっているCentaur Technology(WinChip C6が有名)製のx86互換CPUで、SIGILL(不正命令:普通はクラッシュする)となるものだったので修正された。SSE以下という括りはやや大雑把にも思えるが、簡単に対処したということかと思われる。

WinChipはx86命令をRISCで実装するという、これはこれで面白いCPUだったのだが、蛇足すぎるので割愛。

x264r2245

git-id : bc13772e21d0e61dea6ba81d0d387604b5b360df

Author : Loren Merritt

Date: Tue Jan 8 21:30:57 2013 +0000

Bump dates to 2013

日付を2013に上げた。

x264r2244

git-id : 3508f4a1446c408dcc0febe1a349ad303ae6628c

Author : Henrik Gramner

Date: Mon Dec 17 21:54:00 2012 +0100

x86inc: Drop tzcnt workaround

It is no longer needed now that we've bumped the version requirement of yasm to 1.2.0.

x86inc: tzcntのワークアラウンドをやめた。

yasmの要求バージョンを1.2.0に上げたため、不要になった。

x264r2243

git-id : b924133cabd125286488e16cfa71488ad4105d63

Author : Jason Garrett-Glaser

Date: Mon Nov 12 10:28:53 2012 -0800

AVX2/FMA3 version of mbtree_propagate

First AVX2 function for testing.

Bump yasm version to 1.2.0 for AVX2 support.

mbtree_propagateのAVX2/FMA3バージョン。

最初のAVX2関数のテスト。

AVX2サポートのためyasmのバージョンを1.2.0に上げた。

x264r2242

git-id : d967c09cd93a230e03ec1e0f0f696975d15a01c0

Author : Henrik Gramner

Date: Tue Dec 11 16:05:34 2012 +0100

x86inc: Use VEX-encoded instructions in AVX functions

Automatically use VEX-encoding in AVX/AVX2/XOP/FMA3/FMA4 functions for all instructions that exists in a VEX-encoded version.

This change makes it easier to extend existing code to use AVX2.

Also add support for AVX emulation of a few instructions that were missing before.

x86inc: AVX関数でVEX符号化命令を使用。

AVX/AVX2/XOP/FMA3/FMA4関数では自動的に、VEX符号化バージョンが存在する全ての命令でVEX符号化を使用する。

この変更は、既存のコードをAVX2を使用するよう拡張するのをより簡単にする。

また、以前は存在しなかった命令群のAVXエミュレーションのサポートを追加。

x264r2241

git-id : f6c628650558803ed65cb15c1853113cc589ae4a

Author : Loren Merritt

Date: Sun Dec 2 15:56:30 2012 +0000

x86inc: activate REP_RET automatically

Now RET checks whether it immediately follows a branch, so the programmer dosen't have to keep track of that condition.

REP_RET is still needed manually when it's a branch target, but that's much rarer.

The implementation involves lots of spurious labels, but that's ok because we strip them.

x86inc: REP_RETを自動的に有効化するようにした。

RETは分岐の直後であるかを調べるようになり、プログラマは条件を追っかける必要がなくなった。

REP_RETはまだ、それが分岐ターゲットである場合には手作業が必要であるが、それはとても稀である。

実装は大量の疑似ラベルを伴うが、stripするので大丈夫だ、問題ない。(。+・`Θ・´)キリッ

x264r2240

git-id : 755fece365c14135c2621585e761f5dfeedefc74

Author : Ronald S. Bultje

Date: Thu Dec 6 15:40:13 2012 -0800

x86inc: support stack mem allocation and re-alignment in PROLOGUE

Use this in 8-bit loopfilter functions so they can be used if

there is no aligned stack (e.g. x86-32 MSVC or ICC 10.x).

x86inc: PROLOGUEでのスタックメモリの確保と再アラインメントのサポート。

8-bitループフィルタ関数でこれを使用することで、アラインされたスタックがなくとも(例えばx86-32 MSVCやICC 10.xなど)それらが使用可能となる。

一般ユーザにはあまり関係ない更新。対応環境の増加。

x264r2239

git-id : c69e2d02c4a2ee171b6b8ca0a2e1032213e561bc

Author : Henrik Gramner

Date: Mon Dec 17 22:15:02 2012 +0100

Update config.guess and config.sub

config.guessとconfig.subを更新。

x264r2238

git-id : 9c4ba4bde8965571159eae2d79f85cabbb47416c

Author : Anton Mitrofanov

Date: Tue Jan 8 13:29:49 2013 -0800

Fix crash if the first frame is forced to a non-keyframe

This is obviously bad user input, but x264 shouldn't crash if it happens.

最初のフレームが非キーフレームを強制されている場合のクラッシュを修正。

これは明らかにユーザーの入力が悪いが、その場合でもx264はクラッシュすべきではない。

x264r2237

git-id : 593e8cc0b374aa7b20d3d961c57feb9bab508979

Author : Bernhard Rosenkr辰nzer

Date: Sun Dec 30 12:18:00 2012 -0800

Fix build on ARM with binutils >= 2.23.51.0.6

GAS doesn't seem to like spaces in vld1 anymore, so remove those.

binutils >= 2.23.51.0.6でのARMビルドの修正。

GASは最早、vld1内での空白を好まないようであるので、それらを削除。

ARMビルドにのみ影響。

x264r2236

git-id : 55b5162d7ad9a70e2b6ae5ba3f743a35c2135aaf

Author : Anton Mitrofanov

Date: Fri Nov 23 18:26:53 2012 +0400

Fix pthread_join emulation on win32 and BeOS

Doesn't actually affect x264, but it's more correct.

win32とBeOS上でのpthread_joinのエミュレーションを修正。

実際にはx264には影響しないが、より正しい。

x264r2235

git-id : 0059dcf938451134d8f9c8f1ad522a2c6071e7cd

Author : Jason Garrett-Glaser

Date: Tue Nov 27 07:50:51 2012 -0800

Fix typo in r2222

Slightly wrong numbers in level table.

r2222でのタイポ(誤植)の修正。

levelテーブルで僅かに間違った値であった。

x264r2234

git-id : 28ee1f47ed4366351477065a0f794f05402e69a7

Author : Sergio Basto

Date: Thu Nov 22 18:02:50 2012 -0800

configure: fix gpac detection with -Wp,-D_FORTIFY_SOURCE=2

configure: -Wp,-D_FORTIFY_SOURCE=2でのgpacの検出を修正。

ビルドにのみ影響。

x264r2233

git-id : 67a69c06d7bd7907b5d1e058a26284c06baa93d1

Author : Sean McGovern

Date: Thu Nov 22 18:01:16 2012 -0800

Solaris: use sysconf to get processor count

Solaris responds correctly to the same value as Cygwin, so let's use that.

Solaris: プロセッサ数を得るためsysconfを使用するようにした。

SolarisはCygwinと同じ値を正しく返すため、それを使う。

x264r2232

git-id : 6e68ab73908f339cdd91c40943fef46fd1f832fa

Author : Anton Khirnov

Date: Tue Nov 13 21:01:24 2012 +0100

lavf input: allocate AVFrame correctly

Allocate AVFrames correctly with avcodec_alloc_frame().

This caused crashes with newer libavcodecs that try to free frame extradata.

lavf input: AVFrameを正しく確保するようにした。

AVFrameをavcodec_alloc_frame()で正しく確保するように。

フレームのextradataを解放しようとする新しめのlibavcodecでクラッシュを起こしていた。

x264r2231

git-id : a632fe1a57baccdf1bcb340197fe48281cd3117f

Author : Anton Mitrofanov

Date: Sun Nov 11 03:44:02 2012 +0400

Fix crash when using libx264.dll compiled with ICL for X86_64

ICLでx86_64向けにコンパイルされたlibx264.dllを使用する際のクラッシュを修正。

x264r2230

git-id : 1cffe9f406cc54f4759fc9eeb85598fb8cae66c7

Author : Anton Mitrofanov

Date: Fri Nov 9 02:31:10 2012 +0400

Fix possible issues with out-of-spec QP values

Fixes a possible regression in r2228.

仕様外のQP値となる潜在的な問題を修正。

r2228での潜在的なレグレッションを修正する。

x264r2229

git-id : 349b9bdefae84b006c4bdb7e07290b88a18bbbb2

Author : Jason Garrett-Glaser

Date: Wed Sep 26 13:49:02 2012 -0700

Attempt to optimize PPS pic_init_qp in 2-pass mode

Small compression improvement; up to ~0.5% in extreme cases.

Helps more with small slice sizes (tiny resolutions or slice-max-size).

Note that this changes the 2-pass stats file format.

2-passモードでPPSのpic_init_qpの最適化を試みるようにした。

小さな圧縮率の改善; 極端なケースで最大〜0.5%。

小さなスライスサイズ(小さな解像度またはslice-max-size)であるほどより有用。

この変更は2-passのstatsファイル形式を変更することに注意。

x264r2228

git-id : 8437d0db5de43cf9cd11e02444c80984935e25dc

Author : Jason Garrett-Glaser

Date: Wed Sep 26 13:05:00 2012 -0700

Improve slice header QP selection

Use the first macroblock of each slice instead of the last of the previous.

Lets us pick a reasonable initial QP for the first slice too.

Slightly improved compression.

スライスヘッダのQP選択を改善。

一つ前のスライスの最後のマクロブロックではなく、各スライスの先頭のマクロブロックを使用。

最初のスライスに対しても妥当な初期QPを取るように。

僅かに圧縮率を改善。

x264r2227

git-id : d2d8364ff48f789ef92135d24c6f185c4eccbeba

Author : Jason Garrett-Glaser

Date: Thu Oct 11 13:27:48 2012 -0700

Update level dpb size calculation to match newer H.264 spec

Doesn't actually change encoding behavior, but makes it more correct.

Warning messages should now be accurate at higher bit depths and non-4:2:0.

Technically, since it redefines x264_level_t, this is an API version increment.

levelのdpbサイズ計算をより新しいH.264の仕様に適合するよう更新。

エンコード動作は実際には変わらないが、より正しくした。

高ビット深度と非4:2:0で警告メッセージが精密になったはず。

技術的には、x264_level_tを再定義するため、これはAPIバージョンの増加である。

X264_BUILD 129。

x264r2226

git-id : 28ddb0dd533154b58f9147932fb1dec4c74127c8

Author : Jan Ekstr旦m

Date: Sun Oct 7 21:12:05 2012 +0300

Add support for the ffmpeg/vapoursynth high bit depth y4m extensions

ffmpeg/vapoursynthの高ビット深度y4m拡張のサポートを追加。

x264r2225

git-id : 64cbe75cf3cae2bbc8fb34bcda5a9742d22f83f2

Author : Diego Biurrun

Date: Tue Nov 6 14:48:56 2012 +0100

x86inc: Rename 3dnow2 to 3dnowext

The name "3dnowext" is more common than "3dnow2". Doesn't affect x264.

x86inc: 3dnow2を3dnowextに名前変更。

"3dnow2"より"3dnowext"という名前のほうが一般的。x264に影響なし。

x264r2224

git-id : f418867a8b76f31acf3a965eed34c5587294e948

Author : Diego Biurrun

Date: Wed Oct 31 12:23:54 2012 -0700

x86inc: only define program_name if the macro is unset.

This allows overriding the value from outside the file.

This can be useful if x86inc.asm is used outside of x264.

x86inc: program_nameをマクロが設定されていない場合のみ定義するようにした。

これはファイル外からの値のオーバーライドを可能にする。

x86inc.asmがx264以外で使用される場合に有用。

x264で使用する場合には特に影響なし。

x264r2223

git-id : f6a8615ab0c922ac2cb5c82c9824f6f4742b1725

Author : David Wolstencroft

Date: Mon Oct 29 09:07:39 2012 -0700

Disable ARM NEON MRC CPU test for Apple devices

The Apple A6 CPU doesn't support performance counters, so this test caused a crash.

Appleの機器に対するARM NEON MRC CPUテストを無効化。

Apple A6 CPUはパフォーマンスカウンタをサポートしないため、このテストはクラッシュしていた。

Apple機器向けのビルドにのみ影響。

x264r2222

git-id : 6889f2cee49314aa380d4803991d645659efc01f

Author : Jason Garrett-Glaser

Date: Tue Nov 6 12:03:20 2012 -0800

Fix crash with no-scenecut + mbtree

no-scenecut + mbtreeでのクラッシュを修正。

x264r2221

git-id : 4dbfcd462ccdf065654d17c47e1d05d53f213bf1

Author : Anton Mitrofanov

Date: Fri Oct 12 23:43:40 2012 +0400

Fix reconfiguring to crf=0

Lossless mode can't currently be enabled mid-stream.

crf=0へのreconfigureを修正。

現在のところロスレスモードはストリーム途中で有効にできない。

libx264の修正。

x264r2220

git-id : 2ec8c64580efc10bbfc343d4bec2cf6bbb7d68c7

Author : Derek Buitenhuis

Date: Mon Sep 17 11:09:20 2012 -0700

Fix ALIGNED_ARRAY_EMU macros on ICL

ICL's preprocessor doesn't handle it correctly.

This fix is similar to libav's fix in 0db2d9.

ICL上でのALIGNED_ARRAY_EMUマクロを修正。

ICLのプリプロセッサはこれを正しく扱わない。

この修正は0db2d9のlibavの修正と同様である。

「0db2d9」というのはGitのハッシュ。あるコミットを指すのに、リビジョン番号という概念は広く一般的ではあるが、Gitでは本来ハッシュで表す。このchangelogにもgit-idという形で書いているが、その先頭の数文字を表している。gitコマンド上、ハッシュは一意であれば必ずしも全てを書かなくてもよいため、省略表記されている。

x264r2219

git-id : 2f154ac1652000afe16140cb12c35d777f0c60c8

Author : Jason Martens

Date: Thu Sep 13 11:20:40 2012 -0700

Fix use of deprecated av_close_input_file call

非推奨となったav_close_input_file呼出の使用を修正。

x264r2218

git-id : 9fc00654018ff9f8a13dbe66785e31568a0c3229

Author : Brad Smith

Date: Wed Sep 26 14:13:27 2012 -0700

Fix pkg-config for dynamic vs static linking

静的・動的リンクに対してpkg-configを修正。

ビルドにのみ影響。

x264r2217

git-id : b22f22fdb1f6d61ccc7b0c867b530322ea681133

Author : Brad Smith

Date: Mon Sep 10 17:52:04 2012 -0700

Set libm in the configure script if the OS has libm

Prerequisite for another configure patch after this.

Idea copied from libpthread.

OSにlibmがある場合にはconfigureスクリプトでlibmを設定するようにした。

この後の、別のconfigureのパッチで必要になる。

アイディアはlibpthreadから得た。

ビルドにのみ影響。

x264r2216

git-id : 198a7ea13ccb727d4ea24b29f5da9b0292387309

Author : Jason Garrett-Glaser

Date: Thu Aug 16 13:40:32 2012 -0700

Enhance mb_info: add mb_info_update

This feature lets the callee know which decoded macroblocks have changed.

mb_infoの改善: mb_info_updateを追加。

この機能はどのデコードされたマクロブロックが変わったを呼び出され側が知ることができるようにする。

X264_BUILD 128。

先のr2213のpskipの部分を再度修正。こちらが本来の目的だったのだろうか?いずれにせよcalling applicationとlibx264間のI/Fに対する追加機能で、x264cliを使っている場合には関係ない。

x264r2215

git-id : f6e9002dd03329b69ea56391b3f4197efca7a690

Author : Jason Garrett-Glaser

Date: Thu Aug 16 13:01:17 2012 -0700

Fix mb_info_free with sliced threads

x264 would free mb_info before it was completely done using it.

sliced threadsでのmb_info_freeを修正。

x264はその使用が完全に終わる前にmb_infoを解放しようとしていた。

x264r2214

git-id : de725e98eb87198542aae5b8c5ebab4f6c06446e

Author : Jason Garrett-Glaser

Date: Tue Aug 7 12:43:26 2012 -0700

Enhance nalu_process

Add the input frame opaque pointer to the arguments.

This makes it easier to use with multiple simultaneous x264 encodes.

nalu_processを改善。

入力フレームのopaqueなポインタを引数に追加。

これは複数同時並行なx264のエンコードを容易にする。

X264_BUILD 127。

要は、1つのプロセス内でlibx264で2本以上のエンコードを同時に行う時、どのエンコードの出力であるかをコールバック関数内で区別できるよう、引数を追加したということ。x264cliを使っている場合には関係ない。

x264r2213

git-id : 174cfac6344a9fad1577cd1f449b7d0e625d6e28

Author : Jason Garrett-Glaser

Date: Mon Aug 6 14:55:35 2012 -0700

Improve mb_info constant mb optimization

Allow fast skipping even if the pskip MV isn't zero.

mb_infoの固定mb最適化を改善。

pskipのMVがゼロではない場合であっても高速なスキップを可能にする。

x264r2212

git-id : f57e7070d949b02e1a548382a549c34cf491e05e

Author : Jason Garrett-Glaser

Date: Mon Jul 30 12:58:34 2012 -0700

Export the average effective CRF of each frame

Useful to judge the resulting quality of a frame when VBV is enabled.

X264_BUILD 126。各フレームの平均的な実効CRFをエクスポート。VBVが有効にされている場合にフレームの出力品質の判定に役立つ。x264cliを使っている場合には関係ない。

x264r2211

git-id : d7fd6cc060b6ae3f3bcb9e09fc8bf532a8ed3a82

Author : Brad Smith

Date: Mon Aug 20 23:58:19 2012 -0700

Remove special-casing for OpenBSD pthread handling

Previously it was policy to use -pthread, but OpenBSD now recommends -lpthread.

its been libpthread anyway and policy has changed to stop using -pthread.

OpenBSDに対するpthreadの取り扱いの特殊化をやめた。

以前は-pthreadを使うポリシーであったが、OpenBSDは今は-lpthreadを推奨している。

いずれにせよlibpthreadなのであり、ポリシーは-pthreadを使うのを止めるように変わった。

OpenBSD向けのビルドにのみ影響。pthreadが果たして、システムの一部(OSや標準ライブラリに含まれる)とみなすべきなのか、それとも追加機能のライブラリとみなすべきなのか、は(OpenBSDでの事情はともかく)何かと難しいところ。コンパイラが中途半端に取り込んでしまっているのも混乱の原因と言って良い。

ただpthreadの名前の通りPOSIX標準なのであるから、素人目にはU*ix界隈ではシステムの一部と見なされるべきな気がする。

そもそも、コンパイルオプションでマルチスレッドの明示が必要というのも、時代的にそろそろどうなのかという気もするが、まあ…オーバーヘッド量的にまだまだ無視できないのか。

x264r2210

git-id : 8f7644865010385efcb4cb5bd239b28edb4b49e2

Author : Ronald S. Bultje

Date: Thu Jul 26 18:01:49 2012 -0700

x86inc: automatically insert vzeroupper for YMM functions

Backported from libav.

x86inc: YMM命令にvzeroupperを自動的に挿入。

libavからのバックポート。

x264r2209

git-id : 68dfb7b352c4d273e44668c1f6e4a9a283a37e84

Author : Kieran Kunhya

Date: Tue Jul 24 08:47:45 2012 -0700

Free user supplied data when deleting a frame

This eliminates a memory leak when calling x264_encoder_close.

フレームの削除時にユーザーによって与えられたデーターをFree(解放)するように。

x264_encoder_closeを呼んだ際のメモリリークを廃絶する。

libx264に関する修正。x264cliを使っている場合にはプロセス自体が終了するのであまり関係ない。

x264r2208

git-id : d9d2288cabcfd1a90f29f2f11c8cce5450a08ffa

Author : Jason Garrett-Glaser

Date: Wed Jul 18 08:33:41 2012 -0700

Revert r2204

People don't seem to like this so I'm just going to get rid of it.

r2204をrevert(取り消し)。

皆さんのお気に召さないようなのでやめようと思います。

x264r2207

git-id : 5f615f7f93d830e55e6fe4f04d214b93d8cb4b53

Author : Jason Garrett-Glaser

Date: Tue Jul 10 14:10:44 2012 -0700

Faster predictor checking with subme<3

Fix a typo that made an early-skip less effective.

Avoid a relatively unpredictable branch.

Slightly changed output due to the typo-fix.

~50 cycles faster on Core i7.

subme<3での予測機のチェックを高速化。

早期スキップの効果を薄めていたタイポ(誤植)を修正。

比較的に予測が不能である分岐を回避。

タイポの修正により僅かに出力に変化あり。

Core i7で〜50サイクル速い。

x264r2206

git-id : 5af86bedd71c89fc48b50bbb7e8a8bec3d360d3a

Author : Jason Garrett-Glaser

Date: Mon Jun 25 18:01:29 2012 -0700

Try 8x8 transform analysis even when sub8x8 partitions are present

Turn off the sub8x8 partitions, try it, and turn them back on if it didn't help.

Small compression improvement with p4x4 on (~0.1-0.5%).

Also update related comments.

sub8x8パーティションが存在する場合にも8x8変換の解析を試行。

sub8x8パーティションをoffにし、試行し、ダメだったらonに戻す。

p4x4がonの場合に小さな圧縮率の向上(〜0.1-0.5%)

関連のコメントを更新。

x264r2205

git-id : 913485d26b19dddb6340f7115843d63cde8bb836

Author : Jason Garrett-Glaser

Date: Fri Jun 8 18:19:59 2012 -0700

Support changing resolutions between passes with macroblock-tree

Implement a basic separable bilinear filter to rescale the quantizer offsets.

Structure inspired by swscale, but floating-point instead of fixed-point.

Not as optimized as it could be, but it's quite fast already.

Example compression penalties on a 720p video game recording:

First pass with 720p and second as 480p: ~-1.5% (vs. same res)

First pass with 480p and second as 720p: ~-3% (vs. same res)

マクロブロック・ツリー(mbtree)で、パス間の解像度の変更をサポート。

量子化オフセットを再スケールするために基本的な分離バイリニアフィルターを実装。

構造はswscaleにインスパイアされているが、固定少数点数でなく浮動小数点数としている。

可能な限りというほどの最適化はされていないが、既に十分速い。

720pのゲームのレコーディングにおける圧縮(率)のペナルティの一例は

1パス目を720pで2パス目を480pとした場合: 〜-1.5%(同解像度比)

1パス目を480pで2パス目を720pとした場合: 〜-3%(同解像度比)

x264r2204

git-id : 8b535d9006d87e32c4ff939691b920da823ae85a

Author : Alexander Prikhodko

Date: Tue Jun 12 20:21:35 2012 +0300

Print elapsed time in encoding progress indicator

エンコード進捗インジケーターで経過時間を表示。

x264r2203

git-id : 11e32c534a213168d8f466fb64bee75e1534d7af

Author : Anton Mitrofanov

Date: Sat Jun 2 21:27:50 2012 +0400

Cap ratecontrol predictor parameters

Limits VBV mispredictions after long periods of relatively constant video.

レートコントロール予測のパラメータをキャップ。

比較的に不変な動画が長く続いた後の、VBVの予測ミスを限定的にする。

x264r2202

git-id : e21e9c972ed830ac7ad264912b41543adf7e720f

Author : Loren Merritt

Date: Tue Jul 3 14:38:04 2012 -0700

x86inc: import patches from libav

Allow manual invocation of WIN64_SPILL_XMM even under INIT_MMX

SSE version of mova is movaps rather than movdqa.

YMM version of movnta.

Add mp size for named arguments.

Fix DEFINE_ARGS when used outside of a cglobal.

Define a few more cpuflags.

3-argument wrappers for a few more instructions.

x86inc: libavからパッチを取り込み。

INIT_MMXの許でも、手動でのWIN64_SPILL_XMMの発行は許可。

SSEバージョンのmovaはmovdqaよりもmovapsに。

YMMバージョンのmovnta。

名前付き引数にmpサイズを追加。

cglobal外で使われた場合のDEFINE_ARGSを修正。

更に幾つかのcpuflagsを定義。

更に幾つかの命令に対する3引数のラッパー。

x86incというのは、x264のx86向けアセンブラコードの、抽象化レイヤーを担うマクロアセンブラコード。例えば、同じ目的にCPU種別ごとに違う命令を使う場合でも、同じコードでわかりやすく書くことが出来る。r1309でISCライセンスとなり、libavでも使われているのだが、時々libav側で改善されるとバックポートされてくる。

x86incが改善されたからといって必ずしもユーザーに直結するメリットがあるとは限らないが、x264の多くのCPUに最適化されたコードはx86incの基盤があってこそのものである。

x264r2201

git-id : 37be55213a39db40cf159ada319bd482a1b00680

Author : Anton Mitrofanov

Date: Fri Jun 22 22:02:24 2012 +0400

Fix crash with --fps 0

Fix some integer overflows and check input parameters better.

Also fix incorrect type specifiers for demuxer info printing.

--fps 0でのクラッシュを修正。

幾つかの整数オーバーフローを修正し、入力パラメータをよくチェックするように。

また、demuxer情報の表示時の誤った型指定を修正した。

x264r2200

git-id : 999b753ff0f4dc872077f4fa90d465e948cbe656

Author : Jason Garrett-Glaser

Date: Tue May 8 15:42:56 2012 -0700

Threaded lookahead

Split each lookahead frame analysis call into multiple threads. Has a small

impact on quality, but does not seem to be consistently any worse.

This helps alleviate bottlenecks with many cores and frame threads. In many

case, this massively increases performance on many-core systems. For example,

over 100% faster 1080p encoding with --preset veryfast on a 12-core i7 system.

Realtime 1080p30 at --preset slow should now be feasible on real systems.

For sliced-threads, this patch should be faster regardless of settings (~10%).

By default, lookahead threads are 1/6 of regular threads. This isn't exacting,

but it seems to work well for all presets on real systems. With sliced-threads,

it's the same as the number of encoding threads.

スレッド化lookahead(先読み)。

各lookaheadフレーム解析の呼び出しを複数のスレッドに分割。品質に小さな影響があるが、定常的に悪いというわけでもないようだ。

これは多コアかつframe threads(訳注:スライス単位ではなくフレーム単位でのスレッド化でx264ではデフォルトの方式)でのボトルネックを緩和するのに役立つ。

多くのケースで、これは多コアシステム上でのパフォーマンスを劇的に増大させる。

例えば、12コアi7システム上では--preset veryfastでの1080pエンコードが100%以上速い。

実際のシステム上で--preset slowでのリアルタイム1080p30が実現可能だろう。

sliced-threadsに対しては、このパッチは設定に関わらず速いはず(〜10%)である。

デフォルトでは、lookaheadスレッドは通常のスレッドの1/6である。

これは厳密なものではないが、実際のシステム上で全てのプリセットに対しよく効くようだ。

sliced-threadsではエンコードスレッドの数と同じである。

X264_BUILD 125。

--lookahead-threadsオプションが追加。デフォルトであるエンコードスレッドの1/6という計算は切り捨て。最低値は1、最大値は16。

表記してある以外にもdereferenceを減少させるなどの変更も含む。いくつかアセンブラ化の余地がありそうな部分も見受けられる。

前:x264-changelog-jp r2100-r2199 - 次:x264-changelog-jp r2300-r2399

最終更新時間:2013年05月06日 17時12分59秒