スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 32Bit版からM4A出力を削除 | トップページ | 配布パッケージを作った »

32Bit版のM4A出力を復活

今は、AG-ムービーカッターの改良開発を行っていて、最終確認として、32Bit版Windows7なんかでも動作確認した所、M4A出力が正しく行えなかった。なので、32Bit版からは出力機能を削除したのだが、今日、色々と確認してみた所、動作させる事が出来たので復活させた。

昨日書いた様に、M4A出力機能は、32Bit版でのみ不安定な状況だったのだが、Windows7のH.264ハードウェアエンコードの場合とは異なり、ネットを色々と検索してみても、同様の問題は見つからなかった。

そして、昨日書いた様に、作者的には、M4A出力機能はあった方が嬉しいので、動作しない32Bit版からのみ、機能を削除し、64Bit版では使える状態のままにしてあったのだが、何度も書いてきた様に、作者の血液型はA型なので、こういうイリーガルな状況というのは、精神的にきつかった訳だ。

このため、何とかしようとして、今日は、Media FoundationのTranscodeAPIというのを使って、WAV形式からM4A形式に変換できる処理ルーチンを作成して動作させてみた。

その結果、その処理ルーチンは、32Bit版Windows7等でも問題なく動作する事が確認できたので、32Bit版については、M4A出力機能は、一旦、WAV形式で出力し、そのデータをM4A形式に変換して最終出力にしようか、と、思った。

しかし、上記のTranscodeAPIを使った処理ルーチンというのは、Media Foundationに処理を依頼すると、処理が完了するまで、イベントが発生しない為、進捗表示がマトモに出来ない問題があった。

このため、血液型がA型の作者としては、出来れば、この処理ルーチンも使いたくなかったので、再度、SinkWriterを使って変換を行っている現状のルーチンを色々と変更してみたりした所、32Bit環境でも、安定して動作させる事が出来た訳だ。

昨日の時点で、32Bit環境でマトモに動作しなかった原因は、SinkWriterのWriteSampleメソッドに渡すサンプルのDurationに問題があった、という事になる。

何故、問題があったのか、というと、これも昨日書いていたのだが、Windows7環境では、元々のサンプル長ではマトモにエンコード出来なかったので、サンプル長を1024サンプルに変更したのだが、その時に、上記のDurationの扱いがマトモでは無くなった訳だ。

具体的には、元々は、音声の書き込みは、AG-ムービーカッターのイコライザの処理単位になるサイズに固定していたので、Durationも固定だった。

なので、このDurationはファイルオープン時に変数に書きこんで、その後はその値を固定的に使っていたのだが、上記の変更時に、この変数の設定が行われなくなっていた訳だ。

つまり、問題の原因は、作者の変更ミスだった訳なのだが、その状態でも、64Bit環境では問題なく動作していたので、原因が32Bit環境のMedia Foundation側にあると思い込んでしまった。

もっとも、上記のWriteSampleメソッドで渡すバッファはオブジェクトになっていて、その有効データ長も読み取れる。

なので、上記のDurationというのは、PCMデータの場合、ある意味、冗長な情報になる訳なので、間違いに気が付くのが遅れた訳だ。

ちなみに、全然関係ないのだが、今日は、X202EにインストールしてあるWindows10 TH2を少し弄っていたのだが、実際に接続していないVGAモニターに対する解像度設定が、Windows8.1の頃の様に行える様になっていた。

つまり、Mirror-DTC接続すれば、実際のモニターを繋がなくても、作者のX202Eはセカンドモニターとして1920x1080の解像度を持つ画面が使える様になった。

で、上記は良い話なのだが、作者のWindows10環境には、悪い話もあって、TH2よりも前の段階からなのだが、動画のエンコードなんかを行って、ほぼ100%のCPU負荷を数分間以上かけ続けると、その後、CPUの周波数が一旦1GHz以下になると、その後は0.97GHz以上にはCPU周波数が上がらない、という不具合が出ている。

上記の不具合は、普通に使っている程度のCPU負荷では発生しないし、再起動すれば無くなるので、致命的という訳でもないのだが、この不具合があるお蔭で、作者のX202Eはテストマシンとしてしか使う気になれない状況だ。

= この記事に関連する公開中ソフト =

AmuseGraphics

AmuseGraphics

(2016/05/04追加)

« 32Bit版からM4A出力を削除 | トップページ | 配布パッケージを作った »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/62725942

この記事へのトラックバック一覧です: 32Bit版のM4A出力を復活:

« 32Bit版からM4A出力を削除 | トップページ | 配布パッケージを作った »

2017年6月
        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  

広告

プライバシーポリシー

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

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

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google