x265ビルド VC2017版

なんか要望があったのでVC2017でのビルド方法。とはいっても、ほとんど何も変わらないのだが…。

以下のスクリプトで8bit/10bit multilibのx265をPGOビルドできる。

準備



Visual Studio Community 2017
CMake (Win32 Installer をダウンロード)
Mercurial (MSI installer かInno Setup installerのどちらかを)
yasm
適当なy4mファイル (ffmpegとかで自分で作るか、このあたりから適当に bus_cif.y4mとかで)

ffmpegでy4mを作る場合、
ffmpeg.exe -y -i <ソース動画> -an -pix_fmt yuv420p -f yuv4mpegpipe -frame 120 <出力.y4m>
とかで作れば良いと思う。

とりあえず、上記をすべてインストールする。cmake/hg/yasmにはパスを通しておき、コマンドプロンプトで


cmake
hg
yasm


が反応あるかどうかを確認する。



ビルド実行





md <x265をビルドするフォルダ>
cd /d <x265をビルドするフォルダ>

set TEST_MOVIE=<y4mファイルへのパス>

rem x265のソースをダウンロード
hg clone https://bitbucket.org/multicoreware/x265

rem PGOを有効
set LTCG_OPTION=PGInstrument
rem 無効にする場合はこちら
rem set LTCG_OPTION=true

rem ここではx64ビルド
md x265\build\vc15-x86_64
cd x265\build\vc15-x86_64
set CMAKE_VS_TYPE=Visual Studio 15 2017 Win64
set ARCH_VC=x64

rem x86ビルド用
rem md x265\build\vc15-x86
rem cd x265\build\vc15-x86
rem set CMAKE_VS_TYPE=Visual Studio 15 2017
rem set ARCH_VC=Win32

rem コンパイルオプション
rem PGOビルドには、/GLが必要
rem その他のオプションは適当 (必要ないかもしれない)
set VC_OPTIONS=/GL /MP /MT /Ox /Ob2 /Oi /Ot /Oy /GT /GF /Gy /fp:fast /D NDEBUG

rem PGOは/LTCG (リンク時コード生成) の一種なので
rem /INCREMENTAL:NOとしないとリンク中に警告が表示される
rem /LARGEADDRESSAWAREはx86ビルド用 (x64では単に無視される)
set VC_LINKER_EXE_OPTIONS=/INCREMENTAL:NO /LARGEADDRESSAWARE /OPT:REF /OPT:ICF
set VC_LINKER_MODULE_OPTIONS=/INCREMENTAL:NO
set VC_LINKER_SHARED_OPTIONS=/INCREMENTAL:NO

rem VC2017の環境設定を呼ぶ
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat"
call "%VS150COMNTOOLS%\..\..\VC\Auxiliary\Build\vcvarsall.bat" %ARCH_VC%

mkdir 10bit
mkdir 8bit

rem 10bit用のライブラリをビルド
cd "10bit"
cmake -D STATIC_LINK_CRT:BOOL=ON ^
-D ENABLE_SHARED:BOOL=OFF ^
-D CMAKE_CXX_FLAGS_RELEASE:STRING="%VC_OPTIONS%" ^
-D CMAKE_C_FLAGS_RELEASE:STRING="%VC_OPTIONS%" ^
-D CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING="%VC_LINKER_EXE_OPTIONS%" ^
-D CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING="%VC_LINKER_MODULE_OPTIONS%" ^
-D HIGH_BIT_DEPTH:BOOL=ON ^
-D EXPORT_C_API:BOOL=OFF ^
-D ENABLE_CLI:BOOL=OFF ^
-G "%CMAKE_VS_TYPE%" ..\..\..\source

pause

MSBuild /property:Configuration="Release";WholeProgramOptimization=%LTCG_OPTION% x265.sln
copy /y Release\x265-static.lib ..\8bit\x265-static-main10.lib

rem 8bit用のライブラリをビルド
cd "..\8bit"
cmake -D STATIC_LINK_CRT:BOOL=ON ^
-D ENABLE_SHARED:BOOL=OFF ^
-D CMAKE_CXX_FLAGS_RELEASE:STRING="%VC_OPTIONS%" ^
-D CMAKE_C_FLAGS_RELEASE:STRING="%VC_OPTIONS%" ^
-D CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING="%VC_LINKER_EXE_OPTIONS%" ^
-D CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING="%VC_LINKER_MODULE_OPTIONS%" ^
-D EXTRA_LIB:STRING="x265-static-main10.lib" ^
-D LINKED_10BIT:BOOL=ON ^
-G "%CMAKE_VS_TYPE%" ..\..\..\source

rem 情報収集用の実行ファイルを作成 (PGInstrument)
MSBuild /p:Configuration=Release;WholeProgramOptimization=%LTCG_OPTION% x265.sln

rem PGOビルドをしない場合はこれで終了
if "%LTCG_OPTION%" == "true" goto FINISH

rem 情報収集用にx265を実行(8bit)
release\x265.exe --crf 23 --preset medium -o nul "%TEST_MOVIE%"
release\x265.exe --crf 23 --preset slow --amp --weightb -o nul "%TEST_MOVIE%"

rem 情報収集用にx265を実行(10bit)
release\x265.exe --crf 23 --input-depth 8 --output-depth 10 --preset medium -o nul "%TEST_MOVIE%"
release\x265.exe --crf 23 --input-depth 8 --output-depth 10 --preset slow --amp --weightb -o nul "%TEST_MOVIE%"

rem 作成されたプロファイルをもとに
rem 最適化された実行ファイルを作成 (PGOptimize)
MSBuild /p:Configuration=Release;WholeProgramOptimization=PGOptimize x265.sln

:FINISH
rem これで終了
rem 8bit\release\x265.exeが最適化された実行ファイル


これで終わり。
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先(@を半角にしてください!)
rigaya34589@live.jp
github

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

○Aviutlプラグイン
x264guiEx 2.xx (ミラー)
- x264を使用したH264出力
- x264guiExの導入>
- x264.exeはこちら>

x265guiEx (ミラー)
- x265を使用したH.265/HEVC出力
- x265.exeはこちら>

QSVEnc + QSVEncC (ミラー)
- QuickSyncVideoによるH264出力
- QSVEncCはコマンドライン版
- QSVEncC 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC (ミラー)
- NVIDIAのNVEncによるH264出力
- NVEncCオプション一覧>

VCEEnc + VCEEncC (ミラー)
- AMDのVCEによるH.264出力

ffmpegOut (ミラー)
- ffmpeg/avconvを使用した出力

自動フィールドシフト (ミラー)
- SSE2~AVX2による高速化版
- オリジナル: aji様

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

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

PMD_MT (ミラー)
- SSE2~FMA3による高速化版
- オリジナル: スレ48≫989氏

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

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

○その他
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 (ミラー)

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

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

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