melt日記

.NETすらまともに扱えないへたれのページ

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  111  : 記事  3  : コメント  7348  : トラックバック  41

ニュース

わんくま同盟

わんくま同盟

C# と VB.NET の質問掲示板

iKnow!


Dictation



書庫

Windows Media Player用の視覚エフェクト(Visualizer)の作り方が面白そうだったので、ちょっと視覚エフェクトを使って遊んでみました。

すると、

こんな感じになりました。

まあ初めてにしてはうまくやれたんじゃないかと自作自演、じゃなくて自画自賛です。


研究課題として、しばらくはこの視覚エフェクトのことについて書いていこうと思います。


今日はこの視覚エフェクトの概要について書いていこうと思います。

もしかしたら嘘も混じってるかもしれないので話半分ぐらいに聞いておいた方が良いかもしれません。


Windows Media Player(以下 WMP)と視覚エフェクトは COM でやりとりを行うので、視覚エフェクトは COM の流儀に従って組んでやる必要があります。


WMP は視覚エフェクトの一覧を以下のレジストリから探し出します。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MediaPlayer\Objects\Effects

つまり視覚エフェクトを実装する側は、必ずこのキーに情報を書く必要があります。そうしないと WMP に視覚プラグインが認識されません。


この Effects キーのサブキーとしてアプリ名(今回の場合は WmpTest という名前にした)があり、そのサブキーに Property というキーがあります。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MediaPlayer\Objects\Effects\WmpTest\Property

このキーの値として classid というのがあり、ここにプラグイン本体の CLSID を記述します。

WMP はこの CLSID を使って ::CoCreateInstance をするので、CLSID に対応する dll や exe のパスもレジストリに記述しておく必要があります。


ATL が使用できるのであれば、レジストリスクリプト(*.rgs ファイル)を使って CLSID の登録と Effects 以下にキーを書き込むスクリプトを用意すればいいと思います。Wizard が生成するサンプルもそうなっています。


Proxy/Stub は、WMP が視覚エフェクトをシングルスレッドアパートメントで使っているみたいなので、視覚エフェクトがインプロセスサーバで ThreadingModel が Apartment や Both である限りは必要無いみたいです。


で、WMP は ::CoCreateInstance で視覚エフェクトを生成するわけですが、そのときに必ず実装している必要のある COM インターフェースは IWMPEffects です。

好みに応じて IWMPEffects2 を実装しても構いません。ただし、IWMPEffects2 は WMP9 で追加されたインターフェースなので、それ以前のバージョンではこのインターフェースは呼ばれないことに注意です。


WMP は IWMPEffects を通じて、いくつかの情報を取得します。

IWMPEffects::GetTitle を使って、この視覚エフェクトのタイトルを取得します。ただ、どこで使われてるかは知りません。

IWMPEffects::GetPresetTitle を使って、各プリセットのタイトルを取得します。プリセットについては後述します。

IWMPEffects::GetPresetCount を使って、プリセットの総数を取得します。IWMPEffects::GetPresetTitle 等に渡されるプリセット値は、この総数以上になることはありません。

IWMPEffects::GetCapabilities を使って、この視覚エフェクトの持っている機能を取得します。

WMP は EFFECT_CANGOFULLSCREEN が指定されていると、視覚エフェクトは全画面で表示できると解釈します。

EFFECT_HASPROPERTYPAGE が指定されていると、視覚エフェクトはプロパティページがあると解釈します。

EFFECT_VARIABLEFREQSTEP が指定されていると、視覚エフェクトに対して渡す周波数データは可変長で扱う必要があると解釈します。


プリセットについてですが、これは同じ視覚エフェクトの中で違う効果を見せる場合に使います。

というかプリセットについては画像を見た方が早いのですが、

この画像の、TestEffects と書いてある部分が1つの視覚エフェクトで、この中にある maxCount = xx... とあるのが各プリセットになっています。

各プリセットを選択すると、WMP は IWMPEffects::SetCurrentPreset でプリセットを視覚エフェクトにセットするので、視覚エフェクトはそのプリセットに応じた描画をすればいいのです。


実際の描画は IWMPEffects::Render で行います。

WMP は定期的に IWMPEffects::Render メソッドを呼び出すので、視覚エフェクトは引数として渡された TimedLevel 構造体を利用して(利用しなくてもいいけど)実際の描画を行います。



値によって色を変えたりしながら描画を行うと、↑の画像みたいなエフェクトが表現出来るようになります。


次は実際のコードも含めてもう少し細かく書いていこうと思います。

投稿日時 : 2008年3月12日 22:20

コメント

# re: [WMP]Windows Media Player 用の視覚エフェクトで遊ぼう 2008/03/12 22:31 myugaru
これは素晴らしい!うまく使えばゲーム(シューティングに限らずノベライズ作品とかRPGの戦闘だとか)のバックグラウンドに応用とかできそうです。
これってアウトプットはシリアライズ(mpgだとかaviの何かだとかに)可能かなあ?
私の方でも色々あそんでみたいと思います!

# re: [WMP]Windows Media Player 用の視覚エフェクトで遊ぼう 2008/03/13 23:52 melt
>ゲーム(シューティングに限らずノベライズ作品とかRPGの戦闘だとか)のバックグラウンドに応用とかできそう
なるほど、この視覚エフェクトを使う側(WMP と同じ側)になれば、確かにそういうことも出来そうですね。

>これってアウトプットはシリアライズ(mpgだとかaviの何かだとかに)可能かなあ?
IWMPEffects::Render 関数は引数で渡された HDC を使って描画するので、HDC が取れるものだったらウインドウだろうがメモリだろうがプリンタだろうが何でも構わないと思います。
で、別途それをエンコード掛けながら(掛けなくても良いけど)出力すれば、mpg でも avi でもいけると思います。

# re: [WMP]Windows Media Player 用の視覚エフェクトで遊ぼう 2008/03/15 2:44 myugaru
なるほどなるほど。
少し見てたのですが今の私にはちょっと扱いの難しそうな技術なので後回しになりそうです。
ではmpgに出力する例を首を長くして期待します(待て


# [WMP]Windows Media Player用の視覚エフェクト(Visualizer)を作ってみるテスト(1) 2008/03/15 20:57 酢酸のべとべと日記
[WMP]Windows Media Player用の視覚エフェクト(Visualizer)を作ってみるテスト(1)

# jianbin0301 2018/03/01 14:34 165464@qq.com
http://www.cheapjordan-shoes.us.com
http://www.cheapoakleysunglassesfactory.us.com
http://www.poloralphlauren-outlets.us.com
http://www.pandoraoutletshop.us.com
http://www.mulberryhandbagsoutlets.me.uk
http://www.coachfactoryoutletcoachoutlet.us.com
http://www.true-religionjeanssale.us.com
http://www.oakleysunglasseseye.us.com
http://www.canadagoosejackets-outlet.us.com
http://www.valentinooutlet.us.com
http://www.polooutletclearance.us.com
http://www.nobisoutlet.us.org
http://www.uggoutlets.ca
http://www.uggoutlet-onlineclearance.us.com
http://www.uggoutletstoresofficial.us.com
http://www.raybanssunglassessale.us.com
http://www.canadagoosejacketsusa.us.com
http://www.pandora-charmssaleclearance.org.uk
http://www.michaelkors.eu.com
http://www.raybansunglassesoutlets.com.co
http://www.swarovski-outlets.us.com
http://www.kobe9elites.us.com
http://www.nbajerseysstore.us.com
http://www.michaelkors.de.com
http://www.ferragamoshoes.org.uk
http://www.lacostepoloshirts.us.com
http://www.airforce1.us.com
http://www.canadagoose-jackets.org.uk
http://www.canadagoosejackets.me.uk
http://www.michaelkorsoutletclearance-online.us.com
http://www.fitflopssale.in.net
http://www.canadagoosejacketscg.ca
http://www.jordanshoesshop.us.com
http://www.pandoracharmss.us.com
http://www.pandoraoutlet-store.us.com
http://www.cheapjerseyswholesale.org
http://www.newbalanceshoes.in.net
http://www.coachfactoryoutlet-clearance.us.com
http://www.swarovskicrystalco.org.uk
http://www.montblancpenssale.us.com
http://www.fredperrypolo-shirts.com
http://www.rayban--sunglasses.co.uk
http://www.toryburchoutletofficials.us.com
http://www.christianlouboutins.org.uk
http://www.mulberrybagsuk.co.uk
http://www.raybansunglassesonsales.us.com
http://www.poloralphlaurenoutlet-online.us.com
http://www.uggoutlet.ca
http://www.reebokoutletstores.us.com
http://www.airhuaracheuk.org.uk
http://www.outlettruereligion.in.net
http://www.coachfactoryoutletstore.com.co
http://www.mulberryhandbagss.org.uk
http://www.ralphlauren-polo.us.org
http://www.raybansunglasses2.us.com
http://www.nfljerseysfactorystore.us.com
http://www.raybansunglassesonlines.us.com
http://www.cheapsoccerjersey.net
http://www.longchamphandbagssale.co.uk
http://www.canadagooseoutletclearance.us.com
http://www.michaelkorsoutletfriday.us.com
http://www.oakleysunglasseswear.us.com
http://www.nikeoutlets.us.org
http://www.poloralphlaurendiscount.us.com


# re: Ruby で数値を 0 埋めする 2019/01/24 13:48 zzyytt
http://www.offwhitehoodie.us.com
http://www.nikereact.us.com
http://www.michaelkors-outletfactory.us.org
http://www.jordan4.us.com
http://www.hermesonlineshop.com
http://www.michael-kors-handbags.org.uk
http://www.nikeairmax2018.us.com
http://www.lacosteonlineshop.us.com
http://www.nike-roshe.us.com
http://www.adidasstansmith.uk
http://www.katespadehandbags-outlet.us.com
http://www.adidasoutletonline.com
http://www.nike-airmax2017.us.com
http://www.jordan-retro.us.com
http://www.jordan6.us.com
http://www.lacostepolosshirts.com
http://www.adidasyeezy.co.uk
http://www.lebron16.us
http://www.jordansshoes.us.org
http://www.supremehoodie.us.com


# NFL Jerseys 2019 2019/04/07 2:59 zclfzjpic@hotmaill.com
ufscbodfqqn,Thanks for sharing this recipe with us!!

# Yeezy 2019/04/09 2:02 xwmwbbew@hotmaill.com
vknerzotypl Yeezy Shoes,Hi there, just wanted to say, I liked this article. It was helpful. Keep on posting!

# Yeezy 2019/04/15 6:56 npfxkzqupjv@hotmaill.com
gqoxwrxyl Yeezy Boost 350,Thanks a lot for providing us with this recipe of Cranberry Brisket. I've been wanting to make this for a long time but I couldn't find the right recipe. Thanks to your help here, I can now make this dish easily.

# Jordan 12 Gym Red 2019/04/19 2:05 bssnog@hotmaill.com
“The capitalist countries must have a strong force from the highest leadership, and declare the income\/wealth/opportunity gap is a national emergency and assume the responsibility of redesigning the system so that it can function better.

# nike factory outlet 2019/04/28 12:27 havpuoo@hotmaill.com
In Los Angeles County, health officials said international travelers, healthcare workers and those who care for young children should consider a second vaccination. One of the confirmed university cases "did travel internationally prior to coming down with measles," Ferrer said.

# Cheap Jerseys 2019/04/30 10:30 ppmnmskh@hotmaill.com
How long will this country be talking about the Mueller report? Cartoonist Jeff Koterba takes a kid's perspective. See why, above. Look through the rest of the gallery for fresh takes on more news.

# Nike Air Max 2019 2019/05/02 3:48 rkfxetioz@hotmaill.com
At a rally in Fort Worth the next day, Sanders campaign senior adviser Nina Turner excoriated those who dared to boo the Vermont senator.

# Yeezy Shoes 2019/05/03 23:03 sxknmed@hotmaill.com
They're still talented and skilled. They're generally smart. The unity has become uneven. That ruthless thing, however, has never been more elusive than this season ? and it has carried over into the first five games of these playoffs.

# Adidas Yeezy 500 2019/05/05 7:38 brchfl@hotmaill.com
Swalwell is running on a platform of gun safety, earning the backing of some of the Parkland, Fla., students who became activists after the mass shooting at their school last year. Moulton, a former Marine, tried and failed to block Pelosi from becoming speaker of the House in the current Congress. He is running a campaign based “in service, in security and in patriotism.

# Cowboys Jerseys Cheap 2019/05/23 4:24 deqcdfgkjy@hotmaill.com
http://www.cheapjerseyselitenfl.us/ Cheap Sports Jerseys

# Nike Outlet 2019/05/25 21:06 wfrdmnun@hotmaill.com
http://www.pittsburghsteelers-jerseys.us/ Steelers Jerseys Cheap

# Travis Scott Jordan 1 2019/06/03 6:10 tsxtrlxmxwv@hotmaill.com
Fertility was far from my mind. I was 27,Jordan busy pursuing my master's in social work,Jordan hanging out with my friends and my girlfriend,Jordan and dreaming about being financially stable enough to get my first dog. The doctor suggested I look into fertility preservation as soon as possible. You want to give yourself the chance,Jordan he said,Jordan just in case. Suddenly I was on what my doctors called the fertility fast track?my appointments,Jordan medications,Jordan even my enrollment in the IVF info sessions expedited to get ahead of the vigorous regimen of radiation and chemotherapy I was about to endure.

# Yeezys 2019/06/07 4:58 aiyuypsb@hotmaill.com
http://www.redjordan12.us/ Jordan 12 Gym Red

# nfl jerseys 2019/06/09 5:17 izwwximt@hotmaill.com
http://www.jordan12gymred.us.com/ Jordan 12 Gym Red 2018

# Nike Air Max 270 2019/06/12 6:47 ujrqennk@hotmaill.com
http://www.air-max2019.us/ Air Max 2019

# NFL Jerseys Wholesale 2019/06/22 10:43 agquhn@hotmaill.com
http://www.jordan11concord.us.com/ jordan 11 concord 2018

# NFL Jerseys 2019/07/07 21:39 xkjzfjudx@hotmaill.com
http://www.authenticnflcheapjerseys.us/ Cheap NFL Jerseys

# Nike Outlet Store 2019/07/15 13:06 iaunnwokclu@hotmaill.com
http://www.yeezy350.org.uk/ Yeezy 350

# Yeezy 2019/08/02 1:33 riviic@hotmaill.com
http://www.travisscottjordan1.us.com/ Travis Scott jordan 1

# Yeezy Shoes 2019/08/14 8:28 mlhhkxjh@hotmaill.com
http://www.yeezy350.us.com/ Yeezy

Post Feedback

タイトル
名前
Url:
コメント