r1100-r1199このページの全ては誤っているかもしれません。x264関連の記事に関してを読んでください。r1100-r1199r1100-r1199のchangelogの日本語訳。その他のリビジョンと注意事項についてはx264-changelog-jpへどうぞ。lookahead.マルチスレッドでのdelay(ディレイ・遅延)の計算を修正。スレッドに対するdelayフレームは本来はlookaheadの一部としてカウントしない。わかりにくい表現だが、bframesから求まるdelayとlookaheadによるdelayを比較する必要があり、その際にbframes側に含まれてしまっていたスレッドによるdelayを外したと言うこと。スレッドによるdelayは比較後に加算している。gap."veryslow"プリセットを追加。明らかに一定の人数が実際にplaceboを*使っている*ので、そのギャップを埋めるためにこのプリセットを追加した。プラセボなのに...と思ったのだろう。rc-lookahead=60に相当する。soon.Macroblock-treeレートコントロール。デフォルトでON;--no-mbtreeでOFFにできる。時間軸でのデータのpropagation(伝播)を追跡し、質に適宜重み付けをするため、大きなlookahead(先読み)を使う。マルチパスでは非常に大きな別途のstatsファイル(マクロブロックごとに2バイト)を要求する。b-pyramidとは一緒に動作しない。MB-treeは本質的に、標準のqcompの手法とは異なる品質測定を行うため、CRFによるビットレートはいくらか変わりうることに注意。これは"medium"プリセットを若干遅くする。同様に"fast"をも遅くするので、"fast"と"veryfast"の間に新たなプリセット"faster"を導入した。"fast"以上のプリセットはMB-treeがONである。treeが先読みしpropagation解析を行う距離(訳注:フレーム数)をコントロールするための新オプションとして、--rc-lookaheadを追加。デフォルトは40;大きな値はより遅く、よりメモリを要求するがより精密な結果をもたらす。この値は将来的にレートコントロールの先読み(VBV)をコントロールするために使用される。PSNRやSSIMを向上させないpsy(心理的)最適化を全て無効にする新オプションとして、--no-psyを追加。これはpsy-RD/trellisを無効にするが、同時に外部のパラメータでは直接コントロールできないような、その他の内部の細かなpsy最適化をも無効にする。MB-treeによる質の向上は(映像の)内容により約2-70%である。strengthを意味する。prediction(重み付き予測)により修正されるだろう。mbtreeは非常に大雑把に言うとCRFをマクロブロック単位で行うような処理で、より視覚的に最適な出力を行う。映像の内容によっては非常に強力で、かなり低ビットレートにしてもそこそこの画質が保てる。この例はなんと67kbpsとのこと。猫科研究所的な詳細解説はx264(mbtree)を参照。mbtree=ONの全く新しい"fast"であることに注意。changelogの分量を見ても分かるだろうが、かなり変更が大きく、テスト期間も長かったとは言えないため、まだバグの可能性はあるように思う。乗数に加え、オフセットをpredictorに持たせた。これは主に、アニメやCGIのような極端に静的なシーン(場面)を多く含むソースでの問題を修正する。幾つかのシチュエーションで十分な残りビットを持たないことを避けるため、VBVが少し積極的にQPを上げることを可能に。幾つかのクリップ(映像)で最大1dbの改善。r1091の若干根本的な対策、と思えば良いのだろうか。change.QPRDのまた別の10Lを修正。subpel_iterations内のエントリが足り無かった。これ無しでQPRDがどう動いていたのかさっぱり分からない。「エントリが足りない」とは、テーブル(2次元配列)の行。4桁になってたということ。テーブルのサイズを超えてアクセスしてたとしたら、不定値を使ってた事になるので確かにどうなるのかさっぱり分からない。information.ヘルプのアップデートとratecontrol.cの整理。古くなった情報を片付けた。changedrefine_bidir_satdを15%高速化、refine_bidir_rdを10%高速化(trellis=2では若干低い)。ループを再ロール(44KBのコードサイズを節約、この高速化の大部分はこれにより生じる)。変更されてないmvの再mcを行わないように。ループアンロール(ループ展開)という高速化手法が行き過ぎていたので一部を通常のループに戻したということ。ループアンロールはCPU内部に注目した高速化手法で、展開されるコードにもよるが以下のような効果がある。パイプラインストールの回数減少(と命令先読み等の投機的動作の有効活用)。スーパースカラにおける実行ユニットの稼働率向上。余剰レジスタの有効活用(x86はレジスタ数が少ないので効果は薄いことが多い)。これらにより非アンロールコードに比べ数倍以上速いことも珍しくないのだが、欠点としてコードサイズが大きくなる。これによってコードキャッシュが再利用できず、コードを読み込むためのメモリアクセスが多くなれば、外部的に遅くなってしまう。refine_bidir_rd.bidir_rdの高速化と幾つかのバグフィックス。refine_bidir_rd中でchromaのMCをキャッシュし、lumaとchromaの両方のキャッシュをmacroblock_encode中のMCをスキップするために使用。誤ったrd_cost_partの呼び出しを修正;refine_birir_rdの出力はi8>0で不正だった。幾つかの冗長な部分を削除。refine_birir_rdが〜12%高速化。does."fastdecode"のtuneオプション追加。その名の通りの事を行う。デブロック:OFF、CABAC:OFF(=CAVLC)、weightb:OFFになる。it.QPRDのバグを2つ修正。fprofile設定を実際にQPRDのfprofileにした。初期化前にi_mbrdを使用しないようにした。trellis=1QPRDでの10Lを修正。trellis=1でTrellisが不正なラムダを使用していた。10Lについては過去のchangelogを参照。spel_border.subme>7でスレッドを使用した場合の非決定性を修正。spel_borderの必要性を除去する幾つかのチェックを追加。決定性(determinism)とは、言い換えると再現性とも言える。ここではスレッドの処理タイミングによって出力が変わってしまわない事を指す。同じ入力なら同じ出力を何度でも再現できなければ比較可能性を損なうため、スレッド使用時の非決定性を修正したと言うこと。on.subme=10としてQPRDのサポートを追加。trellisラムダ選択をtrellis内に代わってanalyse_initで行われるようにリファクタリング。これは後ほど、より簡単にラムダを適用することを可能にする:ひとまず現在では、変動するQPに跨る固定のラムダを可能にする。QPRDはAQ(適応的量子化)が有効にされている場合に使用可能で、一般的にSSIMや視覚的な質を向上する。加えて、chromaに対する相対的(relative)なQPのオフセットに基づくRDからのSSD値に重点を置く:chromaがlumaよりも低いQPを持つ高QP帯で視覚的に補助する。これは高QP帯でQPRDにより作成される視覚的なアーティファクトをいくらか修正する。これは一般にPSNRとSSIMには有害であり、そのためpsy-RDがONの場合にのみONとなることに注意。submeも2桁の時代。trellisのラムダがより自由に選択・適用されるようになった時が真価の見せ所になりそう。QPRD(subme=10)はtrellis=2、aq-mode>0が条件なので注意。満たさない場合はsubme=9となる。selection"、つまりRD最適なQP選択の処理らしい。refinementより上位のRD処理だと思うといい。現状のQPRDの特性についてはソースに以下のようにある。*/レート・歪み最適なQP選択。DCの符号化の向上(単独DC係数のよりよい符号化方法を見つけるとかdecimateするとか)によるもののようだ。完全なQP-RDを行わずとも利得の恩恵を受ける、より効率的な方法があるに違いないが、RD-decimationは上手くやってはくれないようだ。改善の余地がある模様。chips.avg2_w16に対するSSSE3キャッシュ分割のワークアラウンド(次善策)。一般的に使用されるqpel関数に対するPALIGNRベースの解決法。Core2チップ上の全体で1-1.5%高速化。changelogでは時々PALIGNRというSSSE3命令について言及されている。これはPackedAlignRightの意味で命名されていて、実行内容としては2つのレジスタ値を結合し、右シフトする。4"とすればxmm0+xmm1で内部的に256bit長のデータを作り出し、これを右に4byteシフトしたデータの下位128bitをxmm0に代入する。何が嬉しいかというと、SIMD命令の殆どはデータがアラインされてなければならないが、例えばRGBデータが8bit*3=24bitでアラインされている場合に、PALIGNRでアラインを補正しながらレジスタにロードできる。Garrett-Glaser(Dark_Shikari)氏はshufps命令がお気に入りみたいな事を過去に述べていて、その親戚(SSSE3版)であるpshufb命令と組み合わせると、色空間の変換なんかに非常に有用。pshufb命令はPackedShuffleBytesの意味で、やはり過去に書いたSuperShuffleEngineの恩恵を受けているはず。して見ると、彼の興味がある分野に向いていることがよくわかる。trellistrellisでのvalgrindの警告を黙らせた。valgrindとは、メモリリークなどを検出する、主にLinux用のメモリデバッグツール。Windows版はない。コンパイラの警告に対策するのと同じで、一般のユーザには関係ない変更。2.新しいAQアルゴリズムオプション。"自動分散"はlog(var)の代わりにlog(var)^2を使用しstrength(強度)をフレームごとに適用しようと試みる。ssimを使用したデフォルト状態で顕著に良好なSSIMを生成する。視覚的に良好な質を生成するかは議論の余地がある。期待の新アルゴリズムであるAutoVAQが導入された。出力の変化の割にコードは少ない。コードを確認してみると、このアルゴリズムでの変更点は、上記文中にある通り、varianceさせる基準をlog2(ac_energy)から(log2(ac_energy))^2に変えたことにある。これにより想定される出力の違いは、QP変動具合のコントラストが強くなることだ。従来のQP変動値はlog2(ac_energy)に対して線形だったが、新アルゴリズムは2乗しているので2次関数になる。(2009/08/10:削除)以下の記述は正しくない可能性が高いため、大部分を削除とします。「仲間内の備忘録レベルのつもりがちょっと有名になってきてビビった」とも言う...。正確に書けるようになったら別記事に追い出し、これらを削除します。ユーザ向けに噛み砕いて言えば、より「変更の激しい」部分(iになったMBやp/bでも差分の大きいMB)ではより高QP=低画質に、より「変更の少ない」部分ではより低QP=高画質が維持されるように、AQによるQPの振れ幅が激しくなるということだ。AutoVAQという名前にも関わらず、特段自動的に何かを最適化したり、判断する要素があるわけではなく、純粋に計算方法が変わったものだと考えるべきだろう。今回初めてAQのコードを覗いてみたが、AQが何処をどのように適応的にしているのか、大雑把に理解できた。AQとは1フレームの中で、MBごとに適応的にQPを変動させる処理だ。crfがフレームごとのQPを変動させる時間軸の処理であるとするならば、AQは空間軸の処理であると言える。そのQP変動の基準であるac_energyは、動き補償+直交変換後の係数値のAC成分から、そのMBがどの程度参照画像と似ていない=エントロピーが高いかを計算したもの(エントロピー自体ではないが)だ。この値が高ければQPを高くしてより劣化を強く=エントロピーを削っている。x264はac_energyが高いMBは変更の激しい箇所であり、情報を削ってもより視覚上の影響が少ないはずだと判断している。これにより、1枚の画の中で変更の激しい部分は大雑把に、変更の少ない部分は精細にエンコードすることができる。今回の変更は、ac_energyの値を基準に使うことは同じだが、その値に対する評価方法を変えたということだ。ac_energyの値は各係数値に対して2乗・加減算・積算をしたもので、やはり指数・対数的な意味合いを持つ尺度である。計算方法の詳細はpixel.cのPIXEL_VAR_Cマクロを参照。MCを〜70%高速化。同時に、SSSE3のintra_sad_8x8cを僅かに高速化。optionsqp/crfオプションのドキュメントを改善。ヘルプの改善なのでエンコード出力に影響なし。coding.array_non_zeroをzigzag_subにマージ(統合)。ロスレスを高速化、コードを整理。SSSE3バージョンのzugzag_sub_4x4_field、ロスレスインターレース符号化を高速化。known.参照フレームの自動調整のバグを修正。あるタイプの入力ファイルで、x264がwidth/heightを知る前に調整を行っていた。fprofile.デフォルト値の変更に適合するようfprofile設定を修正。2をfprofileに追加。shifts.dequant_flatアセンブリを僅かに高速化。冗長なシフト演算を除去。usability.x264.c(libx264ではない)に対する総合的に新しいプリセットシステムと新しいデフォルト値。"tune"と"profile"を含むその他の新規機能。詳細には--helpを見ること。殆どの他の設定と異なり、"preset"と"tune"は他のオプションの前に働く。逆に"profile"は事後的に働き、他のオプションをオーバーライド(上書き)する。願わくば、ユーザの皆さんがこれらの変更をユーザビリティの大きな改良と受け取ってくれることを。某巨大掲示板に説明は書いてあるのでここでは簡単に。設定のデフォルトが変更されて、highプロファイル(8x8dct)でBフレが使用される(bframes)等、x264がある程度真価を発揮できるものになったと思う。(film|animation|grain|psnr|ssim)が追加、ユーザはこれらで設定される項目を上書きすることができる。placebo(プラセボ、いわゆる「病は気から」のための偽薬のこと)には苦笑。(high|main|baseline)が追加、これはオプション指定の最後に評価されて、指定したプロファイルに適合しないオプションは強制的に変更される。何も分からない状態からでもプリセットがあるというのは心強いかもしれないし、安全装置としてプロファイル指定ができるのもよい。AUTHORS著者のGabrielのメールアドレスを更新。bitrates.chromaエンコーディングの早期終了。ヒューリスティックが対象のブロックはDC(直流)のみであると示す場合には、早期に終了することでchromaエンコーディングを高速化。chromaブロックの広く大多数が全く係数を持たず、持つ場合には殆ど常にDCのみであるため、これが上手く行く。このために2つのヘルパーDSP関数を追加:dct_dc_8x8とvar2_8x8。それぞれのmmx/sse2/ssse3バージョン。早期終了は、非常に低いQPでは有用ではないため、無効にされる。パフォーマンスの向上率はtrellisなしで〜1-2%、trellis=2で最大5-6%。低ビットレートで向上率が大きい。incorrect.checkasmのバグ修正。frame_init_lowres_coreのチェックはCの領域をチェックしていなかった。ユニットテストが不正であったにもかかわらず、全てのx86とPPCのセンブリは正しかった。本来リファレンスコードとしてのC言語版があり、そのアセンブラ版があるわけだけど、元となるはずのC言語版が間違っていてアセンブラ版が正しかった、ってことかな。decision.sub-8x8ブロックに対しサブパーティションコストを追加。sub-8x8のモード決定を向上。coding.更なるCABACとCAVLCの最適化。CAVLCのMV符号化で意味無く大量にコードが重複していた部分も整理。optimizations.様々なCABACの最適化と整理。interブロックに対するCABACのCBFコンテキスト計算を高速化。将来的にも有用であろう、x264_constant_p()を追加。サブパーティション関数をシンプル化。mvd_cpnをさらに少し整理し最適化。その他、様々な小規模の最適化。PPC970MP.frame_init_lowres_coreのAltiVecバージョン。CよりPPC7450上で22.4倍、PPC970MP上で25倍高速化。PowerPCにのみ影響。coding.MMXによるCABACのmvdのsum計算。CABACのmvd符号化を高速化。goto.MV予測を高速化。小さなコードサイズで、加えてgotoを使うように。個人的にはgotoのよい使い方だとは思わない。r1166のshufpdと共に、実利目的というよりも「やってみたかったから」の感がある。コードを書く人間として、時にそういう拘りに囚われる気持ちはよく分かるけれど。sumscheckasmで潜在的にクラッシュする可能性を修正。ssim_end4_sse2はアラインされたsums変数を要求する。shufpd.SSSE3とより高速なSSE2/MMXのintegral_init4v。実のところshufpdを使う口実にこれを書いた。r1140でshufpsが不当な評価を受けていると言っていた流れだろう。uclinuxconfigureのチェックでuclinuxに対応。"linux*"を"*linux*"にしているのでuc以外でも接頭辞が付くタイプのものに対応。pixelsフレームの幅が48ピクセル以下の場合のクラッシュを修正。gcc4.アセンブラのエラーとしてコンパイラの欠如を報告するのではなく、configureでccをチェック。-mno-cygwinはgcc4から削除されたのでconfigureでチェック。-mno-cygwinを使用してもエラーにならない環境なら、自動的に追加されるようになった。umh.動きベクタ候補情報の保持によりよい方法を採用。umhが2-4%高速化。optimization.幾つかの動き見積もりパターンの順番を変更。この変更は、それ自体は無意味だが、次の最適化にかかるビットストリーム変更部分を分離する。set.r915で壊していたVBVの警告を修正。これによりx264は、例えレベルが設定されていない場合でも、bufsizeの指定がないmaxrateに関して正しく警告する。binutilsSSSE3が使用可能なbinutilsであるかをconfigureでチェック。SSSE3が使用可能なbinutils(実質的に2.17以上)であることをconfigureの段階で検出。x264_cost_mv_fpel.r1155の10Lを修正。esa/tesaが壊れていた。飽きたので10Lの説明はしない。enabled.subme<=1でsatdが不正に使用されていたバグを修正。i4x4が有効にされている場合のsubme<=1を高速化。cabac/cavlccabac/cavlcで的外れなエラーハンドリングをするコードを削除。array.mv(動きベクタ)コストの配列でメモリをいくらか節約。同じラムダを使うquantizer(量子化器)が同じコストの配列を共有するように。coding)CABACとCAVLCの様々な最適化。codingを最大2〜4%高速化)。coding"で書くかも。ネット上で"residual"を訳している良い参考文献が発見できないのだが、恐らくは、「動き補償で得る参照画素領域と現在MBの差分」という意味。差分を求める手順は引き算のようなもので、動きベクタ検索ではその引き算の結果が0(ゼロ)に近づくような参照画素領域を探す。"residual"はその引き算をした結果、0にならなかった残余、という意味であると理解しているのだが、ちょっと自信がないので原文ママの方がよいかと。thread_inputthread_inputの終端部の条件競合を修正。optimizationstrellisの様々なスピード最適化。4.4.x86_32でi686をデフォルトに。アセンブラを無効にすると一般アーキテクチャ(訳注:x86一般)をデフォルトにする。gcc4.4向けにconfigureを修正。writing.符号付きゴロム符号化を高速化。RDOとビットストリームの書き込みが3%高速化。高くないが処理が単純であるため、H.264では前処理などに一部使用されている。印象としては、LHAが基本的にLZ77+ハフマンであっても、細かな部分で連長圧縮的な処理が入っているのと似ている。MV予測(空間軸ダイレクト動きベクタ予測)を高速化。col_zero_flagにアンロール(訳注:ループアンロールという高速化手法)と調整。anyways.CABACとCAVLCの更なる最適化。CABACアセンブラの0/1ビット専用バージョンを作成しようと試みたものの、GCC4.3では利得は小さい。3.4ではいくらか効果ありだが、いずれにしてもそんな古いバージョンは使用すべきでない。lookaheadフレームタイプのlookahead(先読み)に様々な最適化。issues.いくつかのコスメティックスと整理。初めからx86util.asmに置くべきだったいくつかのマクロを移動。問題ないtypoを修正。initialization"(初期化で互換性のない型が使用されている)という問題を修正。PowerPCにのみ影響。errors基本的な型、又は構成数が違う旨のエラーになるベクタ間の変換を修正。PowerPCにのみ影響。日本語化するとわかりづらいけど、要はコンパイルエラーになるからキャストを足しましたってこと。blocks"(符号化されたブロック)の統計を出力情報に追加。これは非ゼロ係数を持つintra/interブロックの総計パーセンテージを測定する。ACブロックをそれぞれ示す。この統計にはスキップブロックが含まれている事に注意。patch.アセンブラのpredict_8x8_filterを有効に。これが如何にしてholgerのintra予測パッチからその道筋を得ているか、自分は全体を把握していないが。CLANG.CLANGが見つけた死んだコードの様々なビット(訳注:過去に使用されていたが今は無意味なコード)を削除。SSIMを僅かに高速化。shufpsはx86で最も過小評価されているSSE命令だ。changelogにはよくHadamardという単語が出てくるが、これはアダマール変換を指している。アダマール変換は直交変換の一種で、誤解を恐れず大雑把に言えば、DCTの親戚で計算が非常に軽いもの。H.264に限らず「動き補償+DCT+量子化」でエントロピーを削る動画圧縮(現在の殆どの動画圧縮)では、「最終的にDCT+量子化の結果の係数群が小さくなるような動きベクタ」を求めたい。DCTそのものを動き検索時に用いると非常に重くなるので、特性が似て計算が軽いアダマール変換をDCTの代わりに使用し、効率よく適当な動きベクタを求めている。subme2-5のSATD、tesaで使用されるはず。Hadamard)という人名から来ているが、Hadamardをハダマードと読まずアダマールと読むのは、この人がフランス人で、フランス語ではhを発音しないこと、最後に付いた子音を発音しない事による。shufpsが過小評価されている...のは仕方ない気もするなぁ。使いにくい命令だと思うし、非常に高速というわけでもない。smaller.様々なCABACの最適化。b_intraの計算をresidual(残余)ループのコアから外に出し、適切な場所にハードコーディング。cabac_mb_mvdのインライン化は不要で、酷いコードサイズの無駄だった。cache_mvdのみのインライン化が速く、有意に小さい。CAVLC.CAVLCの最適化。bs_write_teを高速化、CABACのコンテキスト選択の最適化をCAVLCに移植。バイパスするケースは発生しづらく、統合されたsigmap/levelコーディングを行う際は特にそうであるため、cmovよりも分岐を使用する方が高速である。lookaheadlookahead(先読み)でintra_sad_x3_8x8cを有効に。profileベースラインプロファイルではMBAFFインターレース符号化は不可。--interlacedの指定で自動・強制的にメインプロファイルになる。assemblyintra_sad_x3_8x8のアセンブラ化。把握してないが、1132からの一連の変更は全てintra_sadに掛かっているので、多分subme=0〜1にしか影響ないのではなかろうか。assemblyintra_sad_x3_4x4のアセンブラ化。SWAP)intra_sad_x3_8x8cのアセンブラ化。intra_sad_x3_16x16でループ変数に"n"を使用(SWAPを破壊)していたのを修正。下位2bitを取り出す演算を論理積ではなく減算で行う。2進数で考えればわかる。transform.probe_skipを高速化。DC変換後に2段目のクロマ閾値を追加。performance.2つの配列に足りてなかったstatic修飾子を付加した。僅かにパフォーマンスが向上するはず。CPUs.SSE2のzigzag_interleave。PHADDをFastShuffle(より正確な名前)で置き換え。x264内部で、CPU判別の結果として、例えば「SSEが使用可能」というフラグがあるのと同様、「PHADD命令が速い」というフラグがある。これを「FastShuffleが使用可能」という実際の意味をより正確に表すフラグに置き換えたということ。Engineのことを指しているのだろう。これは新規のx86命令そのものや特定の命令の改善ではなく、内部のμOPs(uOPs・マイクロオペコード)の効率改善で既存のx86命令がある範囲で高速化(実行にかかるクロック数が減少)するものだ。初代Pentium以降のIA-32アーキテクチャにおいて、x86命令はCPUレベルで仮想化されている。CPUの外部仕様的にはx86命令を実行してると見なせるが、内部では別の命令体系=μOPsに分解した後実行される。EngineはそのうちのシャッフルμOPを高速化するもので、このシャッフル内部命令を使用するx86命令は全て高速化するが、結果的にSSE2以降のSIMD命令が高速化するので、上記のような表現になっている。initv.integral_initを高速化。非アラインロードを避けるためのpalignrはinithでは価値があるが、initvではない。Garrett-Glaser.SSSE3のhpel_filter_vを高速化。Penrynでhpel_filterが〜10%高速化。Garrett-Glaserによる。pixel_varを高速化。r1122からのDEINTBの方法を使用し最適化、Conroeでvar_16x16が〜32%高速化。NehalemSSSE3版のhpel_filter_v。r1122と同様の方法を使用し最適化。パッチは一部Holgerによる。filterが〜8%高速化。headersいくつかのアセンブラのコピーライトヘッダを更新。ソース上の著作権コメントの更新なのでバイナリには一切影響がない。Conroe.SATD/SA8D/Hadamard_AC/SSD/DCT/IDCTの広範な高速化。Core2とNehalemに対し重点的に最適化、ただしパフォーマンスは現代のx86CPUの全てにおいて向上するだろう。SATD:K8(64bit)で+18%、K10(32bit)で+22%、Penryn(64bit)で+42%、Nehalem(64bit)で+44%、P4(32bit)で+50%、Conroe(64bit)で+98%の速度向上。同様のパフォーマンス向上はSATDに似た関数(SA8D、hadamard_ac)と、やや小規模ながらもDCT/IDCT/SSDにも及ぶ。全体でのパフォーマンス向上は64bitのConroeで最大〜15%になる。datex264のコピーライト表記の日付を更新。"2003-2008"という部分を"2003-2009"としただけ。x264_sei_version_writeでの話なので注意。fprofilepre-scenecutをfprofileコマンドから削除。psy-trellisをfprofileに追加。テスト対象(実行時間計測用の設定)に関する変更なので一般のユーザには関係ない。SADを僅かに高速化。8x16より小さいサイズでNehalemのみが利得を得るが、Nehalemはcacheline関数(機能?)を使用しないため、結局のところ小さなバージョンは含まれない。TODO:内容が若干曖昧なので後でdiffを確認する。32のビデオにおけるscenecutとVBVを修正。幅・高さが32px以下の場合、つまり殆ど発生しないケースの対処。scenecutを除去。pre-scenecutのサポートを追加(パッチはBugMasterによる)。pre-scenecutは精度的に通常のscenecutよりも良好であったし、かつ、いずれにせよ通常のscenecutはスレッドモードでは働いていなかった。no-scenecutオプション(scenecut=0がno-scenecutになる・以前は-1だった)を追加。2使用時にscenecut付近のPフレームにかかる誤ったバイアスを修正。pre-scenecutコードを単純化。詳しく見ていないが、これまでpre-scenecutと通常のscenecutがあったのを、pre-scenecutに一本化した模様。通常のscenecutのコード(pre非指定時のみ動作していた部分)がごっそり削除され、pre指定時のみ動作するコードが通常のscenecutとして動作するようになっている。routineshadmard_acのAltiVecバージョンを追加。Cバージョンより2.4倍高速。この実装は少々愚直であり以下のMLのスレッドで議論されている物を実装し改善されるべきであることに注意。routinesPowerPCにのみ影響。BugMaster.r1085でのレグレッション(訳注:エンバグ)を修正。partitions=allの場合にデブロッキングがほんの僅かに間違っていた。バグはBugMaster氏による発見。CBP(近傍CBP)の計算を最適化、関連するレグレッションの修正。r1105がCBPの扱いに配列のオーバーフローを組み込んでいた。YUVファイルのインポート時にFPSを表示。64bitのサポート。distclean"する必要がある。32bitにも影響が無いとは限らないので注意しておくべき。REP->REP_RET.小規模の修正とコスメティックス。GCCの警告を抑制、問題のない配列のオーバーフローを修正、1つのREPをREP_RETに。)75b495f2723fcb77fでの10L修正。)r1109での下らないミス(エンバグ)の修正。10Lの説明はいらないよね?オリジナルスレッドとはMLでのgitからのcommit通知メールのスレッドのこと。vectors.permutationベクタ(置換ベクタ)にLUTを使用しvec_permとvec_mergehを使用しない。PowerPCにのみ影響。実際に使わなくしてるのはvec_lvslとvec_mergehで、vec_permは分割実行しなくなっただけで最終的に使ってる。AltiVec).chromaプレーンの16byteアラインメントを推進。これは16byteアラインされたデータのみを読み込める(AltiVecのような)ベクタ読み込みの単純化を可能にする。XP).intra予測の10Lを修正。%defineを忘れていたので結果としてSSEのない(例えばAthlonXP)32bitシステムでSIGILL(不正命令シグナル)になっていた。SIGILLは一般にクラッシュになる。使用するレジスタも間違っていた模様。CABAC.i16x16ブロックにdecimationを追加CAVLCで最大0.04db増加、CABACでは通常(利得が)もっと少ない。bits."とのコメントあり。decimationなのでPSNRは上がったとしても視覚上の画質が必ず上がるかは微妙。細かなオブジェクトのある実写系では特に。cases.CABAC残余(residual)コンテキスト選択をかなり高速化。RDOを〜36%高速化。極端なケースでは全体で7%の高速化。cabac_mb_cbf_ctxidxincがスッキリした。条件分岐が多数除去されパイプラインが良く通りそうだ。32-bit32bitでのcoeff_last64を高速化。asm.intra予測アセンブラの最適化。predict_8x8_huのSSSE3バージョン。predict_8x8c_pのSSE2バージョン。両planar予測関数のSSSE3バージョン。predict_16x16_p_sseへの最適化。いくつかの不要なREP_RETをRETに。Holgerによるpredict_8x8_vrのSSE2バージョン。predict_8x8_hdのSSE2バージョン。x86_64上でいくつかの予測関数のMMXバージョンをコンパイルしない。いくつかのx86_64専用C関数をアセンブラで書き直し。one.vec_mladdを上手く使い、加えてアンローリング(訳注:ループアンローリングという高速化の手法)することでmc_chroma_altivecを速度向上。PowerPCにのみ影響。残る3x3と8x8の殆どのintra予測関数のアセンブラバージョン。predict_8x8_filterのアセンブラバージョン。少数のその他の最適化。Codeか?diffは大きめ。GCC4.3以上でのコンパイルを修正。PowerPCにのみ影響。r1042と同様に、r1097における下らないケアレスミスの修正。Perl5.010001。