はじめに
AV Foundationについてどういう設計思想/概念で成り立っているか調査した。
オブジェクト図から明らかになるドメインモデル
オブジェクト図である。関係が複雑であみの目の様になっているが、以下の通りに分類するとAV Foundationの設計思想が分かる。
- 紫:再生制御
- AVPlayer
- AVPlayerItem
- 黄:レンダリング前のポストエフェクト
- AVVideoCompositing
- MTAudioProcessingTapRef
- 緑:特殊効果
- AVMutableAudioMixInputParameters
- AVMutableVideoCompositionLayerInstruction
- AVMutableAudioMix
- AVMutableVideoCompositionInstruction
- AVMutableVideoComposition
- AVVideoCompositing
- 水:編集中のメディアファイル
- AVMutableComposition
- AVMutableCompositionTrack
- 赤:元のメディアファイル、素材
- AVAsset
- AVAssetTrack
つまり、5つのレイヤーに関心毎を分離して自由に組み合わせれる様になっているのである。
これは動画アプリの事を考えれば当たり前で、元ファイルからいろいろ試行錯誤しながら編集してそれぞれを比較したいし、いろいろ特殊効果を検討したい、という要件を考えればこういうモデルに行き着くだろう。
オブジェクト図から明らかになるドメインモデル その2
順序は逆になるが普通の再生中のオブジェクト図を示す。
AVPlayerクラスはクロックの更新をしているだけで、現在再生位置はAVPlayerItemが保持している。