この技術文書について
この技術文書は、マルチメディアアプリケーションを作成するために必要な「専門知識」や「プログラミング技術」について、幅広い分野に渡り解説しています。基本的な技術情報に加え、マネージ環境ではC#を、アンマネージ環境ではC++を用いて、実装技術についても解説しています。
本稿では、以下に示す2つの分野を扱います。
 |
ビデオについては、DirectShowの項で一部扱っています。 |
|
本稿は、C/C++・C#言語を用いていますが、これらの言語の入門書ではありません。読者は、C/C++・C#について基本的な文法やアプリケーション作成の手順についておおよそ理解している必要があります。C/C++・C#そのものの文法や開発に関する解説は、良書が多数出版されていますので、本稿と併せて参照して下さい。
本稿は以下の2点を柱に構成しています。
- 専門分野固有の技術情報
- C/C++・C#によるコーディング技術
セクションはテーマや分野ごとに独立しています。セクションはやさしい順に並んでいるわけではありませんので、読者は関心のあるセクションから読むことができます。各セクションは技術的難易度が異なるため、分野ごとに必要な基礎を押さえながら読み進めて下さい。特に専門的なトピックを扱っている個所では、基礎技術をすでに理解しているものとして話を進めている場合があります。専門用語や要素技術について、重要と思われるものは独立したコラムやセクションで解説しています。併せて参照して下さい。
この技術文書について、お気づきの点や質問などがございましたら「資料室の広場」を設けていますので、お気軽にお立ち寄り下さい。
公開について
この技術文書は扱う情報が多岐に渡るため、一度に公開することができません。そこで何回かに分けて公開することとしました。
 |
執筆の都合により、公開の時期や順番・内容等が変更になる場合があります。ご了承ください。 |
|
第一回公開分
はじめに
開発環境
- C++を用いたプロジェクト
- C#を用いたプロジェクト
初めてのプログラム
- C++を用いたアプリケーション
- C#を用いたアプリケーション
ウェーブフォーム
ウェーブ再生(.NET C#バージョン)
- ウェーブ再生デバイスを列挙する
- ウェーブデータを再生する
- ウェーブファイルを読む
MIDI
Standard MIDI File
- Standard MIDI Fileをロードする
- Standard MIDI Fileからイベントを読み込む
MIDIシーケンサー
- クラスを用いたMIDIストリームの実装
- クラスを用いたMIDIイベントの表現
マネージ環境
マーシャリング
- マーシャリング
- 変数の型
- 構造体とクラス
- プラットフォーム呼び出し
運用上の問題
- MMRESULT
- プラットフォーム呼び出しとマーシャリングに関する話題
第二回公開分
ウェーブフォーム
関連技術
- ウェーブバッファ
- コールバック方式
- WaveFormatEx構造体
- コンテナサイズと有効データサイズ
- データの配置
- ウェーブの分解能
- A-law・μ-law
要素技術
時間を管理する
- タイマーイベント
- サブスレッドによるポーリング(高精度版)
- サブスレッドによるポーリング(簡易版)
- タイマーイベント(.NET C#バージョン)
- 高精度コールバック(.NET C#バージョン)
第三回公開分
DirectSound
アンマネージ環境による再生(C++バージョン)
- 再生デバイスの列挙とオブジェクト生成
- サウンドバッファ
- バッファ更新のメカニズム
- 再生処理の流れ
- ウェーブデータの供給
マネージ環境による再生(C#バージョン)
- 再生デバイスの列挙とオブジェクト生成
- サウンドバッファ
- バッファ更新のメカニズム
- 再生処理の流れ
DirectSound
- 録音・再生各オブジェクトの生成
- ノーティファイイベントとリングバッファによる運用
- レイテンシー
- 録音側から再生側へのデータ転送
- 録音位置の挙動
- 録音と再生の同期
第四回公開分
DirectShow
フィルタグラフ(MFC C++バージョン)
- フィルターとフィルタグラフ
- デバイスの列挙
- フィルタグラフマネージャ
- グラフの構築
- レンダラーフィルターを指定する
- レイテンシーの変更
- フィルターを探す
- ピンを操作する
- Running Object Table
支援インターフェース
- IMediaSeeking
- IMediaControl
- IMediaEventEx
- IMediaFilter
- IBasicAudio
カスタムフィルターの設計
- ファクトリーテンプレート
- インプレイスフィルター
- 変換フィルター
- CPersistStreamによる永続性
- プロパティページ
- インターフェースの取得
第五回公開分
MPeg3
アンマネージ環境による実装(C/C++バージョン)
- mp3ファイルを再生する
- mp3ファイルの構造
- オーディオタグID3v1
- オーディオタグID3v2
- フレームヘッダー
- mpegに関連する構造体
- acm関数の利用
第六回公開分
ASIO
ASIO SDK
- SDKを理解する
- ASIO API
- ドライバー情報の取得
- ドライバーの運用
- バッファの作成とコールバック関数
- ウェーブデータの扱いとバッファの更新
- ASIO対応のアプリケーションを設計する
ASIO対応のアプリケーションを設計する
第七回公開分
DMO
DMOを使う(MFC C++バージョン)
- DMOについて
- DMOを列挙する
- IMediaObjectを作成する
- メディアタイプの設定
- プロセスの実行
DMOを組み込む
- DirectShowに組み込む
- DirectSoundに組み込む
エフェクト付きウェーブ再生
第八回以降の予定
ウェーブフォーム
- ウェーブ録音(.NET C#バージョン)
- ウェーブ再生(.NET C#バージョン)
- 多チャンネルデータを再生する
- 高分解能データを再生する
DirectSound
- アンマネージ環境による録音(MFC C++バージョン)
- マネージ環境による録音(.NET C#バージョン)
- 全2重プログラム(MFC C++バージョン)
DirectShow
MIDI
MIDIシーケンサー(.NET C#バージョン)
- MIDI再生デバイスを列挙する
- MIDIメッセージの送信
- ロングメッセージの送信
- Standard MIDI Fileへセーブする
- MIDIストリームの設計と実装
- シーケンスデータの設計と拡張
編集と表示
- 波形表示
- スペクトル表示
- ソノグラフ表示
- エンベロープ表示
ドキュメントの先頭へ