« January 2006 | Main | March 2006 »

2006.02.23

Media Foundation API

以前に触れた Media Foundation API だが、すでに reference が Windows SDK に入っている模様。

Media Foundation (MSDN, 英語)

どこまで最終版なのかはっきりしないけれど、Vista もそろそろ API close の季節だし、根本的な構造はこれで行く、ということなのだと思う。より多くの情報が出ていてマーケットも広い WPF (Windows Presentation Foundation, a.k.a. Avalon) に注目が集まっているが、DirectShow も少し手がける身としてはこちらも気になる。

DirectShow との大きな違いとして何点か読み取れる。

  • Platform layer, pipeline layer, control layer, media interoperability gateway から構成される。
  • Pipeline の部品同士は接続されない。アプリケーションか control layer が部品間でデータを移動する必要があるらしい。DirectShow の filter が pipeline で、graph が control layer になった、という感じに見える。分割したメリットはきっとあるんだろうが、どこにあるのかはまだ読み取れない。
  • MF では pull model しか使わない。DirectShow には push と pull の両方があり、柔軟性が高いようにも見えるが、結局ほとんどのフィルターはどちらかしかまともに動かず、このため個別に開発されたフィルター同士を接続しようとするとつながらないことが多かった。API の設計として、オプションを減らしていくのは正しい方向に見える。

DirectShow は、ビデオファイルを再生するくらいなら動いてくれるけど、もうちょっと難しいことを仕様とすると結構大変だったので、"significant architectural change" と言っている MF には期待が高いのだが。

ちなみに微妙な点が 2 点。

  • A limited subset of the Media Foundations APIs are available on Windows XP and Windows Server 2003 — どれくらいの "limited subset" なのかは明確ではない。
  • "There is no managed layer for Media Foundation at this time" — フィルターなどは性能上の問題から仕方ないにしても、制御部分とかは managed API を出してほしいところ。そういう場合には、WPF 経由で制御してね、ということかもしれない。

Vista の次の CTP は数日中とも噂されている。WPF などはこれの上に実装されるので、もうそろそろこの辺が固まっていないと困るだろうから、あとはドキュメントが充実してくればもう少し見えてくるかもしれない。

| | Comments (5953) | TrackBack (0)

2006.02.06

IE7 RSS

IE7 における RSS サポートの全貌が見えてきた。

API が出てくるのは想定していたが、そのサポート範囲は思っていたよりもだいぶ厚い。

更新があったら知らせて、読む時にはサイトに行くのかと思っていた。WinFS になればそこに入れるのかな、くらい。

でもしっかり store も持っている。フォルダ構造で RSS feeds を管理して、それぞれに対して 過去記事をどれくらい取っておくかを指定する画面 もある。「Keep all items」もあるので、全部取っておけるらしい。

う~ん、おもっていたよりずっとよい。基本サポートだけだったら足りない部分を作って行こうかと思っていたけれど、足りない部分を探す方が大変かもしれない。

| | Comments (2) | TrackBack (0)

2006.02.04

Dispose or Close

Dispose を呼ぶべきか、Close を呼ぶべきか という深遠(?)なテーマについて記事が。

  • Close した object に対して操作を行ったり再 open する場合には close
  • それ以外には Dispsoe
  • 通常後者なので、原則は Dispose

ということらしい。

自分としては Exception が気になる。Dispose は finalizer からも呼ばれたりするので、原則 throw してはいけないと思っている。しかしファイルシステムの flush 操作など、Close は throw することがある。

Dispose は try/catch して best effort でエラーを食うような実装をしているけれど、正しいのかなあ。その辺の記述は見当たらない。

| | Comments (470) | TrackBack (0)

« January 2006 | Main | March 2006 »