威志さんのビデオコーデックUtVideoの最新バージョン19.0.1に新しくT2というモードが追加されました。T2ではハフマン圧縮から離れSIMD処理を軸とした仕組みへと転換した模様。これにより大幅な高速化を達成できたとのことなので、簡単に試してみました。■処理速度についてYUY2(YUV4:2:2)をHaswell(AVX2)で処理した場合の評価です。T2が約1割早いこれくらいの差になると調整の範疇(圧縮効果と処理速度のトレードオフなど)と思われるのでAMV4と同等の高速処理を達成できたとみていいかと思います。いずれもシングルスレッドで4K(YUY2)を60fps以上処理する能力があるため処理速度の面では十分な性能です。■圧縮効果について無圧縮の画像に対し何分の1に圧縮できるか(ファイルサイズをどこまで小さくできるか)の評価です。サンプル1:比較的画質が悪かったり、大きく動く映像であるため、どのコーデックにおいても圧縮しにくいサンプル。NileYoutubeサンプル2:画質が良く、動きが少ないため圧縮しやすいサンプル。ともにほぼ同等なので驚いた。圧縮しやすい映像サンプルではAMV4:DY3がまだまだ有利なので安堵した。AMV4ではフレーム間圧縮や二次圧縮と言った圧縮効果を高めるための仕組みが既に含まれていますので、その差がまだまだあると感じました。T2もこれから圧縮効果を高める仕組みに取り組んでいくかと思うので、圧縮効果をどこまで高めることができるか、また、圧縮効果を高めた時に処理速度を維持できるかと言ったところがポイントになっていくと思います。DATA社からUSB3.0接続のフルHDキャプチャカード「GV-USB3/HD」(以下GV-USB3)のサンプル品を頂きましたので早速使ってみました。私はアマレコTVの作者なのでアマレコTV上でGV-USB3を使う場合の話が中心となります。59.94Hzの場合デバイスは「GV-USB3」と書かれているものを選択します。入力端子はHDMIのみなので選択肢はありません。フォーマットの中では「fcc=YUY2」のものを選択します。RGBを選択してもRGBでキャプチャできるわけではありません(YUV422でキャプチャしたものをRGBへ変換するだけのようです)。キャプチャ元となるビデオ信号(リフレッシュレート)が60Hzの場合はアマレコTV4のフォーマット欄でfps=60.00のものを選択します。60Hzのビデオ信号を59.94fpsで録画すると(59.94Hzを60fpsで録画する場合も)大きな問題とはなりませんが、約16秒毎に音ズレ補正が生じます。この場合、約16秒毎に(-)のドロップがカウントされ、1フレーム間引かれます。R7のPCで動作確認を行いました。650GV-USB3の接続はPC背面にあるマザーボード上のUSB3.0端子を使っています。GV-USB3以外のUSB3.0デバイスは接続していません。59.94Hzいずれも数時間程度使ってみましたがあっさり動作しトラブルは発生しませんでした。・デバイスマネージャに表示されないと言ったことはありませんでした。・動作している最中にデバイスが切断されることもありませんでした。・PCの再起動でデバイスを見失うこともありません。Ryznのパソコンでは1時間の録画の間に数フレームの取りこぼし(GV-USB3からアマレコTV4へフレームが送られてこない)が起こることがありました。1時間録画して取りこぼしゼロの場合もありましたので、その時のPCの状態に左右されると言ったところでしょうか。Haswellでは1時間の録画テストを何度か行いましたがGV-USB3が原因と思われるフレームの取りこぼしは確認されませんでした。Ryzenにて録画したときのアマレコTV4のレポートファイルの一部vd=で始まる行がキャプチャカードからフレームを受け取った際の情報で、前のフレームを受け取ってからの経過時間(インターバルタイム)などが記録されています。VT=で始まる行が録画処理に関する情報で、音ズレ補正等の情報が記録されています。35ms)の行は前回フレームを受け取ってから35ms後にフレームを受け取っています。59.94Hzのビデオ信号をキャプチャしているので、通常16.6ms間隔でフレームを受け取ることになりますが、この時は1フレーム取りこぼしたため16msではなく35msとなっています。11606f)の行は録画に関する情報ですが、先の取りこぼしを受けて音ズレしないよう1フレーム水増ししています。こんな感じでこの録画テストでは約1時間40分録画して、9フレームの取りこぼしがありました。Capture」と言うキャプチャソフトが同梱されています。GPUエンコーダーに対応していたり、webカメラの映像を合成したり、マイクの音をミキシングすることができるため実況動画を作るのに便利なキャプチャソフトとなっています。使い勝手も良く好印象ですが、CPU負荷が高いとの指摘がされているのでそのあたりを調べてみました。Captureの表示フレームレートは安定しない)。Captureをフルスクリーンにすると更にCPU負荷が高くなるようです(タスクマネージャのグラフの盛り上がっている分部がフルスクリーン状態)。なんとなくフルスクリーンにすることで表示フレームレートが安定する気がしますが、やはりガクガクする様子が見て取れます。アマレコTV4はオーバーレイレンダラーを使っているためスクリーンショットに映りませんが、表示フレームレートは安定しています。Captureと同様に表示フレームレートは不安定になります。Captureはキャプチャソフトを起動してプレビューした状態でCPU負荷がやや高いです。アマレコTV4+AMV4は可逆圧縮なので高画質な代わりにファイルサイズが大きくなります。Captureに対し、ファイルサイズは大きくなるけどCPU負荷が低く完璧な画質のアマレコTV4と言ったところでしょうか。59.94Fpsで1分間録画して約3600フレームのうち同じ画像が何枚録画されているか確認してみました。ベンチDX11はフレームカウント値が毎フレーム更新されるため、正常であれば同じフレーム画像は一枚も録画されません。Captureについてはかなり厳しい結果です。アマレコTV4は動画の1フレーム目と2フレーム目が同じ画像でした。録画開始直後はどうしても不安定になるため冒頭の重複フレームについてはしょうがないと言ったところです。Captureに関してはちょっと厳しいと感じました。不具合等が無かったため、いずれもベータ版と同じ内容となっています。Ver4.02と上位互換、ライセンスキーもそのまま使えます。処理が遅くなる場合があるため)SSE版のモジュールを使います。AVX命令は使いません。CPU設定にRyzen用の「ZEN」を追加しましたが、現状「SSE4.1」と同じ内容となります。DR2、DR3、DY2、DY3はVer4.02と同じ内容となります。入出力フォーマットにNV12が追加されました。対応OSからWindows7を削除。Windows7での動作確認は行っておりません。■ダウンロードホームページでダウンロードしてください。この記事ではなじみのあるShadowPlayと表記します)の性能をゲームソフトのベンチマークスコアで比較します。ShadowPlayの続編となります。スーパーアマレココのバージョンが4.20になったことと、テストに使うPCが最新の環境に変わっています。(1920x1080)、59.94Hzに設定し、FF14ベンチをウインドウモード、HDサイズ(1280x720)、DirectX11、高品質(ノートPC)で実行。録画しない場合と、各キャプチャソフトでデスクトップ全体を録画した場合のベンチマークスコアで評価します。16bitでキャプチャ、AMV4:DY3で圧縮、テクスチャをリングバッファにするOFF(設定項目なし)・ShadowPlay録画設定プライバシー管理で「はい」を選択し、デスクトップ全体1920x1080を59.94fps、50Mbpsで録画します。12bitと思われます。CPUは4コア、8スレッド、HTT対応、AVX2対応。BoostはBIOSで無効化、動作クロックがテスト中に変動しないようにしています。平均値でShadowPlayの方が良い結果となりましたが、2回目のスコアを除外したスーパーアマレココVer4.20の平均スコアは25688となりShadowPlayと同等となります。Ver4.20は同性能と言えます。12bit(AMV4:DS3)のファイルサイズを比較します。Ver4.10の効果が得られていることが分かります。12bitキャプチャモードを追加しました。16bitモードから比べビデオメモリからシステムメモリへ転送するデータ量および、AMV4ビデオコーデックで処理するデータ量が共に25%減るため、より高速、低負荷での録画が可能となります。録画用のリングバッファにDirectXのテクスチャを使うことでテクスチャをリングバッファへコピーする処理を省略できるようになりました。ベンチマークスコアが1%程度向上します。12bitキャプチャはAMV4ビデオコーデック専用です。その他のコーデックは使えません。16bitを選択してください。「テクスチャをリングバッファにする」は初期値でONとなっています。ドロップフレームが生じるようならリングバッファサイズを増やして(1000ミリ秒など)ください。それでも改善しない場合は「テクスチャをリングバッファにする」をOFFにしてみてください。(D)が1以上になるようならスーパーアマレココの録画詳細設定にある「リングバッファサイズ」を増やしてみてください。(+)および(-)の値はキャプチャ処理のドロップフレームではないので関係ありません。(リングバッファサイズを増やしても変わりません)取込み枠ボタンの上で右クリックするとキャプチャサイズを選択するメニューが表示されます。不具合などありましたら、この記事のコメント欄に書き込んでいただけると助かります。問題がなければ、このバージョンを正式版としてホームページで公開する予定です。圧縮)を追加しました。あと、RyzenでSSE命令を優先的に使うようになります。少々のことは自力でやりくりできる方が対象となります。実行して新規インストールしてください。実行することで上書きインストールできます。CPUは4コア、8スレッド、AVX2対応。動作クロックは自動設定。MBDY3と比べDS3は処理速度が約20%早くなります。ファイルサイズも10%から15%程度すくなくなります。Ver4.02と上位互換、ライセンスキーもそのまま使えます。処理が遅くなる場合があるため)SSE版のモジュールを使います。AVX命令は使いません。・CPU設定にRyzen用の「ZEN」を追加しましたが、現状「SSE4.1」と同じ内容となります。・DR2、DR3、DY2、DY3はVer4.02と同じ内容となります。・入出力フォーマットにNV12が追加されました。・DR2、DR3、DY2、DY3を選択した場合でも、入力された動画のフォーマットがNV12の場合はDS3で動作します。・対応OSからWindows7を削除。Windows7での動作確認は行っておりません。Ver4.1に対応したスーパーアマレココを公開します。Lake)で可逆圧縮コーデッを使ったベンチマークテストを行いました。シングルスレッド処理における各CPUの性能やSSE命令およびAVX2命令の挙動を見ていきます。720、YUY2の未圧縮に変換。その動画ファイルをAMV4ビデオコーデックのDY3設定でエンコード、デコードした際の処理時間(FPS:一秒間に何フレーム処理できるか)を計測します。両CPU共、動作クロックはRyzenの定格である3.6GHzになるよう設定。メモリの動作クロックも両方とも2133MHzに設定し、なるべく同じ条件でテストします。CPUは8コア、16スレッド、AVX2対応。動作クロックをBIOSにて全コア3.6GHz(定格)に設定しましたがアイドル状態になると3.1GHzまで低下します。テスト中はほぼ3.6GHzで動作しますが完全にクロックを固定できていません。CPUは4コア、8スレッド、AVX2対応。BoostはBIOSで無効化、動作クロックがテスト中に変動しないようにしています。646■考察AVX2を使ったKabylakeが突出した性能を発揮していることが解ります。理論上4K動画を秒間60フレーム以上処理する能力があります。RyzenはAVX2とSSE4どちらでもエンコード処理はほぼ同じ性能となっています。AVX2命令を使っても性能が向上しないためこのテストではKabylakeと比べると少し見劣りする結果となりました。Watchのこちらの記事によるとRyzenの場合256bitのAVX命令は128bitのマイクロオペレーションコード2つに分解して処理するためAVX命令、SSE命令どちらを使っても単位時間あたりに処理できるデータ数(Byte数)に違いが出ないようです。Ryzenのデコード処理に注目するとAVX2版よりSSE4版の方が2割以上良い結果が出ています。言えば、KabylakeのSSE4版よりもRyzenの方がいい結果となっています。これは単にAVX命令とSSE命令による違いではなく、プログラムの実装方法による違いが影響していると思われます。調べていないので予想となりますが、AMV4ビデオコーデックは条件分岐処理を排除することで処理速度の向上を図っているけど、SSE4版のデコード処理だけは条件分岐処理を使って処理するようになっているので、そのことがRyzenでは良い結果につながっているのかもしれません。・RyzenはAVX命令を使ってもSSE命令を使ってもパフォーマンスは変わらない(プログラムによっては、AVXを使うとパフォーマンスが低下する場合がある)・Ryzenは分岐処理を使っても高いパフォーマンスを維持できるかもしれない(未検証)・KabylakeのAVX命令は額面通りの圧倒的な性能を発揮する(ただしAVX命令を活かせるプログラムは皆無に近い)・AVX命令を活かせないプログラムの場合にどちらが有利かはプログラム次第、IPCは互角と言って良いのではないでしょうか。空冷で簡単に5GHzを達成するので動作クロックを考慮するとやはり1コアあたりの性能はKabylakeに軍配が上がることが多いと思います。最後に、RyzenでAMV4ビデオコーデックを使う場合はSSE4を使うように設定した方が良いです(自動設定だとAVX2を使ってしまいます)。AMV4ビデオコーデック以外でもAVX命令を使うかどうか設定できるプログラムの場合にAVXを使わないように設定することで性能が向上する場合があるようなので、Ryzenにおける豆知識かもしれません。GPU処理の最適化アマレココ4の優位性はAMV4ビデオコーデックをはじめとしたCPU処理(※)にあります。前回の記事で紹介したように「GPUの性能が低く、CPUの性能が高いPC」の場合はゲームのベンチマークスコアの面でアマレココ4の優位性が全く得られず、スコアが伸びません。(タスクマネージャでCPU使用率を見ればアマレココ4の優位性ははっきりわかるけど、それがゲームのベンチマークスコアに全く反映されない)そこで、GPU処理についても最適化を行うことにしました。アマレコTV4とアマレココ4を比較した場合のアマレココ4の優位性はRGB・YUV変換やプレビュー処理をGPUで処理することにあります。これによりCPU使用率を大幅に下げることができています。60fpsで録画した際のGPU負荷について簡単にテストし、GPU処理の最適化によりどの程度の効果が得られるか見ます。60fps)している状態(プレビューなし)の3つの状態をモニターソフトで観察します。開発中のバージョンとなります。MBCPUの使用率はプレビュー、録画中ともに変わっていないことがわかります。プレビュー中は、ベータ1はGPUクロックが高く、GPU使用率が低い結果となりました。ベータ2では逆にGPUクロックが低く、GPU使用率が高い結果となっています。クロックが一致しないので最適化の効果があるのかどうか何とも言えません。一応、クロックと使用率を掛けた値ではベータ2の方が低いので、最適化の効果が得られているのかなと思います。MHzとなり、GPU使用率が45%から34%に下がっているので、最適化の効果がはっきりわかります。GTX1080で同様のテストを行いましたがGPUクロックがそろわず、明確な差は見て取れませんでした。クロックと使用率を掛けた値でもほとんど同じ値でしたので、GTX1080レベルになると微差なのかもしれません。3.ノートPCでは・・・こちらはノートPCで同様のテストをした時の様子です(GPUに関するモニターはありません)。タスクマネージャのグラフの左半分がベータ1で録画していた部分、右半分がベータ2で録画しているところです。CPU処理に関してはほとんど変更を行っていないので変化が無いはずです(先のテストでもCPUの使用率に違いは見て取れない)。このノートPCでは録画中のCPU使用率が約48%から約38%へと大幅に低下しています。憶測になりますが、ビデオカードを搭載していない(専用のビデオメモリを持たずシステムメモリの一部をビデオメモリとして使う)PCではGPU処理の一部をCPUが肩代わりしていると言ったところでしょうか。GPU処理の最適化によりそういった部分がそぎ落とされたのでCPU使用率が下がったものと思われます。BridgeのデスクトップPCではCPU使用率に差が見て取れなかったので、何がこういった差になるのか本当のところは不明です。4.ゲームのベンチマークスコアで言うとベータ1と比べてベータ2はGTX650で5%程度のスコア向上、GTX1080で1%程度のスコア向上が見込めるかなと思います。ベータ2はもう少しテストして今週末ブログで公開予定です。今週末にオンラインヘルプを作って一般公開する予定でしたが、もう少し頑張ろうと思う部分が出てきたので2週間程延期することにしました。それまではベータ版をお試し頂ければと思います。不具合などありましたらご報告いただけると助かります。今のところ不具合も見つかっていないですし、不具合報告もゼロなので、このままベータ版を正式版として一般公開するつもりでいました。ところが、ファイナルファンタジー14(FF14ベンチ)やストリートファイター4(SF4ベンチ)などのベンチマークソフトを使って他のキャプチャソフトと比較していたところ、アマレココ4が1番(ShadowPlayを除く)と言える条件がある一方で、トップスコアのキャプチャソフトから10%程度離されてしまう条件もありました。そこで、全ての環境で一番は無理にしても、不利な条件でも僅差と言えるレベルまで持っていけないか延長戦に突入します。GTX1070とか1080までいくと、ほぼアマレココ4はトップ(ShadowPlayを除く)かトップクラスのスコアになると思います。逆にGPUの性能が低くなるとCPUの性能とのバランスでアマレココ4の優位性が変わってきます。i7-4770)は、かなり悪いスコアとなる場合がありました。■アマレココ4はFF14ベンチが苦手でSF4ベンチは得意GPUの性能が良ければどちらもいい結果が出るのですが、先のようにGPUの性能が悪くCPUが良い場合は、FF14ベンチのスコアが他のキャプチャソフトと比べとても悪くなりました。推測になりますが、ゲーム側の処理が60fpsを維持できなくなると、アマレココ4のスコアが悪くなる印象です。SF4ベンチの方はこの条件でもゲーム側の処理が60fpsを維持できており、アマレココ4はトップレベルのスコアとなります。i7-4770のような環境ではコーデックに処理の早いAMV4を使おうが、滅茶苦茶処理の遅いx264を使おうが、FF14ベンチ、SF4ベンチ共にベンチマークのスコアという形で差異は見て取れませんでした。それぐらいゲーム側の処理がGPUに依存しておりCPUによる処理は完全に無関係な状態でのテストと言えます。この条件でアマレココ4やAMV4を使ってもスコア面の優位性はありません。API系が総じて有利と思われます)。逆にDirectX系のキャプチャソフトがそろって上位を占めたのがGPUの性能が悪くCPUの性能が良い場合のFF14ベンチでした。同じFF14ベンチでもGPUの性能が良い場合はキャプチャ方式の違いによる傾向は見て取れませんでした。CPUで処理する分部(主にコーデックの処理)で優劣が決まるものと思われます。■キャプチャ時のカラーフォーマットによる違い細かい差異になりますが、ビデオメモリからシステムメモリへ画像を転送する際のカラーフォーマットもベンチマークスコアにかかわってきます。12bitを採用しているようです。12bit相当のフォーマットとなりますので妥当な選択です。16bitなのでこの点でやや不利となってしまいます。GPUの性能が悪く、CPUの性能が良い環境ではこの差が絶対に超えられない差となりアマレココ4は僅差ですがどう足掻いてもトップに立てません。ShadowPlayにおいては圧縮したデータを転送するので、この点において、ShadowPlayと他のキャプチャソフトの間には超えられない壁があると思います。80Mbpsで録画するように設定した場合の理論上の転送量は10MBとなりますので、他のキャプチャソフトの10分の1以下です。これに加えCPUを使ってエンコード処理をしなくていいのですから、ベンチマークのスコアで評価する限りShadowPlayを超えるキャプチャソフトというのはあり得ないのではないでしょうか。JPEGやQSVを使った方がスコア面では有利と思います。下記の記事でBandicamのスコアが低いのもNVENCを使ってテストしているからではないでしょうか。ベータ版公開お待たせいたしました、アマレココ4のベータ版を公開します。オンラインヘルプはまだなので、少々のことは自力でやりくりできる方が対象となります。64bit版専用となります。・32bit版のOSでは実行できません。APIが非対応なので使えません。・SSE4.1に対応したCPUが必須となります。・DirectX11に対応したGPUが必須となります。・シェアウエア(有料)のAMV4ビデオコーデックが必要です。・AMV4ビデオコーデックのライセンス登録が済んでいない場合は録画時にAMV4のロゴが入ります。Windows10で私は使えていますが、最終的に使えるかどうかはあなた次第です。アマレココ4が原因でうまく動作しないケースは今のところありません。これはアマレコTV4にも言えることですが、Windows10でアマレコTV4が使えないという人も居るようなので、やはり使えるかどうかはあなた次第です。アマレコTV4がWindows10に対応していないから使えないという認識だと一生使えないかもしれませんよ。Windows10でAVIファイルを再生していると途中でエラーになる人は、Windows10のアップデートをちゃんとやって最新の状態にすれば改善されるかもしれません。私のところではWindows10でAVIファイルの再生(3時間程度のAVIファイルの再生)も問題なくできるようになりました。(以前はこの記事「Windows10のWMPでAVIファイルが再生できない」のようにWindows10でAVIファイルを再生していると数分でエラーが出ました。不具合などありましたら、この記事のコメント欄に書き込んでいただけると助かります。0あまラボへようこそこのブログでは自作ソフトの最新情報やtips、PC動画に関する話題を掲載していきます。各記事へは下にあるカテゴリからアクセスして下さい。