x264 r2146 と拡張命令

x264はCPUの拡張命令を使うことで、どんどん速くなっている。

--asmオプションを使うことで、x264が使用する拡張命令を選択することができるので、どのレベルの拡張命令が効くのかを試してみた。
環境
Win7 x64
Aviutl 0.99k
x264guiEx 1.26
Core i5 2500 (4C/4T, L3=6MB, ~AVX) 3800MHz
RAM 4GB, DDR3-1333, Dual Channnel

素材
H.264 High Profile
1920x1080p 23.976fps
2154frames (1m 30s)
ましろ色シンフォニー OPを1920x1080に拡大してエンコードしたもの
lsmashinputで読み込み

x264
x264.nlの64bit版
r2120/r2146の8bit

x264 オプション
ちょい重め。
--crf 20 --ipratio 1.5 --qpstep 12 --qcomp 0.75 --no-mbtree --rc-lookahead 60 --vbv-bufsize -1 --vbv-maxrate -1 --aq-strength 0.4 --psy-rd 1:0.2 --keyint 240 --min-keyint 4 --b-adapt 2 --me umh --subme 10 --merange 32 --direct auto --ref 4 --no-fast-pskip --no-dct-decimate --trellis 2 --colormatrix auto --colorprim auto --transfer auto

Aviutlのフィルタはなし
4回同じエンコードを行い、その最速値を結果として採用

比較
--no-asm アセンブラコードを使用しない
--asm MMX2/SSE2Fast/SSE3/SSSE3/SSE4.1/SSE4.2/AVX

x264のログ表示
--no-asm
using cpu capabilities: none!

--asm MMX2
using cpu capabilities: MMX2

--asm SSE2Fast
using cpu capabilities: MMX2 SSE2Fast

--asm SSE3
using cpu capabilities: MMX2 SSE2

--asm SSSE3
using cpu capabilities: MMX2 SSE2Fast SSSE3

--asm SSE4.1
using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1

--asm SSE4.2
using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2

--asm AVX
using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX

SSE3命令は使われていないのかな。まあ整数演算に効きそうな命令ないよね。

結果
x264_speed_asm

こうしてみるとやっぱr2120→r2146でだいぶ速くなったねえ…

さて、予想通りSSE2はないと厳しいわけだけど、その後SSSE3、SSE4.1、意外とAVXとかも少しづつ速度を押し上げてる。

PhenomIIx6とかであんま速度が出ないらしいけど、やっぱSSSE3あたりがないのも関係してるんだろうなあ…
スポンサーサイト



コメントの投稿

非公開コメント

プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: rigaya34589@live.jp
github twitter

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutl 出力プラグイン
x264guiEx 3.xx
- x264を使用したH264出力
- x264guiExの導入紹介動画>
- x264guiExの導入
- x264guiExのエラーと対処方法>
- x264.exeはこちら>

x265guiEx
- x265を使用したH.265/HEVC出力
- x265guiExの導入>
- x265.exeはこちら>

QSVEnc + QSVEncC
- QuickSyncVideoによるHWエンコード
- QSVEnc 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC
- NVIDIAのNVEncによるHWエンコード
- NVEnc 導入/使用方法>
- NVEncCオプション一覧>

VCEEnc + VCEEncC
- AMDのVCE/VCNによるHWエンコード
- VCEEnc 導入/使用方法>
- VCEEncCオプション一覧>

svtAV1guiEx
- SVT-AV1によるAV1出力
- svtAV1guiExの導入>
- SVT-AV1単体はこちら>

VVenCguiEx
- VVenCによるVVC出力
- VVenCguiExの導入>

ffmpegOut
- ffmpegを使用した出力
- ffmpegOutの導入>


○Aviutl フィルタプラグイン
自動フィールドシフト (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: aji様

clfilters 
- OpenCLベースの複数のGPUフィルタ集
- 対応フィルタの一覧等はこちら

エッジレベル調整MT (ミラー)
- エッジレベル調整の並列化/高速化
- SSE2~AVX512対応
- オリジナル: まじぽか太郎様

バンディング低減MT (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: まじぽか太郎様

PMD_MT
- SSE2~AVX512による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor (ミラー)
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
Amatsukaze改造版
- AmatsukazeのAV1対応版

x264afs (ミラー)
- x264のafs対応版

aui_indexer (ミラー使い方>)
- lsmashinput.aui/m2v.auiの
 インデックス事前・一括生成

auc_export (ミラー使い方>)
- Aviutl Controlの
 エクスポートプラグイン版
 エクスポートをコマンドから

aup_reseter (ミラー)
- aupプロジェクトファイルの
 終了フラグを一括リセット

CheckBitrate (ミラー, 使い方, ソース)
- ビットレート分布の分析(HEVC対応)

チャプター変換 (使い方>)
- nero/appleチャプター形式変換

エッジレベル調整 (avisynth)
- Avisynth用エッジレベル調整

メモリ・キャッシュ速度測定
- スレッド数を変えて測定
- これまでの測定結果はこちら

○ビルドしたものとか
L-SMASH (ミラー)
x264 (ミラー)
x265 (ミラー)
SVT-AV1 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR