checkasmcheckasmにて#ifではなく#ifdefを使用。対象がcheckasmでコスメティックスな上にARCH_PPCに対するものなので一般にはほぼ関係ない。accurate.ABRバッファが映像の終端までの距離を考慮するようにした。2-passモードにおけるビットレートの精度が向上するはず。ファイル中でより多くのバリエーションを早期に許可することで僅かに画質をも向上するかもしれない。1-passでのabr_bufferを修正:2-passにおいて行う事とは非常に異なる事をする。ABRに対していくらかの精度低下を引き起こしていた。自信がないのだが、最後の文をより意訳すると、「スレッド数に応じて早期にバリエーションが増加してしまうことで...」といった意味だと思われる。possiblecli_input/output_t変数を可能な場合にはconstにした。「内容を変更することのない変数にはconst修飾子を付ける」という、一般的に望ましいプログラミング上の慣習に従っただけで、処理内容に変化はない。x264のバージョンをファイルヘッダに書き込み。application"だが、そのバージョン文字列はハードコード(固定)されている。フレームヘッダーに対しBlockの代わりにSimpleBlockを書き込み。mkvtoolnixは2009/04/13以来、デフォルトでこれを書き込んでいる。code.psy-rdとpsy-trellisの値のセパレータ(区切り)として、「|」を許可。mencoderのオプションにおいてzoneでpsy-trellisを設定する場合に[,:/]が全て受け付けられる。コメントのタイポ(誤植)を修正し、コードの無意味な行を削除した。ideas.ffmpegから様々な高速化のアイディアをバックポート。directの計算にmv0の早期終了を追加。mvの計算が最大2倍速い。adjustment。Cバージョンのデブロック関数において、クリッピング前にtc値をチェック。速いが、誰も使ってはいないだろう。Niedermayerに感謝する。ones"が何を指しているのか良く分からない。level/run符号化のアルゴリズム上の話なのだろうが、そのあたりをきちんと理解していないのが痛い。diffの内容と「無分岐の」というところから高速化であることは間違いない。interlacedを実装。これは想像していたよりかなり簡単だった。上手く動作するためにはdelta_poc_bottomが正しく設定される必要があるため、基本的にTFF/BFFのサポートが入らなければ役に立たない。コメントにある通り、えぇぇぇホントに?と思うほどdiffは小さい。訳者自身は動き補償関連でフィールドを意識するようなコードがもっと必要なのかと想像していたのだが。refreshでより長いkeyintを許可。長いkeyint(マクロブロック単位での幅-1より長い)が指定されたら、refreshは単に全く発生しない。換言すれば、あるrefreshが起こったら、別のrefreshを開始するために、x264はkeyintが終了するまで待つ。quality.sliced-threadのVBVをオーバーホール。predictor(予測器)をスレッドローカルにし、各スレッドが他のスレッドを調査し予測されたサイズを得られるようにした。threadでの質を向上する調整を多々。これはそういった極端なシチュエーション(単一フレームVBV)においてVBVアンダーフローの危険性をいくらか増加させることに注意。殆どの関係するユースケースでは、一貫した低画質よりも、少数の稀なアンダーフローが(例えそれがスライスをドロップしなければならないとしても)あった方が良いため、これは許容できる。psy-trellisをより詳細に表示。具体的には表示桁数を増やした模様。help更なるx264のヘルプフォーマットの修正。dequant(逆量子化)を高速化。mp4に対しコンテナレベルのアスペクト比のサポートを追加。enabled.statsファイルがないケースでの2-passレートコントロールの継続性を修正。MB-treeが有効な場合に正しく動作しなかった。10-20%.より賢いQPRD。RDチェックが省略出来るケースを捉える;QPRDのRDの呼び出しを10-20%削減。6/8におけるsubpelのイテレーションカウントの修正。subpelカウントを使用するべきではない。6と8で圧縮が僅かに高速化(だが極僅かに圧縮率が悪化)。comment.macroblock_encodeにおけるdecimate(間引き)チェックをシンプル化。誤解の恐れがあるコメントを修正。ここで言っているdecimateはオプションのdct-decimateのこと。(~0.015db).bidir検索を改善、フェードにおけるアーティファクトを修正。L0/L1とは異なる動きベクタをbidirが使用できるように解析部を変更。bidirに対し、常に<0,0,0,0>動きベクタを試行する。フェードにおける誤った動きベクタのほぼ全てを排除。PSNRを僅かに改善(〜0.015db)。フェードにおいてMVが錯綜したりiのMBが増えてしまう可能性があることは、以前にweightpのところで述べた通り。今回はこれの対策を更に増強したものと思われる。画面構成は固定でフェードしている場合にはMVはゼロで構わないのに、誤ってMVが錯綜するのを避けるため、ゼロMVを常に試すようにしたということ。これはr996あたりでオプションとしては無くなり、subme>=5で自動的に有効になるようになった、いわゆるbimeの改善と思われる。predictor_difference_mmxextpredictor_difference_mmxextを僅かに高速化。calling.レートコントロールのパラメータをオンザフライで調整する機能を追加。encoder_reconfigとx264_picture_t->paramはレートコントロールパラメータを変更するために使用できるように。これはエンコーダがネットワーク事情に適応する必要のあるような、特定のストリーミング環境で非常に有用である。変更できるのは:1)CRFモードではCRFが調整可能。maxrateとbufsizeが調整可能。3)CBRモードではビットレートが調整可能。モード間の変更と、ABRモードでのビットレートは変更できない。x264_picture_t->paramの再設定メソッドが必ずしもフレームに正確ではないバグを修正。コミットはSayMamaビデオ電話によるスポンサード(提供)。リアルタイムエンコードでストリーミング配信するような用途にしか意味はない。framerates.r1406でのレグレッションを修正。いくつかの入力フレームレートでビットレートが不正に表示されていた。support.log2fの検出、いくつかのGCCの警告、includeの順序を修正。r1413はmalloc.hのあるシステムでクラッシュを引き起こしていた。コンパイラがサポートしていれば、std=c99またはstd=gnu99に切り替えるように。visualize(視覚化)のサポートを修正。ユーザレベルではコスメティックス相当。"-std=gnu99"が使えるならそれを、そうでなく"-std=c99"が使えるならそれをCFLAGSに追加。-D_BSD_SOURCE"も加えられるのでさらにffmpegっぽく...。x264_t.x264.cの抽象化違反を修正。いかなる呼び出し側アプリケーション−−x264cliでさえ−−も、x264_tの内部を見るべきではない。CFLAGSをconfig.hに移動ビルドにのみ影響。support大きなファイルをサポートするようstatを修正。64の後に来るようにした。issues.ffms2のバージョンチェックを実装。pkg-configのビルトインバージョンチェックを最初に試す。クロスコンパイルの問題を避けるためプリプロセッサのみを使用する。mode.潜在的CBRのメッセージをABRモード時のみ表示するよう修正。デバッグモード以外で表示するように。以下の条件で強制的にパラメータを変更される。ABR(ビットレート指定)でvbv-maxrateを指定していない場合。CBRと見なされ、vbv-maxrateにビットレートと同じ値が使われる。vbv-bufsizeを指定しているがvbv-maxrateを指定していない場合。vbv-bufsizeの指定は無意味なものとして無視される。systems.log2のサポートに対するチェックをconfigureに追加。Cで要求されている特定の関数を除外している。log2fは、そういったOSで定期的に失われる、これらの関数の1つである。お怒りは大変ご尤もです...。why.config.logのサポートを追加。configureが失敗した場合に、なぜかを知ることができるようになった。なんかビルドの構成がどんどんffmpegっぽくなってきた。ffms.lavfでのクロスコンパイルを修正、ffms2.pcのサポートを追加。最新のffmsで動作するようconfigureスクリプトを更新。instead.DTSの生成を改善、DTS圧縮をlibx264に移動。この変更はPTSがDTSより小さくなりうるいくつかのケースを修正する。加えて、新パラメータのb_dts_compress(訳注:libx264のパラメータでCLIのオプションではない)がDTS圧縮を有効にする。DTS圧縮はBフレームに起因する負のDTS(つまり初期ディレイ)を排除する。このアルゴリズムはDTSの重複を避けるためにタイムベースを変更する。muxerのみがこれを使用する。muxerはEditBoxを使用するため、これを必要としない。Stamp)はデコード時刻のこと。Bフレームの存在により格納順(デコード順)と表示順が異なるMPEG系の映像圧縮技術で、これらを管理するためにMPEG1の時代から存在している時刻情報だ。デコードより先に表示されるわけはないので、一つのフレームのPTSがDTSより先立つ時刻になるのは不正である。Clock)が再現され、このSTCとPTS/DTSを比較しながら同期処理を行う。EditBoxとはr1379でMP4コンテナの初期ディレイの調整に使用されるようになったedtsのこと。Stamp)に置き換わっている。意味合いとしては名前の通りバッファ上へのComposition(合成)時刻であって、Presentation(表示)時刻ではない。オフセット値としての基準位置が違うらしく、初期ディレイが絡むとPTS=CTSではなくなるが、CTSからの計算によって一応PTS相当のものは求まる。今回の変更では、タイムスタンプに関連する場当たり的な泥臭い対応を廃し、内部的にはこのPTSに相当するものとDTSでシンプルに扱うようになった。上記で言及されてるPTSとはその「PTS相当のもの」を指しているのだろう。これらをmuxerで取り扱う際に、コンテナごとに適切な変形(MP4ならCTSに変換するなど)をするのみで、綺麗に処理できるようになっている。日本人が書いたcommitのchangelogを日本語訳する日が来るとは...複雑な気持ちだ。variables.様々なスレッド関連のコスメティックス。多くのコードを単純化、いくつかの不要な変数を削除。boost.cavlc.c中のbs_tをハードコード;これを渡して回るのは無駄。コードサイズを〜1.5kb節約、非常に僅かに速度向上。file%02d.jpg).パイプと静止画シーケンスでのlavf入力を修正。image2形式の文字列書式(例えばfile%02d.jpgといった)を使用する静止画シーケンスからx264がエンコードをできるようになるはず。end.複数スライスでのビットストリームのアラインメントを修正。非アラインアクセスのないCPUでマルチスライス符号化を壊していた。新しいシステムは単純に、各書き込み関数の先頭においてビットストリームの再アラインメントを強制し、最後にフラッシュする。usage.nnz_backupをスクラッチバッファに統合。僅かにメモリ使用量を減少。cross-compilingクロスコンパイルのためにpkg-configに対し正しくcross-prefixを使用。Perl5.010001。