year!更なる4:2:2のasm関数。deblock_h_chroma_422の高ビット深度バージョン。deblock_h_chroma_intra_422の標準・高ビット深度バージョン。高ビット深度のpixel_vsad。8-bitのpredict_8x8_vl。sub8x8_dct_dcsub8x16_dct_dcのSSE2とSSSE3バージョン。sub8x8_dct_dcを僅かに高速化。51.19.0リサイズフィルタのアップデート。あらゆるピクセルフォーマットに対し、最もx264と互換性のある色空間を採用するためにAVPixFmtDescriptorを使用。非推奨のav_set_intの使用を修正。51.19.0が必要となった。buildのサポートを追加。buildとは、ソースコードのディレクトリツリー以外でのビルドを指す。これまでのビルドではx264のソースコードディレクトリで各種ビルドコマンドを打たなければならなかったものが、それ以外の「ビルド用ディレクトリ」を作成してそこで実行できるようになる。x264build../x264/configuremakeとできるようになる。メリットは様々だが、色々な設定でビルドを行う人には、それぞれの設定によるビルドをソースコードとは別に1つのディレクトリで管理できるため、何かと便利になる。distcleanすることなく、中間ファイルを削除せずにできる。builderにとっては、ソースコードは基本的に触ることのない「材料」であり、中間ファイルやバイナリは「自分の作成物」である。その両者が切り離せると管理が楽だ。ビルドによって作成されるファイルが明確であるため、ビルド時に発生する問題の切り分けなどもしやすくなる。(lossless).SSIMを100dbに制限。(lossless)での浮動小数点エラーを回避する。toolchain.inttypes.hの間違った条件付きincludeを修正。inttypes.hはencoder/ratecontrol.cでSCNxxxマクロのために必要だが、HAVE_STDINT_Hはinttypes.hがあることを暗示しない。stdint.hはinttypes.hのサブセットであり、x264にとって十分ではない。この変更はAndroidのツールチェインによるx264のビルドを修正する。threadsで入力高さ<=112の場合のクラッシュを修正。chroma量子化マトリックスの読み込みを修正。overflowPCMコストのオーバーフローを修正。asm版関数でのオーバーフローを修正。description.最近のffmpegに対してコンパイルされた場合の--fullhelpでのクラッシュを修正。すべてのピクセルフォーマットに説明があるとは仮定しないようにした。macroblocks.r2118のレグレッションを修正。i16x16マクロブロックでのtrellisを壊していた。deblock関数をU/Vを同時に扱うよう変更。便利なasmの実装を可能にする。SIMDによる量子化を使用。有意に速度が向上し、出力には丸めによる小さな違いが出る。unchanged).YUVのレンジの検出とx264CLIでのサポート。--input-rangeと--range。x264cliは必要なら変換を行い、デフォルトではTV。--fullrangeはCLIのオプションとしては削除された(ただしlibx264のAPIは変更なし)。所謂TVスケール・PCスケールと呼ばれるYUV色空間のレンジが自動検出となった(たぶん)。強制するオプションは入力・出力で別に指定可能で、入出力が合わない場合には自動変換される。dataユーザーデータをパススルー。ここで言うユーザーデータは、libx264の仕組みの一部として、アプリケーション側のデータをフレームと一緒に持ち運べるようになっているものを指している。ライブラリの使い勝手の問題なので、一般ユーザーには関係ないと思っていい。dqp内の予測不能な分岐を削除。optimization(AVXの対称性による最適化)。ops(AVXの3オペランド命令)で、メモリ引数はsrc2にのみ取ることが可能だが、SSEによる3-argのエミュレーションではsrc1にあることが好ましい(つまりmove)。そのため命令がsymmetricで、メモリがよろしくない側である場合に、それらをスワップする。メモリ引数を取り、AVX以外で3オペランドを使用するようないくつかのケースで、冗長なmoveを削減。幾つかのケースでのmovssとmovsdを修正し、shufpsに正しくfloatのフラグ付けをした。命令の制約に合わせてオペランドを交換することでより最適な動作をするようにしたということ。巷で今話題の掛け算の順番の問題(8x6=48と6x8=48は意味が違う、みたいな)ではないが、結果は同じでも順序が異なると動作が違う、ということがCPU内では起こりうる。具体的には、SIMD系命令では、8や6というデーターがメモリにあるかレジスタにあるかで速度、あるいは動作の可否そのものが決まることがある。このコミットはそのあたりの整合性をより最適にしたということ。文中のsymmetricとは、掛け算のように、与えるデーターの順序が異なっても結果が同じ、ということを指している。gccの警告を黙らせ、結果中として幾つかの関数の名前を修正した。checkasmの変更なので一般ユーザーに影響なし。ARM上でのビルドを修正。ARM上でのALIGNED_ARRAY_16の定義方法が原因で、配列の初期化子が使用不能である。代わりにmemset()を使用。checkasmの変更なので一般ユーザーに影響なし。reconfigures.makefileのルールを改善。clean"が不要に。makefileの改善なのでビルドしない人には影響なし。cosmeticsいくつかのローカル関数をstaticにするコスメティックス。failsタイムコードファイルのオープンが失敗した場合のクラッシュを修正。PARISCとMIPS上の共有ビルドではPICを強制。compatible.yasmのバージョンチェックを改善。以前のチェックは、完全な互換のない、特定の若いバージョンを許していた。quant(訳注:AQ)に追加。version.色空間でprefetch_fencを分割。4:2:2バージョンを追加。deblock_h_chroma_422。onwards).intra_mbcmp_x3の廃れたバージョンを削除。intra_mbcmp_x3はx9が存在すれば不要である(SSSE3以降)。preset=slowerSSSE3/SSE4/AVX版の9-way完全統合i8x8解析(sa8d_x9)。今のところx86_64のみ、というのは(sa8d_x3と同様に)レジスタの要件による。shortcuts.SSSE3/SSE4/AVX版の9-way完全統合i8x8解析(sad_x9)。現在の解析よりも〜3倍高速であることに加え、(intra_sad_x9_4x4のように)全てのモードをショートカットなしで解析する。前に同様の高速化が行われていたものの適用対象が広がった。analysis.i4x4予測をintra_mbcmp_x9_4x4に統合。解析後の冗長な予測を回避。Perl5.010001。