@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/2026/03/15/002-media-foundation-yuv-to-rgb-conversion-patterns/#article>
    schema:about <https://comcomponent.com/knowledge/yuv-to-rgb-conversion/>, <https://comcomponent.com/knowledge/nv12-pixel-format/>, <https://comcomponent.com/knowledge/yuy2-pixel-format/> ;
    schema:mentions <https://comcomponent.com/knowledge/media-foundation/>, <https://comcomponent.com/knowledge/imfsourcereader/>, <https://comcomponent.com/knowledge/imfmediatype/>, <https://comcomponent.com/knowledge/imfattributes/>, <https://comcomponent.com/knowledge/mf-video-processing-auto-conversion/>, <https://comcomponent.com/knowledge/mfvideoformat-rgb32/>, <https://comcomponent.com/knowledge/video-processor-mft/>, <https://comcomponent.com/knowledge/chroma-subsampling/>, <https://comcomponent.com/knowledge/ycbcr/>, <https://comcomponent.com/knowledge/bt601/>, <https://comcomponent.com/knowledge/bt709/>, <https://comcomponent.com/knowledge/yuv-matrix-attribute/>, <https://comcomponent.com/knowledge/nominal-range-attribute/>, <https://comcomponent.com/knowledge/video-stride/>, <https://comcomponent.com/knowledge/imf2dbuffer-lock2d/> .

<https://comcomponent.com/knowledge/yuv-to-rgb-conversion/> a skos:Concept ;
    skos:prefLabel "YUV→RGB変換"@ja ;
    skos:definition "Media FoundationのdecoderがYUV(Y'CbCr)系で出力する非圧縮フレームを、画像処理や保存で使うRGB系の画素列へ変換する処理。"@ja ;
    skos:altLabel "YUVからRGBへの変換"@ja ;
    ks:requires <https://comcomponent.com/knowledge/chroma-subsampling/> ;
    ks:requires <https://comcomponent.com/knowledge/video-stride/> .

<https://comcomponent.com/knowledge/nv12-pixel-format/> a skos:Concept ;
    skos:prefLabel "NV12ピクセル形式"@ja ;
    skos:definition "輝度(Y)プレーンと、間引かれた色差(UV)プレーンを持つ4:2:0のYUV系ピクセル形式。幅・高さが偶数である必要がある。"@ja ;
    skos:altLabel "NV12" ;
    ks:uses <https://comcomponent.com/knowledge/chroma-subsampling/> ;
    ks:uses <https://comcomponent.com/knowledge/ycbcr/> ;
    ks:requires <https://comcomponent.com/knowledge/video-stride/> .

<https://comcomponent.com/knowledge/yuy2-pixel-format/> a skos:Concept ;
    skos:prefLabel "YUY2ピクセル形式"@ja ;
    skos:definition "横方向に2画素でU/Vを共有する、packedな4:2:2のYUV系ピクセル形式。幅が偶数である必要がある。"@ja ;
    skos:altLabel "YUY2" ;
    ks:uses <https://comcomponent.com/knowledge/chroma-subsampling/> ;
    ks:uses <https://comcomponent.com/knowledge/ycbcr/> .

<https://comcomponent.com/knowledge/chroma-subsampling/> a skos:Concept ;
    skos:prefLabel "クロマサブサンプリング(4:4:4/4:2:2/4:2:0)"@ja ;
    skos:definition "人間の目が色の細かさより明るさの細かさに敏感であることを利用して、色差成分U/Vを輝度Yより粗く保持する標本化方式。4:4:4/4:2:2/4:2:0で間引き方が異なる。"@ja ;
    skos:altLabel "色差の間引き"@ja .

<https://comcomponent.com/knowledge/yuv-matrix-attribute/> a skos:Concept ;
    skos:prefLabel "MF_MT_YUV_MATRIX属性"@ja ;
    skos:definition "メディアタイプが持つ、YUVからRGBへの変換にBT.601とBT.709のどちらの係数を使うかを示す属性。"@ja ;
    skos:altLabel "YUV Matrix" ;
    ks:uses <https://comcomponent.com/knowledge/bt601/> ;
    ks:uses <https://comcomponent.com/knowledge/bt709/> .

<https://comcomponent.com/knowledge/nominal-range-attribute/> a skos:Concept ;
    skos:prefLabel "MF_MT_VIDEO_NOMINAL_RANGE属性"@ja ;
    skos:definition "メディアタイプが持つ、YとU/Vが16..235/16..240のlimited rangeか、0..255のfull rangeかを示す属性。"@ja ;
    skos:altLabel "Nominal Range" .

<https://comcomponent.com/knowledge/ycbcr/> a skos:Concept ;
    skos:prefLabel "Y'CbCr"@ja ;
    skos:definition "輝度成分Yと色差成分Cb/Crで色を表すデジタルvideoの色空間で、Windowsの動画API群が広く使う「YUV」という呼び名は実質的にこれを指す。"@ja ;
    skos:altLabel "YCbCr" .

<https://comcomponent.com/knowledge/imfsourcereader/> a skos:Concept ;
    skos:prefLabel "IMFSourceReader(Source Reader)"@ja ;
    skos:definition "Media Foundationが提供する、メディアファイルからサンプルを同期的または非同期的に読み出すための入口となるインターフェイス。"@ja ;
    skos:altLabel "Source Reader" ;
    ks:uses <https://comcomponent.com/knowledge/imfmediatype/> .

<https://comcomponent.com/knowledge/mf-video-processing-auto-conversion/> a skos:Concept ;
    skos:prefLabel "MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING"@ja ;
    skos:definition "Source Readerに設定すると、内部のsoftware処理でYUV系フレームをRGB32へ自動変換させられる属性。リアルタイム再生向けには最適化されていない。"@ja ;
    skos:altLabel "Source Readerの自動video processing"@ja ;
    ks:implements <https://comcomponent.com/knowledge/yuv-to-rgb-conversion/> ;
    ks:uses <https://comcomponent.com/knowledge/mfvideoformat-rgb32/> .

<https://comcomponent.com/knowledge/mfvideoformat-rgb32/> a skos:Concept ;
    skos:prefLabel "MFVideoFormat_RGB32"@ja ;
    skos:definition "Media Foundationの32bit RGBピクセル形式。byte0-2がB,G,Rで、byte3はalphaとは限らずARGB32ではない。"@ja ;
    skos:altLabel "RGB32" .

<https://comcomponent.com/knowledge/video-processor-mft/> a skos:Concept ;
    skos:prefLabel "Video Processor MFT"@ja ;
    skos:definition "色空間変換・サイズ変更・インターレース解除・フレームレート変換をまとめて扱えるMedia FoundationのTransform。"@ja .

<https://comcomponent.com/knowledge/video-stride/> a skos:Concept ;
    skos:prefLabel "stride(画像の行送りバイト数)"@ja ;
    skos:definition "画像バッファで1行分が占めるバイト数。幅×1画素のバイト数と一致するとは限らず、行末にpaddingが入ることがある。"@ja ;
    skos:altLabel "Image Stride" .

<https://comcomponent.com/knowledge/imf2dbuffer-lock2d/> a skos:Concept ;
    skos:prefLabel "IMF2DBuffer::Lock2D"@ja ;
    skos:definition "2Dの画像バッファをロックし、scan line 0の先頭ポインタと実際のstrideを取得するMedia FoundationのAPI。"@ja ;
    skos:altLabel "Lock2D" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/yuv-to-rgb-conversion/> .

<https://comcomponent.com/knowledge/imfmediatype/> a skos:Concept ;
    skos:prefLabel "IMFMediaType"@ja ;
    skos:definition "IMFAttributesを継承し、major type・subtype・フレームサイズ・色情報などメディア形式の情報を属性として保持するMedia FoundationのCOMインターフェース。"@ja ;
    skos:altLabel "メディアタイプ"@ja ;
    ks:uses <https://comcomponent.com/knowledge/imfattributes/> .

<https://comcomponent.com/knowledge/imfattributes/> a skos:Concept ;
    skos:prefLabel "IMFAttributes"@ja ;
    skos:definition "GUIDをキーにしたkey/valueストアを表すMedia FoundationのCOMインターフェースで、設定値やメディア形式の情報を保持する。"@ja ;
    skos:altLabel "Attributes" .

<https://comcomponent.com/knowledge/bt601/> a skos:Concept ;
    skos:prefLabel "BT.601"@ja ;
    skos:definition "SDTV(標準画質)以下のvideoで使われる、YUVからRGBへの変換係数セット。"@ja ;
    skos:altLabel "ITU-R BT.601" .

<https://comcomponent.com/knowledge/bt709/> a skos:Concept ;
    skos:prefLabel "BT.709"@ja ;
    skos:definition "SDを超える解像度のvideoで優先して使われる、YUVからRGBへの変換係数セット。"@ja ;
    skos:altLabel "ITU-R BT.709" .

<https://comcomponent.com/knowledge/media-foundation/> a skos:Concept ;
    skos:prefLabel "Media Foundation"@ja ;
    skos:definition "Windowsが提供する、メディアの再生・変換・エンコード/デコードを行うためのCOMベースのフレームワーク。"@ja ;
    skos:altLabel "MF" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/yuv-to-rgb-conversion/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/chroma-subsampling/> ;
    schema:description "YUVからRGBへの変換は、まずサブサンプリングで間引かれたU/Vを各pixelへ割り当て直す(chroma upsampling)必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/recommended-8-bit-yuv-formats-for-video-rendering> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/yuv-to-rgb-conversion/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/yuv-matrix-attribute/> ;
    schema:description "自前変換(NV12/YUY2を自分でBGRAへ変換する経路)では、変換で使う係数(BT.601かBT.709か)はMF_MT_YUV_MATRIX属性で構成される"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/extended-color-information> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/yuv-to-rgb-conversion/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/nominal-range-attribute/> ;
    schema:description "自前変換(NV12/YUY2を自分でBGRAへ変換する経路)では、変換の前段で戻すべきrange(16..235など)はMF_MT_VIDEO_NOMINAL_RANGE属性で構成される"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/mf-mt-video-nominal-range-attribute> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/nv12-pixel-format/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/chroma-subsampling/> ;
    schema:description "NV12は4:2:0で、2x2ブロックの4画素が1組のU/Vを共有する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/recommended-8-bit-yuv-formats-for-video-rendering> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/yuy2-pixel-format/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/chroma-subsampling/> ;
    schema:description "YUY2は4:2:2で、横方向に2画素が1組のU/Vを共有する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/recommended-8-bit-yuv-formats-for-video-rendering> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/nv12-pixel-format/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ycbcr/> ;
    schema:description "NV12のYとUVプレーンが表すのはY'CbCrの標本である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/extended-color-information> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/yuy2-pixel-format/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ycbcr/> ;
    schema:description "YUY2のY/U/Vが表すのはY'CbCrの標本である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/extended-color-information> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/imfsourcereader/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/mf-video-processing-auto-conversion/> ;
    schema:description "MF_SOURCE_READER_ENABLE_VIDEO_PROCESSINGを明示的に設定した場合、Source Readerの内部でYUV->RGB32のvideo processingが有効になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/mf-source-reader-enable-video-processing> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mf-video-processing-auto-conversion/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/yuv-to-rgb-conversion/> ;
    schema:description "MF_SOURCE_READER_ENABLE_VIDEO_PROCESSINGは限定的なYUV->RGB32のvideo processingの実装を担うが、software処理でありplayback向けには最適化されていない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/mf-source-reader-enable-video-processing> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mf-video-processing-auto-conversion/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/mfvideoformat-rgb32/> ;
    schema:description "video processingを有効にしてSetCurrentMediaTypeでMFVideoFormat_RGB32を要求すると、自動変換の出力形式になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/mf-source-reader-enable-video-processing> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/video-processor-mft/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/yuv-to-rgb-conversion/> ;
    schema:description "リアルタイム再生やD3Dベースのrendering、大量frame処理では、Source Readerの自動変換よりVideo Processor MFTでの変換が選択肢になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/video-processor-mft> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/yuv-to-rgb-conversion/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/video-stride/> ;
    schema:description "pixelの行を読み進めるには、width×bytesPerPixelではなく実際のbufferのstrideを使う必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/uncompressed-video-buffers> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/video-stride/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/imf2dbuffer-lock2d/> ;
    schema:description "IMF2DBuffer::Lock2Dが使えるbufferでは、実際のstride(actual pitch)はLock2Dが返す値で確認できる(使えないbufferではIMFMediaBuffer::Lockと既定strideの計算にフォールバックする)"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/mfobjects/nf-mfobjects-imf2dbuffer-lock2d> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/imf2dbuffer-lock2d/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/yuv-to-rgb-conversion/> ;
    schema:description "buffer取得ではIMF2DBuffer::Lock2Dが使えるならそれを優先して使うことが推奨される"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/uncompressed-video-buffers> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/imfsourcereader/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/imfmediatype/> ;
    schema:description "Source Readerに要求したいsubtype(NV12/YUY2/RGB32など)はIMFMediaTypeで組み立ててSetCurrentMediaTypeへ渡す"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/mfreadwrite/nf-mfreadwrite-imfsourcereader-setcurrentmediatype> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/imfmediatype/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/imfattributes/> ;
    schema:description "IMFMediaTypeはIMFAttributesを継承した属性ストアで、MF_MT_YUV_MATRIXやMF_MT_VIDEO_NOMINAL_RANGEなどの色情報を保持する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/mfobjects/nn-mfobjects-imfmediatype> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/video-stride/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/imfmediatype/> ;
    schema:description "IMFMediaTypeにMF_MT_DEFAULT_STRIDE属性が設定されている場合、既定のstrideはその値で構成される(未設定なら別途計算が必要で、これは最小stride値であり実際のbufferのstrideとは限らない)"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/uncompressed-video-buffers> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/nv12-pixel-format/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/video-stride/> ;
    schema:description "NV12のUV plane先頭はwidth×heightではなくstride×heightで決まるため、strideを正しく扱わないとplane境界がずれる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/uncompressed-video-buffers> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/yuv-matrix-attribute/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/bt601/> ;
    schema:description "MF_MT_YUV_MATRIXが取り得る値の1つがBT.601で、SDTV以下のvideoで使われる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/mfobjects/ne-mfobjects-mfvideotransfermatrix> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/yuv-matrix-attribute/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/bt709/> ;
    schema:description "MF_MT_YUV_MATRIXが取り得る値の1つがBT.709で、SDを超えるvideoで優先される"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/mfobjects/ne-mfobjects-mfvideotransfermatrix> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/media-foundation/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/imfsourcereader/> ;
    schema:description "ファイルから直接フレームを取り出す用途(本記事の経路)では、Media FoundationはメディアファイルからYUVフレームを取り出す入口としてSource Readerを提供する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/medfound/source-reader> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/yuv-to-rgb-conversion/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/nv12-pixel-format/> ;
    schema:description "自前変換では、NV12を受け取ってBGRA32へ変換する経路を扱う"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/windows/win32/medfound/video-subtype-guids> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/yuv-to-rgb-conversion/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/yuy2-pixel-format/> ;
    schema:description "自前変換では、YUY2を受け取ってBGRA32へ変換する経路も扱う"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/windows/win32/medfound/video-subtype-guids> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
