少し真面目にやろう
AVIファイル編集用ユーティリティを作り始めたのだが、色々とやれそうな分、適当にやっていると、また、とてつもない時間を食う気配がある。なので、編集ユーティリティは今週だけで完成させ、その後1週間はAmuseGraphicsのプロモーション用に時間を割くことにした。
« 2009年12月 | トップページ | 2010年2月 »
AVIファイル編集用ユーティリティを作り始めたのだが、色々とやれそうな分、適当にやっていると、また、とてつもない時間を食う気配がある。なので、編集ユーティリティは今週だけで完成させ、その後1週間はAmuseGraphicsのプロモーション用に時間を割くことにした。
次はAVIファイルの編集ユーティリティ開発なのだが、まだ作業は開始していない。Appleが3日前に発表したiPadに関してネットで色々と話題になっているので見ていたりなんかするからだ。作者は芸能ネタのワイドショーは見ないのだが、当然、こういう話題は嫌いではない。
AVIファイル操作用のC++クラスを作成中だが、デコードに続いてエンコードも出来そうなことは確認できた。画像についてはWMV9VCMで実際にエンコードしてみた。音声についてはまだ未確認なのだが、多分大丈夫だろう。なので、次は、これらを使ったアプリを作る。
AVI操作用のC++クラスは画像のデコードも楽勝だった。なので、今日はAppleが発表したiPadについてネットで色々と検索していた。作者はApple製品はもう買わないと宣言しているので、多分、購入することは無い筈だが、25年前なら、欲しかったデバイスではある。
AVIファイル操作用のC++クラスは2GB超のファイル操作にも対応できるようになったので、次の作業として、エンコードされた画像と音声のデコードを可能化してエンコードされた動画の再生も行なえるようにしようとしている。今日は、まず、音声のデコードを可能にした。
AVIファイル操作用のC++クラスを大容量ファイルにも対応させた。具体的には、書き込み時に適当なサイズになったらRIFFリストを追加する処理と確保した領域が一杯になったらインデックスチャンクを追加する処理を加えたのだが、何故か、苦労した。
AVIファイル操作用のC++クラスの作成を始めて既に10日はたってしまっているのだが、まだ完成度は低い。一応は手持ちのユーディリティが出力するAVIファイルは全て扱えるようにはなったのだが、まだ、2GB超のファイルは扱えない。なので、今日は扱うための準備をした。
AVIファイル操作用のC++クラスを作成中だが、昨日まではDirectShowを使って出力したAVIファイルを操作していた。で、今日は、AVIファイルを作成するいくつかの手持ちアプリを使って出力したファイルを操作してみたのだが、操作できないファイルもいくつかあった。
AVIファイル操作用のC++クラスを開発中だが、処理関数の一部に参考にしたAVIファイルの構造やデータを真似るようにしていた部分があったため、色々と試しながら、AVI仕様に従って動作するように変更した。これで、ある程度は安心して使えるようになった。
AVIファイル操作ユーティリティ用にC++クラスを作成中だが、今日はコードを整理していたので、特に書くべきことはない。で、珍しく、作業しながらTVを4時間も見てしまった。と、いっても、スカパーのファミリー劇場でやっていた2002年版のウルトラセブンなのだが。
AVIファイル操作ユーティリティ用のC++クラスに高級な機能を持った関数を追加していっているため、それを使うユーティリティのメイン関数を記述するのはかなり楽にはなってきた。しかし、C++クラスは、まだまだ作っては変更し、といった作業を繰り返している。
今日は、最下層のルーチンを使って、強引にAVIファイルの分割をやってみた。最下層ルーチンのデバックも兼ねていたので意味のある作業ではあったものの、あまりにも低レベルな作業を要求するので、もう少し便利な上位層を作成する必要がある。
今日はAVIファイルを扱うC++クラスの中の関数群を拡充していた。AVIファイルの分割/結合時に必要になりそうな関数は大体用意できたかもしれないので、明日は実際に分割/結合を行なってみるつもりだが、今日の所は作った関数を使ってAVIファイルの中身を眺めていた。
今はAmuseGraphicsのバージョンアップ版用のAVIファイル操作ルーチンの開発中だが、ほぼAVIファイルの仕様も理解でき、最下層ルーチンも出来てきたので、やっと何かしらかの操作も可能になり、面白くなってきた。で、今度はTiVSoundが窓の杜で紹介されたようだ。
AmuseGraphicsのバージョンアップ版向けにAVIファイルを扱えるC++クラスを作る目的でコマンドラインユーティリティを作成中だが、今日はあまり進展しなかった。問題があった訳ではなく、殆ど何もしなかったからだ。
AmuseGraphicsのバージョンアップ版で、AVIファイルの分割/結合を行なえるようにするために、テスト用のコマンドラインユーティリティを作成中だが、今日はAVIファイルの階層構造を取り込める解析用ルーチンを作ってみた。
AVIファイルは作者には判りづらいので、AVIフォーマットの資料と実際のAVIファイルを見比べながら、とりあえず、AVIファイルを処理できるコマンドラインユーティリティを作っていくことにした。で、AVIファイルを扱う関数は別クラスにして他アプリでも使えるようする。
AmuseGraphicsのVer1.1.0では色々なからみからAVIファイルの分割と結合を行なえるようにするつもりなのだが、資料は色々とあるものの、感覚的にイマイチ判らないため、今日は資料をざっと見た後、実際のAVIファイルをダンプしながら確認してみた。
TiVSoundがリリースできたので、次はAmuseGraphicsのバージョンアップ開発に戻ることになるのだが、折角、Windows7のUltimate版を購入したものの、まだ殆ど使えていなかったので、今日はXPモードで遊んでみた。
TiVSoundのVer1.00は予定通りリリースできたのだが、Vistaに続いてWindows7がリリースされている現時点でXP専用ソフトを出すというのも変な感じだ。しかし、このブログへのアクセスには未だに50%以上XPが使用されている。この状況は何時まで続くのだろう?
TiVSoundはWindowsXP環境にステレオミキサー機能を提供するソフトです。仮想サウンドデバイスを提供するデバイスドライバとサポートアプリで構成されています。サポートアプリが仮想サウンドデバイス用の再生データを既存サウンドデバイスで再生するため、仮想サウンドデバイスへの再生時にも従来通り既存デバイスで音を鳴らすことができます。
TiVSoundはフリーソフトとしてリリースするため、例によって積極的なバージョンアップ計画は無い。なので、念のために少し使い込んでみた。その結果、状況によってノイズの発生が少し気になることがあったため、微修正した。
TiVSound用のドキュメントとしてreadme.txtを書いた。インストールと初期設定方法を細かく書いたので、一応はこれだけで使えるようになる筈だ。なので、サポートWebページの方は手抜きすることにした。
TiVSoundは仮想サウンドドライバとサポートアプリで構成されるシステムなのだが、デバイスの名前をTiVSoundとしてしまったので、サポートアプリは「TiVSound Supporter」ということにした。今日は規定オーディオデバイスの設定ユーティリティを追加してVer1.0を完成させた。
今日はMacBookのSnow LeopardにあるBootCampでVistaを削除してXPをインストールし、TiVSoundを使ってみた。昨日の問題は修正済みのため、気持ち良く使えたのだが、Mirror-DTCのサービス版で音が出なかったのでプログラムを一つ追加する必要が生じた。
TiVSoundは大体できあがったのだが、YouTubeの動画の音声を録音しているとノイズが乗ることがあり、色々調べているとステレオ音声を録音するときだけ、たまに変になることが判った。多分、ステレオデータがミックスされているのだろうが、原因はまだ不明。
TiVSoundがVistaで正しく動作しなかったのは随所でMutex待ちをしていたのが一番の問題だったようで、Mutexを使わない方式に変更するとブルースクリーンは無くなった。音とびが頻繁に発生した件については、GetPosition関数に問題があったようだ。
TiVSound用にサポートサービスと設定ツールとそれらのインストーラーを作った。なので、とりあえずはリリース形態でのインストール/動作確認ができるようになったのだが、試しにVistaにインストールしてみるとブルースクリーンが発生した。やはり、微妙にXPとは異なる。
MSVAD応用システムの名前はTiVSoundにした。Tiは作者のイニシャルでVSoundのVはVirtualの略だ。で、WaveClipperを使って色々な周波数で再生と録音を行ってみたのだが、可笑しなことになった。なので、ドライバにサンプリング周波数の変換ルーチンを追加した。
MSVADでは音声入力にはマイクとMIDIがあったのだが、ステレオミキサーのみに変更した。また、ステレオミキサーのボリュームも自力実装を行った。この結果、再生音量とステレオミキサー音量の独立設定が行えるようになり、各種用途での利便性が向上した。
MSVAD応用システムの再生マスターボリュームは、古いDDKソースをベースに自力で実装した。何処までをポートドライバでやってくれるのかがイマイチ判然としないのだが、マスターボリュームはミキサーコントロールより後ろにあるので、自力実装が必須なのかもしれない。
MSVAD応用ドライバで、最低限の機能は実現できたので、細かい部分を見ていったのだが、再生用のマスタボリュームが表示されていなかった。これはMSVADのバグと判ったのでとりあえず修正し、表示はされるようになったのだが、機能はしなかった。