YUV→RGB変換
type: Concept
definition: Media FoundationのdecoderがYUV(Y'CbCr)系で出力する非圧縮フレームを、画像処理や保存で使うRGB系の画素列へ変換する処理。
alternative label: YUVからRGBへの変換
requires: クロマサブサンプリング(4:4:4/4:2:2/4:2:0)
requires: stride(画像の行送りバイト数)

NV12ピクセル形式
type: Concept
definition: 輝度(Y)プレーンと、間引かれた色差(UV)プレーンを持つ4:2:0のYUV系ピクセル形式。幅・高さが偶数である必要がある。
alternative label: NV12
uses: クロマサブサンプリング(4:4:4/4:2:2/4:2:0)
uses: Y'CbCr
requires: stride(画像の行送りバイト数)

YUY2ピクセル形式
type: Concept
definition: 横方向に2画素でU/Vを共有する、packedな4:2:2のYUV系ピクセル形式。幅が偶数である必要がある。
alternative label: YUY2
uses: クロマサブサンプリング(4:4:4/4:2:2/4:2:0)
uses: Y'CbCr

クロマサブサンプリング(4:4:4/4:2:2/4:2:0)
type: Concept
definition: 人間の目が色の細かさより明るさの細かさに敏感であることを利用して、色差成分U/Vを輝度Yより粗く保持する標本化方式。4:4:4/4:2:2/4:2:0で間引き方が異なる。
alternative label: 色差の間引き

MF_MT_YUV_MATRIX属性
type: Concept
definition: メディアタイプが持つ、YUVからRGBへの変換にBT.601とBT.709のどちらの係数を使うかを示す属性。
alternative label: YUV Matrix
uses: BT.601
uses: BT.709

MF_MT_VIDEO_NOMINAL_RANGE属性
type: Concept
definition: メディアタイプが持つ、YとU/Vが16..235/16..240のlimited rangeか、0..255のfull rangeかを示す属性。
alternative label: Nominal Range

Y'CbCr
type: Concept
definition: 輝度成分Yと色差成分Cb/Crで色を表すデジタルvideoの色空間で、Windowsの動画API群が広く使う「YUV」という呼び名は実質的にこれを指す。
alternative label: YCbCr

IMFSourceReader(Source Reader)
type: Concept
definition: Media Foundationが提供する、メディアファイルからサンプルを同期的または非同期的に読み出すための入口となるインターフェイス。
alternative label: Source Reader
uses: IMFMediaType

MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING
type: Concept
definition: Source Readerに設定すると、内部のsoftware処理でYUV系フレームをRGB32へ自動変換させられる属性。リアルタイム再生向けには最適化されていない。
alternative label: Source Readerの自動video processing
implements: YUV→RGB変換
uses: MFVideoFormat_RGB32

MFVideoFormat_RGB32
type: Concept
definition: Media Foundationの32bit RGBピクセル形式。byte0-2がB,G,Rで、byte3はalphaとは限らずARGB32ではない。
alternative label: RGB32

Video Processor MFT
type: Concept
definition: 色空間変換・サイズ変更・インターレース解除・フレームレート変換をまとめて扱えるMedia FoundationのTransform。

stride(画像の行送りバイト数)
type: Concept
definition: 画像バッファで1行分が占めるバイト数。幅×1画素のバイト数と一致するとは限らず、行末にpaddingが入ることがある。
alternative label: Image Stride

IMF2DBuffer::Lock2D
type: Concept
definition: 2Dの画像バッファをロックし、scan line 0の先頭ポインタと実際のstrideを取得するMedia FoundationのAPI。
alternative label: Lock2D
recommended for: YUV→RGB変換

IMFMediaType
type: Concept
definition: IMFAttributesを継承し、major type・subtype・フレームサイズ・色情報などメディア形式の情報を属性として保持するMedia FoundationのCOMインターフェース。
alternative label: メディアタイプ
uses: IMFAttributes

IMFAttributes
type: Concept
definition: GUIDをキーにしたkey/valueストアを表すMedia FoundationのCOMインターフェースで、設定値やメディア形式の情報を保持する。
alternative label: Attributes

BT.601
type: Concept
definition: SDTV(標準画質)以下のvideoで使われる、YUVからRGBへの変換係数セット。
alternative label: ITU-R BT.601

BT.709
type: Concept
definition: SDを超える解像度のvideoで優先して使われる、YUVからRGBへの変換係数セット。
alternative label: ITU-R BT.709

Media Foundation
type: Concept
definition: Windowsが提供する、メディアの再生・変換・エンコード/デコードを行うためのCOMベースのフレームワーク。
alternative label: MF

subject: YUV→RGB変換
predicate: requires
object: クロマサブサンプリング(4:4:4/4:2:2/4:2:0)
description: YUVからRGBへの変換は、まずサブサンプリングで間引かれたU/Vを各pixelへ割り当て直す(chroma upsampling)必要がある
evidence: recommended-8-bit-yuv-formats-for-video-rendering
verified at: 2026-08-01
certainty: established

subject: YUV→RGB変換
predicate: configuredBy
object: MF_MT_YUV_MATRIX属性
description: 自前変換(NV12/YUY2を自分でBGRAへ変換する経路)では、変換で使う係数(BT.601かBT.709か)はMF_MT_YUV_MATRIX属性で構成される
evidence: extended-color-information
verified at: 2026-08-01
certainty: context-dependent

subject: YUV→RGB変換
predicate: configuredBy
object: MF_MT_VIDEO_NOMINAL_RANGE属性
description: 自前変換(NV12/YUY2を自分でBGRAへ変換する経路)では、変換の前段で戻すべきrange(16..235など)はMF_MT_VIDEO_NOMINAL_RANGE属性で構成される
evidence: mf-mt-video-nominal-range-attribute
verified at: 2026-08-01
certainty: context-dependent

subject: NV12ピクセル形式
predicate: uses
object: クロマサブサンプリング(4:4:4/4:2:2/4:2:0)
description: NV12は4:2:0で、2x2ブロックの4画素が1組のU/Vを共有する
evidence: recommended-8-bit-yuv-formats-for-video-rendering
verified at: 2026-08-01
certainty: established

subject: YUY2ピクセル形式
predicate: uses
object: クロマサブサンプリング(4:4:4/4:2:2/4:2:0)
description: YUY2は4:2:2で、横方向に2画素が1組のU/Vを共有する
evidence: recommended-8-bit-yuv-formats-for-video-rendering
verified at: 2026-08-01
certainty: established

subject: NV12ピクセル形式
predicate: uses
object: Y'CbCr
description: NV12のYとUVプレーンが表すのはY'CbCrの標本である
evidence: extended-color-information
verified at: 2026-08-01
certainty: established

subject: YUY2ピクセル形式
predicate: uses
object: Y'CbCr
description: YUY2のY/U/Vが表すのはY'CbCrの標本である
evidence: extended-color-information
verified at: 2026-08-01
certainty: established

subject: IMFSourceReader(Source Reader)
predicate: uses
object: MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING
description: MF_SOURCE_READER_ENABLE_VIDEO_PROCESSINGを明示的に設定した場合、Source Readerの内部でYUV->RGB32のvideo processingが有効になる
evidence: mf-source-reader-enable-video-processing
verified at: 2026-08-01
certainty: context-dependent

subject: MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING
predicate: implements
object: YUV→RGB変換
description: MF_SOURCE_READER_ENABLE_VIDEO_PROCESSINGは限定的なYUV->RGB32のvideo processingの実装を担うが、software処理でありplayback向けには最適化されていない
evidence: mf-source-reader-enable-video-processing
verified at: 2026-08-01
certainty: established

subject: MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING
predicate: uses
object: MFVideoFormat_RGB32
description: video processingを有効にしてSetCurrentMediaTypeでMFVideoFormat_RGB32を要求すると、自動変換の出力形式になる
evidence: mf-source-reader-enable-video-processing
verified at: 2026-08-01
certainty: established

subject: Video Processor MFT
predicate: recommendedFor
object: YUV→RGB変換
description: リアルタイム再生やD3Dベースのrendering、大量frame処理では、Source Readerの自動変換よりVideo Processor MFTでの変換が選択肢になる
evidence: video-processor-mft
verified at: 2026-08-01
certainty: context-dependent

subject: YUV→RGB変換
predicate: requires
object: stride(画像の行送りバイト数)
description: pixelの行を読み進めるには、width×bytesPerPixelではなく実際のbufferのstrideを使う必要がある
evidence: uncompressed-video-buffers
verified at: 2026-08-01
certainty: established

subject: stride(画像の行送りバイト数)
predicate: verifiedBy
object: IMF2DBuffer::Lock2D
description: IMF2DBuffer::Lock2Dが使えるbufferでは、実際のstride(actual pitch)はLock2Dが返す値で確認できる(使えないbufferではIMFMediaBuffer::Lockと既定strideの計算にフォールバックする)
evidence: nf-mfobjects-imf2dbuffer-lock2d
verified at: 2026-08-01
certainty: context-dependent

subject: IMF2DBuffer::Lock2D
predicate: recommendedFor
object: YUV→RGB変換
description: buffer取得ではIMF2DBuffer::Lock2Dが使えるならそれを優先して使うことが推奨される
evidence: uncompressed-video-buffers
verified at: 2026-08-01
certainty: established

subject: IMFSourceReader(Source Reader)
predicate: uses
object: IMFMediaType
description: Source Readerに要求したいsubtype(NV12/YUY2/RGB32など)はIMFMediaTypeで組み立ててSetCurrentMediaTypeへ渡す
evidence: nf-mfreadwrite-imfsourcereader-setcurrentmediatype
verified at: 2026-08-01
certainty: established

subject: IMFMediaType
predicate: uses
object: IMFAttributes
description: IMFMediaTypeはIMFAttributesを継承した属性ストアで、MF_MT_YUV_MATRIXやMF_MT_VIDEO_NOMINAL_RANGEなどの色情報を保持する
evidence: nn-mfobjects-imfmediatype
verified at: 2026-08-01
certainty: established

subject: stride(画像の行送りバイト数)
predicate: configuredBy
object: IMFMediaType
description: IMFMediaTypeにMF_MT_DEFAULT_STRIDE属性が設定されている場合、既定のstrideはその値で構成される(未設定なら別途計算が必要で、これは最小stride値であり実際のbufferのstrideとは限らない)
evidence: uncompressed-video-buffers
verified at: 2026-08-01
certainty: context-dependent

subject: NV12ピクセル形式
predicate: requires
object: stride(画像の行送りバイト数)
description: NV12のUV plane先頭はwidth×heightではなくstride×heightで決まるため、strideを正しく扱わないとplane境界がずれる
evidence: uncompressed-video-buffers
verified at: 2026-08-01
certainty: established

subject: MF_MT_YUV_MATRIX属性
predicate: uses
object: BT.601
description: MF_MT_YUV_MATRIXが取り得る値の1つがBT.601で、SDTV以下のvideoで使われる
evidence: ne-mfobjects-mfvideotransfermatrix
verified at: 2026-08-01
certainty: established

subject: MF_MT_YUV_MATRIX属性
predicate: uses
object: BT.709
description: MF_MT_YUV_MATRIXが取り得る値の1つがBT.709で、SDを超えるvideoで優先される
evidence: ne-mfobjects-mfvideotransfermatrix
verified at: 2026-08-01
certainty: established

subject: Media Foundation
predicate: uses
object: IMFSourceReader(Source Reader)
description: ファイルから直接フレームを取り出す用途(本記事の経路)では、Media FoundationはメディアファイルからYUVフレームを取り出す入口としてSource Readerを提供する
evidence: source-reader
verified at: 2026-08-01
certainty: context-dependent

subject: YUV→RGB変換
predicate: uses
object: NV12ピクセル形式
description: 自前変換では、NV12を受け取ってBGRA32へ変換する経路を扱う
evidence: video-subtype-guids
verified at: 2026-08-01
certainty: context-dependent

subject: YUV→RGB変換
predicate: uses
object: YUY2ピクセル形式
description: 自前変換では、YUY2を受け取ってBGRA32へ変換する経路も扱う
evidence: video-subtype-guids
verified at: 2026-08-01
certainty: context-dependent