---------------------------------------------------


	QSVEnc + QSVEncC
	 by rigaya

---------------------------------------------------

QSVEnc は、
Intel Media SDK を使用してエンコードを行うAviutlの出力プラグインです。
IntelMediaSDKのsample_encode.exeを改造し、x264guiEx 1.xxに突っ込みました。
QuickSyncVideoによるハードウェア高速エンコードを目指します。

QSVEncC は、上記のコマンドライン版で、おまけになります。
入力としては raw / y4m / avi(vfw) / avs / vpy に対応しています。
使い方としては、

QSVEncC.exe [オプションとか] -i "<aviファイル名>.avi" -o "<出力ファイル名>.264"
QSVEncC.exe [オプションとか] -i "<avsファイル名>.avs" -o "<出力ファイル名>.264"
QSVEncC.exe [オプションとか] -i "<vpyファイル名>.vpy" -o "<出力ファイル名>.264"
avs2pipemod.exe -y4mp "<avsファイル名>.avs" | QSVEncC.exe [オプションとか] --y4m -i - -o "<出力ファイル名>.264"
ffmpeg -v 0 -i "<ソース動画ファイル>" -pix_fmt yuv420p -vcodec rawvideo -an -f yuv4mpegpipe - | QSVEncC.exe [オプションとか] --y4m -i - -o "<出力ファイル名>.264"

みたいな感じになります。
出力はH.264/AVC raw stream (ES, Elementary Stream)になります。

出力ファイル名を"-"とすることで、stdoutにH.264/AVC ESを流せます。

オプションの詳細については、同梱のQSVEncC_options.txtを御覧ください。


【基本動作環境】
Windows 7,8 (x86/x64) (QSVEnc.auo / QSVEncC.exe x86版)
Windows 7,8 (x64) (QSVEncC.exe x64版)
Aviutl 0.99g4 以降 (QSVEnc.auo)
SSE2の搭載されたCPU

【ハードウェアエンコード動作環境】
上記「基本動作環境」に加え、
QuickSyncVideo回路の有効なCPUと対応したマザーボード
などですが、他にも色々条件があるかもなので頑張ってください。
注意点としては
・WinXP非対応
・SandyBridgeでもPentiumとかCeleronとかはQSV無効らしい。
・P67はダメ
・リモートデスクトップ中はダメ (TrueRemoteとかで代用可能、最近はできる?)
・Windows Home Server とかもダメっぽいです。(持ってないのでわからんけども)
  WHS用のIntelグラフィックスドライバが対応してない…模様。


【QSVEnc 使用にあたっての注意事項】
無保証です。自己責任で使用してください。
QSVEncを使用したことによる、いかなる損害・トラブルについても責任を負いません。
つまり、こんなのってないよっていう状況に陥っても知りません。
バグがたくさんあり、よく止まります。ご了承下さい。

【QSVEnc 再配布(二次配布)について】
このファイル(QSVEnc_readme.txt)とIntel Media SDK EULA.rtfと一緒に配布してください。念のため。
まあできればアーカイブまるごとで。

【QSVEncによるエンコードの注意点】
・基本的にQSVEncCのx86版のほうがx64版より高速です。

【使用出来る主な機能】
 [QSVEnc/QSVEncC共通]
・QuickSyncVideoを使用したH.264/AVCエンコード
・QuickSyncVideoの各エンコードモード
   - CQP  固定量子化量
   - VQP  可変量子化量
   - CBR  固定ビットレート
   - VBR  可変ビットレート
   - AVBR 適応的可変ビットレート
   - Lookahead 先行探索レート制御
・エンコード品質の7段階による指定
・インタレ保持エンコード (PAFF方式)
・シーンチェンジ検出
・SAR比指定
・H.264 Level / Profileの指定
・Blurayエンコードモード
・最大ビットレート等の指定
・最大GOP長の指定
・AVX2までを使用した処理の高速化
・Vpp機能 -- GPUを使用した高速フィルタリング
   - リサイズ
   - インタレ解除 (normal / bob / it)
   - エッジ強調
   - ノイズ低減
[QSVEnc]
・音声エンコード
・音声及びチャプターとのmux機能
・自動フィールドシフト対応
[QSVEncC]
・avi(vfw), avs, vpy, y4m, rawなど各種形式に対応

ほか。


【QSVEnc 使用方法 (簡易インストーラ使用)】
付属の簡易インストーラを使用する方法です。
手動で行う場合は、後述のQSVEnc 使用方法 (手動)を御覧ください。

1. ダウンロードしたQSVEnc_1.xx.zipを一度解凍します。

2. auo_setup.exeをダブルクリックし、実行します。
   基本的に自動で必要なもののダウンロード・インストールが行われます。

3. 途中でAviutl.exeのあるフォルダ場所を聞かれますので、
   右側のボタンをクリックしてAviutlのフォルダを指定してください。
   
4. インストールが完了しました、と出るのをお待ちください。


【QSVEnc 使用方法 (手動)】
1. 
以下のものをインストールしてください。

Visual Studio 2012 更新プログラム 3 の Visual C++ 再頒布可能パッケージ
http://www.microsoft.com/ja-jp/download/details.aspx?id=30679

Win 7/8には.NET Framework 4.0はインストール済みなので、問題無いですね。

2. 
QSVEnc.auo、QSVEnc.ini、QSVEnc_stgフォルダ をAviutlのpluginフォルダにコピーします。
libmfxsw32.dllをAviutl.exeのあるフォルダにコピーします。

3. 
Aviutlを起動し、「その他」>「出力プラグイン情報」にQSVEncがあるか確かめます。
ここでQSVEncの表示がない場合、1.で必要なものを忘れている、あるいは失敗したなどが考えられます。

4. 必要な実行ファイルを集めます。
   以下に実行ファイル名とダウンロード場所を列挙します。
   実行ファイルは32bit/64bitともに可です。
<主要エンコーダ・muxer>
 [neroaacenc (AACエンコーダ)]
 http://www.nero.com/jpn/downloads-nerodigital-nero-aac-codec.php
 
 [L-SMASH (mp4出力時に必要)]
 http://pop.4-bit.jp/
 
 [mkvmerge (mkv出力時に必要)]
 http://www.bunkus.org/videotools/mkvtoolnix/
 
<音声エンコーダ>
 [FAW(fawcl) (FakeAACWave(偽装wav)解除)]
 http://2sen.dip.jp/cgi-bin/friioup/upload.cgi?search=FakeAacWav&sstart=0001&send=9999
 
 [faw2aac.auo (FakeAACWave(偽装wav)解除)]
 http://www.rutice.net/FAW2aac

 [qtaacenc   (AACエンコーダ, 要QuickTime)]
 http://tmkk.pv.land.to/qtaacenc/
 
 [ext_bs     (PVシリーズAAC抽出)]
 http://www.sakurachan.org/soft/mediatools/
 
 [lame       (mp3エンコーダ)]
 http://www.rarewares.org/mp3-lame-bundle.php
 
 [ffmpeg     (AC3エンコーダとして使用)]
 http://blog.k-tai-douga.com/
 
 [oggenc2    (ogg Vorbis, mkv専用)]
 http://www.rarewares.org/ogg-oggenc.php 
 
 [qaac/refalac (AAC/ALACエンコーダ)]
 http://sites.google.com/site/qaacpage/
 
 [mp4alsrm23 (MPEG4 ALS (MPEG4 Audio Lossless Coding))]
 http://www.nue.tu-berlin.de/menue/forschung/projekte/beendete_projekte/mpeg-4_audio_lossless_coding_als/parameter/en/
 ※Reference Software のとこにある MPEG-4 ALS codec for Windows - mp4alsRM23.exe
 
5.
QSVEncの設定画面を開き、各実行ファイルの場所を指定します。
あと適当に設定します。

6.
エンコード開始。気長に待ちます。


【iniファイルによる拡張】
QSVEnc.iniを書き換えることにより、
音声エンコーダやmuxerのコマンドラインを変更できます。
また音声エンコーダを追加することもできます。

デフォルトの設定では不十分だと思った場合は、
iniファイルの音声やmuxerのコマンドラインを調整してみてください。


【ビルドについて】
ビルドにはVC++ 2012 Express for Desktopが必要です。

"atlbase.h"や"atls.lib"がないと言われる場合、
Windows Drivers Kit 7.1.0
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=11800
をインストールし、
includeファイルのディレクトリに"<WinDDK>\inc\atl71"を、
win32用ライブラリファイルのディレクトリに"<WinDDK>\lib\ATL\i386"を、
x64用ライブラリファイルのディレクトリに"<WinDDK>\lib\ATL\amd64"を
追加することで解決できます。

"avisynth_c.h"がないといわれる場合、
qsv_version.hの
#define ENABLE_AVISYNTH_READER 1
を
#define ENABLE_AVISYNTH_READER 0
に変更してAvsReaderを無効化するか、
Avisynth 2.5.8をSDK付きでインストールし、
includeファイルのディレクトリに"<Avisynth>\FilterSDK\include"を
追加することで解決できます。
本ビルドはAvisynth2.5.8の"avisynth_c.h"を使用しビルドしています。

"vapoursynth.h"がないといわれる場合、
qsv_version.hの
#define ENABLE_VAPOURSYNTH_READER 1
を
#define ENABLE_VAPOURSYNTH_READER 0
に変更してVSReaderを無効化するか、
VapourSynthをインストールし、
includeファイルのディレクトリに"<VapourSynth>\sdk\include"を
追加することで解決できます。

コーディングが汚いとか言わないで。

【コンパイル環境】
VC++ 2012 Express for Desktop


【検証環境 〜2011.09.30】
Win7 x64
Core i5 2500 + H61
4GB RAM
Intel Graphics Driver 8.15.10.2376
Intel Graphics Driver 8.15.10.2509

【検証環境 2011.10.01〜】
Win7 x64
Core i5 2500 + Z68
GeForce 8600GT as Primary GPU
4GB RAM
Intel Graphics Driver 8.15.10.2509

【検証環境 2012.01〜】
Win7 x64
Core i5 2500 + Z68
4GB RAM
Intel Graphics Driver 8.15.10.2509
Intel Graphics Driver 8.15.10.2559 (API v1.1)
Intel Graphics Driver 8.15.10.2626 (API v1.3)
Intel Graphics Driver 8.15.10.2653 (API v1.3)

【検証環境 2012.05〜】
Win7 x64
Core i7 3770K + ASUS P8Z77-M
16GB RAM
Intel Graphics Driver 8.15.10.2696 (API v1.3)
Intel Graphics Driver 8.15.10.2729 (API v1.4)
Intel Graphics Driver 8.15.10.2753 (API v1.4)
Intel Graphics Driver 8.15.10.2761 (API v1.4)
Intel Graphics Driver 8.15.10.2867 (API v1.4)
Intel Graphics Driver 9.17.10.2932 (API v1.4)
Intel Graphics Driver 9.17.10.3071 (API v1.4)

【検証環境 2013.06〜】
Win7 x64
Core i7 4770K + Asrock Z87 Extreme4
16GB RAM
Intel Graphics Driver 9.18.10.3165 (API v1.6)
Intel Graphics Driver 9.18.10.3187 (API v1.6)
Intel Graphics Driver 9.18.10.3220 (API v1.7)
Intel Graphics Driver 9.18.10.3257 (API v1.7)

【Intel Media SDKとAPIの対応関係】
API v1.7 … Intel Media SDK 2013 R2
API v1.6 … Intel Media SDK 2013
API v1.4 … Intel Media SDK 2012 R3
API v1.4 … Intel Media SDK 2012 R2
API v1.3 … Intel Media SDK 2012 (Intel Media SDK v3.0)
API v1.1 … Intel Media SDK v2.0


【どうでもいいメモ】
2013.10.19 (v1.11)
[QSVEnc]
・変更したフォントの(標準⇔斜体)が保存されない問題を修正。
・設定ファイルのメモが保存されない問題を修正。
・簡易インストーラを更新
  - Windows 8.1に対応したつもり
  - アップデートの際にプリセットを上書き更新するかを選択できるようにした。
[QSVEncC]
・更新なし

2013.09.12 (v1.10)
[共通]
・入力がインターレースとして設定されていない場合にVPPのインタレ解除を設定すると、おかしな事になるのを修正。
[QSVEncC]
・Unicodeに対応(基本的にワイド文字列で処理)。
・ログをファイルに保存できるようにした。追記型。(--log <ファイル名>)

2013.08.25 (v1.09)
[共通]
・1.08で、「d3d11を試さないように」というのが徹底されていなかった問題を修正。
・d3d11は基本的にはd3d9より遅いようなので、必要な時以外はd3d9を使うようにした。
[QSVEncC]
・--d3d9/--d3d11 オプションにより、(使用可能なら)強制的にモードを設定できるようにした。

2013.08.21 (v1.08)
[共通]
・Win7ではd3d11を試さないように。
[QSVEncC]
・avs/vpy readerのエラー処理を改善。
・vpyマルチスレッドモードを追加(--vpy-mt)。
  VapourSynthの示すスレッド数を使用する(ただし最大127まで)。

2013.08.05 (v1.07)
[共通]
・Win8 + dGPUでiGPUから出力していなくても、QSVを利用できるようにした。
  BIOS(UEFI)で[iGPU Multi-Monitor]をEnabledにすることで使用可能。
・d3d11モードに対応した。
[QSVEncC]
・1.05以降、y4m経由で正しく動作しなくなっていた問題を修正。
  ご指摘ありがとうございました。
・Ctrl + Cで中断した際にも途中までの情報を表示するようにした。

2013.08.02 (v1.06)
[共通]
・vppにより「通常」あるいは「Bob化」のインタレ解除を行う場合に、
  シーンチェンジ検出・VQPを使用可能にした。
・インタレ保持エンコではLookaheadモードを使用できないというメッセージを表示するようにした。
[QSVEnc]
・配布プロファイルを見直し
  いくつかの設定例を追加。
[QSVEncC]
・x86版にVapoursynth r19用readerを追加。拡張子vpyで自動でVapoursynth Readerを使用。
  vfw読みより若干(〜5%)高速。
  yv12読み込み専用。
  yv12以外(yuy2,RGB等)の場合は自動的にavi(vfw)読みに変更。
  
2013.07.20 (v1.05v2)
[QSVEncC]
・ヘルプ表示を修正。

2013.07.20 (v1.05)
[QSVEncC]
・Avisynth Readerを追加。拡張子avsで自動でAvisynth Readerを使用。
  vfw読みより若干(〜10%)高速。

2013.07.13 (v1.04)
[QSVEnc]
・Lookaheadモード時に最大ビットレートの指定ができなかった問題を修正。
[QSVEncC]
・Lookaheadモードの指定に対応。

2013.07.08 (v1.03)
・デバッグ用のログファイル出力が行われていたのを修正。

2013.07.07 (v1.02)
[QSVEnc]
・新しいプロファイルを保存しようとするとエラーが出る問題を修正。
  ご指摘感謝します。
・プロファイルを少し見直し。
[QSVEncC]
・特に変更なし。

2013.07.03 (v1.01)
[共通]
・Intel Media SDK 2013 ベースに移行、API v1.7に対応。
・libmfxsw32.dll / libmfxsw64.dll を更新。
・指定しても効果のないAPI v1.6の機能を削除。
  - マクロブロック単位のレート制御
  - 拡張レート制御 (ビットレート指定モードの時のみ)
・API v1.7の機能を追加。
  - 先行探索レート制御 (lookahead)
  - 歪みレート最適化 (trellis)
[QSVEncC]
・qualityオプションが正しく読めない問題を修正。

2013.07.01 (v1.00)
[共通]
・開発環境をVC++ 2012 Express for Desktopに移行。
・あわせて.NET Framework 4.0 Client に移行。
・動作環境からWin Vistaを外した。Intel Media SDK 及びドライバの対応が微妙なため。
・色空間変換・シーンチェンジ検出などでAVX/AVX2に対応。
  いつもどおり自動的に最速のものを選択。
・Intel Media SDK 2013 ベースに移行、これによりAPI v1.6に対応。
・libmfxsw32.dll / libmfxsw64.dll を更新。
・以下のAPI v1.6の機能を追加。
  - マクロブロック単位のレート制御
  - 拡張レート制御 (ビットレート指定モードの時のみ)
・品質設定を3段階から7段階に拡張。
・v1.00にあわせて簡易インストーラを更新。
・シーンチェンジ検出時に段階的なフェードシーンで
  フリッカのようになってしまう問題を対策。
[QSVEnc]
・ログウィンドウで出力ファイル名を右クリックから
  「動画を再生」「動画のあるフォルダを開く」機能を追加。
[QSVEncC]
・--qualityオプションの変更。
  best, higher, high, balanced(default), fast, faster, fastestの7段階。

2013.05.23 (v0.23v2)
[共通]
・Blurayモード強制を追加。
  QSVEnc.confの[QSVEnc]セクションに
  force_bluray=1
  と追記してください。

2013.05.12 (v0.23)
[共通]
・エンコード情報表示を改善。
[QSVEncC]
・AVI(vfw)読み込みに対応。
  - avi/avs/vpyなど、vfw経由で読み込めるものについて、直接読めるようにした。
  - 拡張子avi/avs/vpyで自動的にavi読み込みに切り替え。明示的な指定は--avi。
  - YV12/YUY2/RGB24/RGB32読み込み対応、YV12推奨。
  - YV12/YUY2読み込みについてはインタレ対応。
  - RGB24/RGB32読み込みはvppにてRGB32->NV12変換を行うため、インタレ非対応。
  - 進捗状況と残り時間を表示。
・最後にエンコードにかかった時間を表示。

※AvisynthのAPIを直接叩く方法は、とある理由により実装する予定はありません。

2013.05.05 (v0.22)
[共通]
・vppによるインタレ解除にbob化(60fps化)を追加。
・最大GOP長を"0"とすることでfps×10を自動的に設定するようにした。

2013.05.05 (v0.21)
[QSVEnc]
・映像一時ファイルが残ってしまう問題を修正。
[QSVEncC]
・y4m入力時にアスペクト比を読み取るようにした。

2013.05.04 (v0.20)
[共通]
・HWエンコ時の入力フレームバッファのデフォルトを4→3。
・内部のパイプラインバッファ数を調整し、少し高速化。
[QSVEnc]
・yuy2→nv12変換を調整してわずかに高速化。
・x264guiEx 1.75までの更新を反映。
  - mux時にディスクの空き容量の取得に失敗した場合でも、警告を出して続行するようにした。
  - 設定画面で「デフォルト」をクリックした時の挙動を修正。
  - 音声設定のパイプ - 2passのチェックボックスの挙動を修正。
  - エンコ前後バッチ処理を最小化で実行する設定を追加。
[QSVEncC]
・フレーム読み込み時のyv12→nv12変換を調整して高速化。
・cropオプションを追加。
・エンコード後の結果表示が崩れていたのを修正。

2013.03.08 (v0.19v2)
[共通][QSVEnc]
 なし。
[QSVEncC]
・y4mのカラーフォーマットの指定形式を追加。

2013.02.14 (v0.19)
問題の報告ありがとうございました。
[共通]
・0.15以降、Baseline Profileでのエンコードが失敗する問題を修正。
[QSVEncC]
・ヘルプでsarが二重に表示されていたのを修正。

2013.01.31 (v0.18)
[共通]
・0.17で、一部の環境で "undefined behavior" と出てエンコードが始まらない問題を修正。
  報告ありがとうございます。
・x86のシーンチェンジ検出・可変QP調整計算をさらに高速化。

2013.01.26 (v0.17)
[共通]
・インタレ保持エンコード時に、
  0.15以降、あるいは0.14以前で固定長GOPにチェックを入れていた場合に、
  周期的に破綻するフレームが出ていたのを修正。
  エラー報告に感謝致します。
・シーンチェンジ検出・可変QP調整計算を高速化。

2013.01.23 (v0.16)
[共通]
・シーンチェンジ検出・可変QPが意図と違った動作を指定していたのを修正。
  画面の下半分しか見ていなかった。

2013.01.22 (v0.15)
[共通]
・シーンチェンジ検出による強制Iフレーム挿入機能を追加。
・可変QPモード追加。
  両方とも入力がプログレッシブ(非インタレ)の時のみ有効。
・エンコード後、フレームタイプごとの総サイズを表示。
[QSVEnc]
・自動フィールドシフト使用時に不安定だった問題を修正。
・その他の設定にタイマー精度を向上させる設定を追加。
・エンコ前後バッチ処理を最小化で実行する設定を追加。
  その他の設定から。

2012.12.26 (v0.14)
[QSVEnc]
・出力ファイルの種類のデフォルトを変更できるようにした。
  その他の設定から。反映には設定後Aviutlの再起動が必要。

2012.12.22 (v0.13)
[QSVEnc]
・自動フィールドシフト対応。
  L-SMASH muxer用iniファイル(auoと一緒に入っているほう)を使用してください。
  mp4box用iniファイルでは動きません。
・x264guiEx 1.65までの更新を反映。
  - ログウィンドウの位置を保存するようにした。
  - 高Dpi設定時の表示の崩れを修正。
  - エンコード開始時にクラッシュする可能性があるのを修正。

2012.11.15 (v0.12)
[QSVEnc]
・x264guiEx 1.62までの更新を反映。
  - ログウィンドウの色の指定。
  - 高DPI時の表示崩れ修正。

2012.11.02 (v0.11)
[QSVEnc]
・muxerコマンドにfps指定を追加。
・x264guiEx 1.61までの更新を反映。
  - 音声エンコ / muxerのメッセージ取り込みとエラー表示。
  - 映像・音声同時エンコード時の表示の改善。
  - ログウィンドウ透過率の指定。

2012.10.20 (v0.10)
[共通]
・v0.08以降、Intel iGPUがプライマリGPU(メインモニタに出力しているGPU)でない場合に、
  ビデオメモリモードが使用できず、error: null pointer というエラーを発生させていた問題を修正。
・colormatrix, coloprim, transferの設定は、HWエンコ(QSV)では効かないので、
  設定画面やヘルプの表示をそのように変更。
[QSVEnc]
・Bluray互換出力のチェックボックスが変更チェックから外れていたのを修正。
・x264guiEx 1.59までの更新を反映。
  - エンコ"前"バッチ処理を追加。
  - ブログへのリンクを追加。

2012.10.13 (v0.09)
[共通]
・Bluray向け出力設定を追加。
[QSVEnc]
・Bluray出力用プリセットを追加。

2012.10.06 (v0.08)
[共通]
・Intel Media SDK 2012 R3 (API v1.4)に対応。
  - Windows8 + DirectX 11.1対応、ということのようだ。
  - Win7では特に意味は無い?
[QSVEnc]
・簡易インストーラを追加。
・x264guiEx 1.57までの更新を反映。
  - 映像と音声の同時処理モードを追加。
    音声処理順の選択肢として"後","前","同時"。
  - 実行ファイルを指定するボタンを右クリックすると、
    現在指定中の実行ファイルのhelpを表示できたり。
  - QSVEnc.iniで、音声/muxファイル名を記述するところで、2つ以上書けるように
    具体的には、
    filename="ffmpeg.exe;avconv.exe"
    みたく、どちらでも利用できるように。
  - インタレi420変換で、これまでの単純平均でなく、3,1-加重平均を使用。
  - 音声の長さと動画の長さが大きく異なる場合に警告を出すようにした。
  - 1/2サイズのFAWCheckで、384kbpsを超えるAACの場合にnon-FAWと誤判定するのを修正。
  - 音声設定にflac / fdk-aac (ffmpeg/avconv)の設定を追加。
[QSVEncC]
・特になし。

2012.07.08 (v0.07)
[共通]
・v0.06で追加したオプション類をソフトエンコの時のみ有効とした。
  - ハードウェアエンコ(QSV)ではどうも反映されないので。
・MVC関連の使用していないコードを省略
・その他細かい調整
[QSVEnc]
要QSVEnc.ini更新
・L-SMASH対応
  - muken氏にL-SMASH muxerを更新していただき、PAFF H.264/ESをインポートできるようにしていただきました。
    ありがとうございます!
  - QSVEncでは、L-SMASH用iniファイルを基本に変更します。
    mp4boxに代わり、L-SMASH muxer / remuxerを指定してください。
  - L-SMASH rev600以降を使用してください。
  - 一応mp4box用iniも入れておきますが…。
・x264guiEx 1.46〜1.49までの更新を反映。
  - faw2aac.auo対応
    > faw2aacの進捗をログウィンドウにも表示。
    > faw2aac.auoがあれば、fawclがなくてもFAW処理できるように。
  - L-SMASH対応 (x264guiExと同じコードを使用)
  - 細かい問題の修正
    > 実行ファイルを開く... 画面で、デフォルトのフォルダがおかしくなることがあるのを修正。
    > 保存していた"stg設定ファイルの場所"のルートが存在しない場合に、エラーを吐くのを修正。
  - 表示の修正
    > mux時のエラーメッセージで、音声ファイルがないのでmuxできない場合に、
      映像ファイルがないという表示になっていたのを修正。
  - %{chpath}の置換が一時ファイル名を元に作られていたのを、出力ファイル名からに修正。
[QSVEncC]
・とくになし。

2012.05.11 (v0.06)
[QSVEnc]
・x264guiEx 1.42の更新の一部を反映。
 - WinXPで相対パスが正常に取得されない問題への対策。
   WinXPだと、相対パスを取得するときに使うPathRelativePathTo関数が、".\dir"を返すべきときに"\dir"を返すことがあるようで、
   QSVEncはXPは対象外だが、念のため、回避のためのコードを追加した。
 - QSVEnc.iniのqtaaacenc/qaac用設定にCVBRモードの設定を追加した。
   順番的に自然な、ABRとTVBRの間に挿入したので、
   設定ファイルのインデックスがずれることがあるかもしれない。
[QSVEncC]
・v0.05でy4m + パイプが動かない問題を修正。

2012.05.05 (v0.05)
[共通]
・Intel Media SDK 2012 R2 (API v1.4)に対応。
  - libmfxsw**.libの更新(API v1.4)
  - API v1.4に特に重要な更新はない。
・vppの動作を修正。
・情報表示の改善。また表示するエンコード情報の追加。
・これまで「品質」での自動設定しかできなかった設定項目の追加。
  ただし、ある程度「品質」の設定に左右されるので、そのとおりになるとは限らない。
  - MV探索範囲、MV探索精度の設定。
  - CAVLC/CABACの設定。
  - 歪みレート最適化(RDO, 要CABAC)の設定。
  - フレーム間予測/フレーム内予測時のブロックサイズの設定。
・プロファイル指定時の動作を改善。
・その他多くの細かい改善・変更。もう忘れた。
[QSVEnc]
※要QSVEnc.ini更新
※設定ファイルの互換性が一部ありません。(SAR比等)
  もう一度再設定をお願いします。
・SARをmux時でなく、エンコ時に指定するようにした。
・SAR比をmp4boxで再指定するオプションを追加した。
・x264guiEx 1.34〜1.41の更新のうち、以下のものを反映
  - 設定ファイル(stgファイル)の表示を、フォルダ構造を反映して表示できるようにした。
    あわせて、設定ファイルの新規保存もフォルダを指定できるようにした。
  - 設定保存処理を改良。
  - 簡易ビットレート計算機で、動画の長さをフレーム数 + フレームレートでも計算できるようにした。
    時分秒 <-> フレーム数は下のボタンで切り替えられる。
  - chapterファイルをmuxすることを選択し、しかしchapterファイルが存在しない時に、
    L-SMASH remuxerやmkvmergeを使用したmuxでも、とりあえずmuxは通るようにした。
  - 「ファイルを開く...」などから得られるパスを、相対パスにする設定を追加。
    その他の設定から。
[QSVEncC]
・オプションの追加とhelpの追加・修正。
[現状の問題点] (Intel 2696ドライバ from Windows Update, API v1.3)
・インタレ保持エンコが事実上できない。(倍フレーム数問題)
・hwエンコ(QSV)でcolormatrix,colorprim,transferの指定が効かない。
  (colour_description_present_flag = 0 (h264_parse))
・hwエンコ(QSV)でシーンチェンジ検出できない。
  実装してみて、ソフトウェアモードでは動くのだが、hwエンコでうまく動かないので、無効化してある。
  参考: http://software.intel.com/en-us/forums/showthread.php?t=103385

2012.02.27 (0.04v2)
[QSVEncC]
・一部のコマンドラインが正常に動かないのを修正。
・x86のバイナリなのかx64のバイナリなのか、
  右クリック > プロパティから確認できるようにした。

2012.02.23 (v0.04)
[共通]
・Intel Media SDK 2012に仮対応 (API v1.3に仮対応)
  - 色設定の追加
  - AVBRモードの追加
  - libmfxsw**.libの更新(API v1.3)
  - APIバージョンの検出と表示 (QSVEncでは設定画面に、QSVEncCでは--lib-checkで)
[QSVEnc]
・x264guiEx 1.27〜1.33の更新を反映
  - 安定性の向上。
  - ログウィンドウの大きさを保存できるようにした。
  - STAThreadAttributeを指定。
  - muxを行っていない場合に「エンコ後バッチ処理」に失敗するのを修正。
  - 録画後バッチ処理のバッチファイル指定欄のドラッグドロップ対応。
  - 音声エンコで単純なWAV出力に対応した。
  - 設定ファイル保存処理の改良。
  - ファイルサイズ取得の改良。
  - 設定画面とログウィンドウでフォントを変更できるようにした。
  - QSVEnc.iniのoggenc2コマンドラインを修正。強制的に44.1kHzになってしまっていた。
  - QSVEnc.iniにqaac/refalac用設定を追加。
  - QSVEnc.iniにAnonEncoder用設定を追加。
[QSVEncC]
・x86版も静的リンク。(QSVEncCだけなら、VC++2008 再頒布可能パッケージ不要)
・-o - でstdout(標準出力)に出せるようにした。

2012.01.22 (v0.03v2)
・設定画面が出ない状態を解消。

2012.01.22 (v0.03)
要iniファイル更新(iniファイルバージョン1→2)
・別スレッドでフレーム読み込み。ちょっぴり高速化するはず。
  フレーム読み込みバッファ機能を追加。バッファサイズは1〜16フレーム。部分並列化効率を向上させる。
  QSVEncでは読み込みバッファサイズ(タブ3枚目)で、QSVEncCでは--input-bufで大きさを指定できる。
  あまり多すぎると逆に遅くなるので注意。(キャッシュサイズとの関連だと思う)
  エンコ速度  適切なバッファサイズ
  〜50fps         1〜2
  〜100fps        2〜3
  〜200fps        3〜6
  それ以上        4〜8
  エンコ速度が速ければ速いほど効果があるはず。
  逆にfullHDのエンコードなどではたいして効果はない。
  QSV使用時にバッファサイズをあんまり大きくするとGPUメモリを確保できなくなってこけるので注意。
・x264guiEx v1.11〜v1.26の追加機能の取り込みとバグ修正の反映
  ・相対パスを使用できるようにした。
  ・ツールチップヘルプの抑制(その他の設定から)
  ・「このウィンドウを最小化で開始」が一回しか効力を発揮せず、解除されてしまう問題を修正。
  ・視覚効果をオフにできるようにした。
  ・プロファイルにメモを残せるようにした。プロファイルの右側に表示。ダブルクリックで変更できる。
  ・QSVEnc.iniが存在しない、あるいは古い時にエラーメッセージの前に例外が発生する問題を解決。
  ・Apple系に対応したmp4/chapterをmp4boxを用いても出力できるようにした。
  ・その他の設定にログウィンドウ関連の設定(「透過」と「最小化で開始」)を追加。
  ・設定ファイルのサイズが異なっても、Aviutl側のプロファイルに保存された設定も読めるようにした。
  ・チャプターファイルの自動削除をオンオフできるようにした。その他の設定から。
  ・チャプターファイルが存在しない場合でもとりあえずmuxを成功させるようにした。
  ・エンコ中でないとき、Escキーでログウィンドウを閉じるようにした。
  ・エンコ後バッチファイル実行を追加。
  ・設定画面でEscキーのオンオフ設定を追加。
  ・muxエラー対策。mux時チェックを根本的に改善。
・QSVEncCにx64版を追加。わずかに速い…かもしれない。基本たいして変わらない。
  まあx64ビルドもできるよ、ということ。
・不要なメモリ解放->再確保を防止。

2012.01.16 (QSVEncC_20120116)
・コンソールへの出力をきちんとstderrとstdoutに整理。基本stderr。

2011.10.02 (v0.02)
・Intel GPU がプライマリGPUでない場合でもQSVが使用できるようにした。
  またその時d3dメモリモードが使用出来ない問題を解決。
  (d3dメモリモードでないとvppのパフォーマンスが低下する)
・QSVEncCがわけのわからんエラーメッセージを吐くのを改善。

2011.09.27 (v0.01)
・fpsの表示がおかしい問題を修正。エンコに影響なし。

2011.09.26 (v0.00)
・公開版

2011.09.26
・自動ログ保存の場所指定追加。

2011.09.25
・たくさんバグ修正。
・エンコードしたフレームタイプの内訳をログに表示。

2011.09.24
・いろいろメッセージ追加。

2011.09.23
・slices設定項目追加。
・コマンドライン版を作ってみた。QSVencC。
  まあBonTSDemuxに対するBonTSDemuxCみたいなもん。
  パイプ入力やってみたかっただけ。まあでもこれでAvisynthでも使えるはず。

2011.09.22
vpp SceneChangeDetectionがよくわからん。よって対応せず。

2011.09.20
vppインタレ解除対応(ITの使い方がよくわからん)

2011.09.19
ぶっちゃけ、色変換(YUY2->NV12)だけをhw vppでやっても遅くなるだけということが0.02でわかった。
しょうがないからその他のvpp(Resize,Denoise,DetailEnhancer)も追加(どういう方向性だ…)

2011.09.19
hw vpp (YUY2 -> NV12) 対応。
GPU EU処理で早くなるか、あるいはメモリコピー増加で遅くなるか
→遅くなったorz

2011.09.18
Bフレーム設定、GOP長、d3d mem modeなどを追加。
シークできなくなる条件が解明。
YUY2->NV12を直接変換に改良。

2011.09.18
動くよ。

2011.09.17 (on sample_encode.exe)
インタレ保持 + hw encode は変。