スポンサーリンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 更に、細かい改良を色々と | トップページ | 更に改良して完成 »

一通りの実装を完了

今はAmuseGraphics Ver1.4.1の開発フェーズで、既に、AGMPlayerとAG-ムービーカッターに引き続き、AG-デスクトップレコーダーの開発を行っていて、一通りの実装が完了した。なので、既に書いていたメモリ使用量の削減を検討する。

今日は、更に、少しの改良と、仕様変更を行ったのだが、改良というのは、プレビューウインドウを表示した場合の処理負荷の軽減だ。

具体的には、作者が開発環境にしているフルHD画面のMac mini Late2014だと、全画面録画状態で、デフォルト設定である所の15FPSでプレビューウインドウを表示し続けていると、7~8%程度のCPU負荷が発生しているのだが、この処理負荷を5~6%程度に減らす改良を行った。

もっとも、録画中には、非録画時とは異なり、録画用にキャプチャーされた映像をベースにした画像を表示しているので、録画中にプレビューウインドウを表示しても、上記ほどの負荷増加にはなっていないのだが、録画中にも、上記で削減された2%程度のCPU負荷は軽減される筈だ。

上記の改良はどうやって行ったのか、というと、キャプチャーデータと表示データはサイズが異なるので、現行版では、そのサイズ変更をWindowのAPIである所のStretchBltに任せていたのだが、デフォルト設定だと画質が悪かったので、高画質で縮小してくれる様に設定変更していた事もあり、このAPIの処理負荷が大きかったので、この処理を、より低負荷で目的を達成できる自前コードに置き替えた。

と、いう事で、現行版だと、処理負荷的にギリギリの録画を行っている場合、プレビューウインドウを表示してしまうと、フレーム落ちが頻繁に発生するケースもあった筈なのだが、Ver1.4.1では、その様なケースは減る事になる筈だ。

で、仕様変更としては何を行ったのか、というと、ウインドウ録画のウインドウを隠す処理のデフォルトは新規搭載した処理にする、と、書いていたのだが、これを、現行版と同じ処理にする事にした。

何故、そうする事にしたのか、というと、現行版の処理の問題点としては、Windows10で、例えば、Firefox/ChromeでYouTubeなんかの動画を見ている状況で、ウインドウを隠す処理を実行すると、動画の更新が行われなくなってしまう、というのがあって、この問題を回避するために、新方式を搭載したのだが、確認して見た所、現行版の方式でも、Edgeでは、問題なく、動画映像の更新が行われていたからだ。

更に言えば、AGMPlayerで動画を再生している状況をウインドウを隠すで隠してしまうと、やはり、動画の映像は停止してしまうのだが、Windows Media Playerで動画を再生している場合には、ウインドウを隠しても映像は停止しなかった。

つまり、Windows10でも、現行版で、ネット動画や手持ち動画をウインドウを隠しつつウインドウ録画する事は可能ではあったので、そういった使い方をしていた現行版ユーザーにしてみれば、例えば、録画中にAG-デスクトップレコーダーがクラッシュしてしまった様な場合に、隠していたウインドウを再表示するのが面倒になる新方式に勝手に変えられてしまうと、メリットは何もなく、デメリットだけが発生する格好になる訳だ。

なので、Ver1.4.1では、デフォルト状態では現行版と同様の処理が動作する様にしておきつつ、「基本設定」-「拡張設定」で指定した場合には、新方式を利用可能にする格好にした。

新方式を適用した場合、前述のFirefox/Chrome/AGMPlayerなんかの非マイクロソフト製ソフトでも、Windows10環境で、ウインドウを隠しつつ、ウインドウ録画で映像を停止させる事なく録画可能になるので、少なくとも作者は、新方式で利用するのだが、新方式では、ウインドウの属性を変更してレイヤードウインドウ化し、その透明度を変更して完全に透明にしてしまう事で、ウインドウを隠しているので、ソフトによっては、そういう処理でウインドウを隠されてしまうと問題が発生する場合もあるかもしれない。

これに対して、現行版のウインドウを隠す処理は、単にウインドウの表示位置を画面外に移動しているだけなので、普通は、大きな問題は発生しない筈だったのだが、Windows10では、OS自体が、表示領域外に出てしまったウインドウの映像更新をやめてしまっている感じなので、この方式では映像が停止してしまうので、新方式の様に、見えてはいないもののデスクトップ内にウインドウを留めておける新方式が必要になった訳だ。

しかし、何故か、Edgeやその他のマイクロソフト製のストアアプリなんかは、上記の制限は発生しない様なので、現行版の方式でウインドウを隠しても、問題なく録画可能なので、そういうソフトのウインドウしか隠さない人は、敢えて、問題を引き起こす可能性が高まる新方式は使わない方が良いかもしれないので、デフォルト設定では、新方式を選択しなくする事にした訳だ。

ちなみに、Windows10の今年二回目の大規模更新である所の1909の配信が始まった様だ。

なので、作者的にも、それを適用した状況で、最終確認を行う予定なのだが、何時のバージョンだったかは忘れたのだが、以前、Windows10では、MediaFoundationを使ったMJPEG動画の再生が正しく行えなくなり、AmuseGraphics的には、その対応として、MJPEG動画の再生はDirectShowを使って行う、という変更を余儀なくなれた事があった。

しかし、現行のWindows10では、上記の問題は無くなっているので、また、元の状態に戻したりもしているのだが、上記のウインドウを隠す問題は、現行版Windows10のバクかもしれない。

何故なら、AG-デスクトップレコーダーのウインドウを隠す処理とは無関係に、例えば、前述した様な、Firefox/Chrome/AGMPlayerなんかで動画を再生中のウインドウの一部を画面外に移動すると、タスクバーアイコンにマウスカーソルを置いた場合に表示される動画サムネイルの映像も、画面外の部分の更新が行われなくなっているからだ。

つまり、そんな見っとも無い挙動を仕様にするなんてのは、少なくとも作者的には、考えられないので、そういった挙動は単なるバグの結果でしかないかもしれない訳だ。

そうなってくると、この問題は1909で解決されているかもしれないのだが、もし、そうなら、新方式は開発する必要が無かった事を鑑みると、問題は解決してくれていた方が嬉しいのだが、複雑な気持ちになるかもしれない今日この頃だ。

« 更に、細かい改良を色々と | トップページ | 更に改良して完成 »

2019年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google