Hatena::ブログ(Diary)

Ko-Taのバ・ー・ルのようなもの

2007-05-24

AlphaOgg(wuvorbis.dll版)

・AlphaOgg

http://kota.dokkoisho.com/#AlphaOgg

・wuvorbis.dll

http://kikyou.info/tvp/


・新バージョンはこちら

http://d.hatena.ne.jp/Ko-Ta/20090508/p1


・概要

W.Dee氏のwuvorbis.dllを使って、OggVorbisを再生するライブラリです。

ライブラリとフェードイン・フェードアウトなどの機能が盛り込まれたプレイヤーのサンプルプログラムが入っています。

ちょっとライブラリ内部が汚いですが、DLLを読み込む部分は比較的マシです:D

nise_yamaokanise_yamaoka 2008/05/10 17:04 いつも、KO-TAさんのモジュールをゲーム製作に利用させていただいております。
ところで、AlphaOggですが、なぜかVistaでコンパイルすると、デバッグモードの時のみCPUデバッガが立ち上がる気がします。
同じ報告が、sandmanさんでも上げられているようです。もしかすると同じ原因かも・・・
http://karen.saiin.net/~hayase/hitori/index.html

Ko-TaKo-Ta 2008/05/10 20:04 こんばんわ。
なんとなーくThread周りかと思われます。ちょっとセマフォで協調をとって確認してみたいと思います。

nise_yamaokanise_yamaoka 2008/05/10 20:14 早速の反応ありがとうございます。デバッグ関連では、alphalib32では問題ありませんでした。あと、直接QDDDによる操作のサンプルでも問題発生しませんでした。
なるほど、threadですか・・・私もデバッガで追ってみましたが、結果論としてddsd.pas終了直後にCPUデバッガが立ち上がるので、その先から私のスキルでは追えませんでした。
finalization CoUninitialize; end.のあたりです。

Ko-TaKo-Ta 2008/05/10 22:00 進展がありましたのでご報告させていただきます。
最もシンプルな発生環境を構築しました。以下のような構成で症状を再現することが出来ました。

フォームにButtonとOpendialogを設置します。
ButtonをクリックするとOpendialog1.Excuteを呼ぶコードをかきます。
unit1のusesにddsd.pas(拡張子は不要です)を追加します。
IDE(デバッガ)上でコンパイル・実行して、Buttonを押してダイアログを開き、選択・キャンセルして終了します。

>finalization CoUninitialize; end.のあたりです
その推察はかなり当を得ているのではないかと思われます。
付け加えるなら、DDSDのDirectSoundに関わるObjectを生成しなくても発生していると言うことで、DDSDのThread周りのエラーではないということは断言できるかと思われます。
明日にでももう少しソースとにらめっこしてみようかと思います。
貴重な情報有り難う御座いました。

Ko-TaKo-Ta 2008/05/10 22:22 とりあえず回避だけなら「initializationをCoInitializeEx(Nil, 2); //2...COINIT_APARTMENTTHREADED」にすれば大丈夫ですが、これが果たして正しいのかどうかはわかりません。
たしか、DirectSoundのヘルプにはCoInitializeEx(Nil, 0);にしてねって書かれてたような気もしますので。

DirectSoundを使いつつ、FlashやDirectShowを用いる際にもCoInitializeEx(Nil, 2);にしないとダメだったと思います。

nise_yamaokanise_yamaoka 2008/05/11 00:08 私の10分後の反応は偶然でしたが、速レスありがとうございます!!
回避方法も仮バージョンでも早速・・・CoInitializeExを早速ためさせていただきます!

nise_yamaokanise_yamaoka 2008/05/11 01:05 仮対応、うまくいきました・・・ひとまずは、ありがとうございます・・ついでにsandmanさんのBBSにも知らせておきますねー。

Ko-TaKo-Ta 2008/05/12 01:04 いえいえどういたしまして

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証