約 42 分で読めます

図解 H.265 入門 (1) 動画データの正体:画素・YUV・ビット深度

この記事の本文は AI(Claude Code)で生成し、筆者が全文を読んで内容を確認したものです。事実と数値は脚注の一次資料と手元の実測で裏を取っています。

動画の設定を触っていると「4:2:0」や「10 bit」といった表記をよく見かけるけど、それぞれの数字が何を表しているのかを説明しようとすると案外むずかしいです。非圧縮の動画のデータ量を一度計算しておくと、配信で使うビットレートがどのくらい小さい数字なのかを比べられるようになります。地味な内容やけど、圧縮の章に入る前の準備として読んでもらえれば。

圧縮の仕組みに入る前に、圧縮の対象になる動画データがどういう形をしているのかを確認します。この章では画素・輝度・色差・ビット深度を定義し、「4:2:0」という表記の各数字が何を指すのか、非圧縮の動画が実際に何バイトになるのかを計算します。

TL;DR

  • 動画は「W×HW \times H の格子に並んだ数値」を 1 秒あたり fpsf_{ps} 枚並べたものです。各画素は輝度 1 サンプルと色差 2 サンプルで表されます
  • 4:2:0 の 3 つの数字は「幅 4 画素 × 高さ 2 画素の窓の中に色差サンプルを何個持つか」を表します。4:2:0 のデータ量は 4:4:4 の 50% です
  • 1080p / 30 fps / 8 bit / 4:2:0 の非圧縮は 746.496 Mbit/s です。1 秒で 93.312 MB、1 時間で 335.9 GB になります
  • 配信の目安の一例では、1080p の H.265 は 4500 kbit/s です1。非圧縮の約 166 分の 1 に落としている計算になります
  • 10 bit は 8 bit の約 4 倍の階調を持つため、グラデーションの段差(バンディング)に強くなります。H.265 の Main 10 プロファイルは 4:2:0 の 8〜10 bit を許します2

動画は「数字の 3 次元配列」

まず定義を並べます。

  • 画素: 画像を格子状に区切った 1 マスです。動画の規格では「サンプル」という語で扱われます3
  • 解像度 W×HW \times H: フレームの幅(画素数)と高さ(画素数)です。1080p なら 1920×10801920 \times 1080​4、4K(UHD)なら 3840×21603840 \times 2160 です5
  • フレーム: 動画を構成する静止画 1 枚です。規格では「ピクチャ」と呼びます3
  • フレームレート fpsf_{ps}: 1 秒あたりのフレーム数です。単位は fps です
  • ビット深度 bb: 1 サンプルを何ビットで表すかです。8 bit なら 1 サンプルが 0〜255 の整数になります

つまり非圧縮の動画は、「幅 WW × 高さ HH × 成分数」の数値の配列を、時間方向に fpsf_{ps} 枚/秒で積み上げたものです。ビットが集まって 1 サンプルになり、Y・Cb・Cr の 3 サンプルで 1 画素の色が決まり、画素が並んで 1 枚の画像になり、画像が並んで動画になる、という入れ子です。

bits-to-video

8 個のビットが 1 サンプル、Y・Cb・Cr の 3 サンプルで 1 画素、画素が並んで 1 枚の画像、画像が並んで動画になる

flowchart LR
  A["動画<br/>(時間方向に積む)"] --> B["フレーム t<br/>W × H の格子"]
  B --> C["画素 (x, y)"]
  C --> D["輝度サンプル Y"]
  C --> E["色差サンプル Cb"]
  C --> F["色差サンプル Cr"]
  D --> G["b ビットの整数"]
  E --> G
  F --> G

この記事では、空間領域のサンプル値を f(x,y)f(x, y) と書きます。xx が横(列)、yy が縦(行)で、左上が原点、0 始まりです。

ここで注意したいのが、画素とサンプルは 1 対 1 ではないことです。後で見るように、4:2:0 では色差のサンプル数が輝度の 4 分の 1 しかありません。後の非圧縮サイズの計算では、この「1 画素あたり何サンプルあるか」を形式ごとに求めて使います。

明るさと色を分ける:RGB から YCbCr へ

なぜ分けるのか

ブラウザで色を扱うときは rgb(255, 0, 0) のように赤・緑・青の 3 成分で書きます。一方、動画コーデックは R・G・B ではなく、輝度(Y)と色差(Cb、Cr)という組に変換してから扱います。この形式は慣習的に「YUV」とも呼ばれますが、規格が使う名前は Y、Cb、Cr です3。以下でも Y / Cb / Cr で書きます。

イメージとしては、カラー写真を「白黒写真 1 枚」と「そこに何色を足すかの指示 2 枚」に分ける操作です。細かい形の情報はほとんどが白黒写真(輝度)に入っていて、色の指示(色差)は大づかみでも見た目が保てます。この性質を後の「色差サブサンプリング」の節で使います。ただし色差は文字どおり「輝度との差」なので、色差の 2 枚だけを眺めても色は決まりません。輝度と組にして初めて RGB に戻せる、という点は「足す色」のイメージと違います。

rgb-to-ycbcr

4×4 の純色が Y・Cb・Cr の 3 枚に分かれる。数値は後の「数値例」の純色の表と同じ。Cb・Cr の面の色は、値を分かりやすく色付けした便宜的なもの

変換式

変換の係数は「どの色空間の規定に従うか」で変わります。この章では、HDTV の色を定めた規格である BT.709 の係数を使います4。ほかの規格では、次の表のように別の係数を使います。

規格 想定 輝度の係数(R, G, B)
BT.6016 SD 0.299, 0.587, 0.114
BT.7094 HDTV(1080p) 0.2126, 0.7152, 0.0722
BT.20205 UHDTV(4K / 8K) 0.2627, 0.6780, 0.0593

同じ「YUV」と呼ばれていても係数が複数あるので、変換するときはどれを使うか明示する必要があります。以下は BT.709 で進めます。

輝度の定義は次のとおりです。ER′,EG′,EB′E'_R, E'_G, E'_B はガンマ補正済みの R'G'B' 信号で、0〜1 に正規化されています4。

EY′=0.2126ER′+0.7152EG′+0.0722EB′\displaystyle E'_Y = 0.2126 E'_R + 0.7152 E'_G + 0.0722 E'_B

緑の係数が一番大きい理由は、同じ強さの光でも緑が最も明るく見えることにあります。明るい環境での視覚(明所視)の感度のピークは 555 nm、つまり緑の波長です7。ただし 0.7152 という値そのものは感度のピーク波長から出るのではなく、その色空間が使う原色の色度座標と白色点から計算されます8。

色差は、輝度との差を決まった値で割って作ります4。

ECb′=EB′−EY′1.8556,ECr′=ER′−EY′1.5748\displaystyle E'_{Cb} = \frac{E'_B - E'_Y}{1.8556}, \qquad E'_{Cr} = \frac{E'_R - E'_Y}{1.5748}

分母は天下りに見えますが、ECb′,ECr′E'_{Cb}, E'_{Cr} が −0.5∼+0.5-0.5 \sim +0.5 に収まるよう正規化した値です。実際、2(1−0.0722)=1.85562(1 - 0.0722) = 1.8556、2(1−0.2126)=1.57482(1 - 0.2126) = 1.5748 と一致します。

最後に、この実数を整数に丸めます。連続的な値を決まった段数の整数に落とすこの操作を量子化(quantization)と呼びます。bb がビット深度、INT(⋅)\mathrm{INT}(\cdot) は小数部 0.5 以上を切り上げる演算です4。

DY=INT[(219EY′+16)⋅2b−8],DCb=INT[(224ECb′+128)⋅2b−8]\displaystyle D_Y = \mathrm{INT}\left\lbrack(219 E'_Y + 16) \cdot 2^{b-8}\right\rbrack, \qquad D_{Cb} = \mathrm{INT}\left\lbrack(224 E'_{Cb} + 128) \cdot 2^{b-8}\right\rbrack

DCrD_{Cr} も DCbD_{Cb} と同じ式です。8 bit のとき黒が 16、白が 235、色差の中央が 128 になります4。0〜255 を目一杯使わず上下に余白を残すこの取り決めを限定レンジ(limited range)、全域を使う取り決めをフルレンジ(full range)と呼びます。どちらで符号化したかは VideoFullRangeFlag という 1 ビットで区別されます8。

なぜわざわざ余白を残すのかというと、信号処理で生じる行き過ぎに備えるためです。映像信号にフィルタをかけると波形が黒より下や白より上に飛び出すことがあり、その行き過ぎ分を捨てずに持っておく余裕(フットルーム・ヘッドルーム)が要ります。8 bit で 16 より下と 235 より上に残した範囲がその余白です9。さらに 0 と 255 は映像データには使えず、同期のタイミング基準として予約されています4。映像では、指定がなければ限定レンジとみなすのが既定です8。

数値例:純赤は Y, Cb, Cr で何になるか

rgb(255, 0, 0)、つまり ER′=1,EG′=0,EB′=0E'_R = 1, E'_G = 0, E'_B = 0 を 8 bit の BT.709 で変換してみます。

ステップ 計算 結果
輝度 0.2126×1+0.7152×0+0.0722×00.2126 \times 1 + 0.7152 \times 0 + 0.0722 \times 0 EY′=0.2126E'_Y = 0.2126
青の色差 (0−0.2126)/1.8556(0 - 0.2126) / 1.8556 ECb′=−0.114572E'_{Cb} = -0.114572
赤の色差 (1−0.2126)/1.5748(1 - 0.2126) / 1.5748 ECr′=0.5E'_{Cr} = 0.5
輝度の量子化 219×0.2126+16=62.5594219 \times 0.2126 + 16 = 62.5594 DY=63D_Y = 63
青の色差の量子化 224×(−0.114572)+128=102.3358224 \times (-0.114572) + 128 = 102.3358 DCb=102D_{Cb} = 102
赤の色差の量子化 224×0.5+128=240224 \times 0.5 + 128 = 240 DCr=240D_{Cr} = 240

純赤は (Y, Cb, Cr) = (63, 102, 240) です。Cr は色差が取りうる上限近くの値になっている一方、Y は 63 と黒に近い値です。純赤は「派手だが明るくはない」色だということが、この数値から分かります。

ほかの純色も同じ式で計算すると次のようになります。

色 R', G', B' Y Cb Cr
赤 255, 0, 0 63 102 240
緑 0, 255, 0 173 42 26
青 0, 0, 255 32 240 118
白 255, 255, 255 235 128 128
黒 0, 0, 0 16 128 128

白と黒で色差が 128(中央値)になっているのが確認できます。無彩色では色差が 0 になる、という定義どおりの結果です。

コードを見る
rgb_to_ycbcr.py
import math

KR, KG, KB = 0.2126, 0.7152, 0.0722

def INT(v):
    return math.floor(v + 0.5)

def rgb_to_ycbcr(red, green, blue, b=8):
    """red, green, blue は 0..1 に正規化した R'G'B'。戻り値は b ビットの整数。"""
    ey = KR * red + KG * green + KB * blue
    ecb = (blue - ey) / 1.8556
    ecr = (red - ey) / 1.5748
    return (INT((219 * ey + 16) * 2 ** (b - 8)),
            INT((224 * ecb + 128) * 2 ** (b - 8)),
            INT((224 * ecr + 128) * 2 ** (b - 8)))

色差サブサンプリング:4:2:0 の 3 つの数字を読む

輝度と色差に分けた後、色差だけサンプル数を減らしても見た目が大きく崩れません。色差の解像度だけを輝度より下げるこの操作を色差サブサンプリング(chroma subsampling)と呼びます。

色を粗くしても気づきにくい理由

網膜には桿体(かんたい)と錐体(すいたい)という 2 種類の視細胞があります。

  • 桿体: 数は 1 億 1000 万〜1 億 2500 万個と圧倒的に多く7、わずかな光にも反応します10。その代わり視物質が 1 種類しかないので、色を区別できません10。夜道で物の形は見えるのに色が分からない、あの見え方を担っているのが桿体です。感度のピークは 507 nm です11
  • 錐体: 数は 640 万個と桿体のおよそ 20 分の 1 ですが7、感度のピークが違う 3 種類(S・M・L)があります。ピークは S が 442 nm(青)、M が 543 nm(緑)、L が 570 nm(赤)で11、この 3 つの反応の比率が色の感覚のもとになります

数だけ見て「桿体のほうが圧倒的に多いから明るさに敏感」と結論するのは誤りです。桿体が働くのは暗所視(暗いところでの視覚)で、ディスプレイを見ているような明るさは錐体が働く明所視の領域です12。明所視で輝度の知覚を主に担うのは錐体で、明所視の輝度は L 錐体と M 錐体が吸収した光子の重み付き和に比例します。暗所視の輝度が桿体の吸収光子数に比例するのとは別系統です7。桿体の数は色差サブサンプリングの根拠にはなりません。

4 種類の細胞の反応を 1 枚にすると次のようになります。

ヒトの視細胞の分光感度

L・M・S 錐体と桿体(グレーの破線)の分光感度。各曲線はピークを 1 に正規化してあり、桿体と錐体の絶対感度の差は表していません。S 錐体は測定値のある 615 nm までを描いています11

M と L のピークは 27 nm しか離れておらず、曲線が大きく重なっています。「赤の錐体」「緑の錐体」と呼ばれるものの、実際にはどちらも可視光の広い範囲に反応していて、色は 3 つの出力の差から間接的に決まります。

では、なぜ色だけ粗くしてよいのでしょうか。根拠になるのは、錐体からの信号を組み合わせて作られる「輝度の系統」と「色の系統」とで、細かい模様を見分ける感度が違うことです。感度は、ある細かさの縞模様を見分けられる最小のコントラストの逆数であるコントラスト感度で比べます。縞の細かさは、視角 1 度あたりの縞の周期数である cycles/deg で測ります。

  • 色による識別の限界解像度は、赤-緑・青-黄のどちらでも 11〜12 cycles/deg 程度です13
  • 輝度の縞に対するコントラスト感度は、明所視で 50〜60 cycles/deg あたりまで伸びます14

見分けられる細かさは、輝度と色でおおまかに 4〜5 倍違います。測定条件の違う実験どうしの比較なので、厳密な倍率ではありません。実際、0.5 cycles/deg より高い細かさでは、輝度の縞のほうが色の縞よりコントラスト感度が高くなります13。細かい縞になるほど色の違いは見分けられなくなるので、「色差は輝度より粗く持っても気づきにくい」が成り立ちます。

4×2 の窓で数える

4:2:0 のような表記を読むには、画像を幅 4 画素・高さ 2 画素の小さな窓で切り取って、その中に色差のサンプルが何個あるかを数えます。この窓のことを参照ブロックと呼びます。輝度のサンプルはどの形式でも全画素に 1 個ずつあり、減るのは色差だけです。

3 つの数字が指すもの

3 つの形式について、窓の中の色差サンプルを数えたのが次の図です。

4:4:4 / 4:2:2 / 4:2:0 を 4×2 の窓で数える

4×2 の窓に色差サンプルがいくつ入るか。上の行の個数が 2 番目の数字、下の行の個数が 3 番目の数字になる

4:2:0 の色差は、既定では図のとおり上下 2 本の輝度の行のちょうど間の高さにあります3。数えるときは、上の行の分として数えます。

図と見比べると、3 つの数字は次のように対応しています。ただしこの読み方は慣習的なもので、規格が表記法として定義しているわけではありません15。

位置 意味
1 番目 窓の幅(画素数)。ほとんどの場合 4(3:1:1 のような例外もある)
2 番目 窓の幅に対する色差の横の数。図の 上の行 にある色差サンプルの数
3 番目 2 番目と同じなら縦は間引かない、0 なら縦も半分(図では 下の行 の分の個数と一致する)

4:2:0 なら上の行の分として 2 個、下の行の分は 0 個です。

引っかかりやすいのが 3 番目の 0 です。並びが Y : Cb : Cr に見えるので「Cr が 0 個」と読んでしまいがちですが、Cb と Cr は必ず同じ数だけ同じ場所にあります。0 が意味しているのは「下の行には色差を置かず、上の行の色差を共有する」、つまり縦方向にも半分に間引いているということです。

4:2:2 との違いも、この最後の数字に表れます。2 番目はどちらも 2 で横の間引き方は同じ、違うのは 3 番目だけです。4:2:2 は下の行にも 2 個置く(縦は間引かない)、4:2:0 は下の行に置かない(縦も間引く)という差です。

そこで引っかかるのが、横は 4 → 2 と個数で減っているのに、縦は 0 になるという非対称です。この非対称は記法の成り立ちから来ています。元は 2 番目が Cb、3 番目が Cr の横の間引きを表しており、縦の間引きは想定されていませんでした。いまは Cb と Cr を同じだけ間引くのが普通なので、2 番目が両方の横の間引きを表し、3 番目は「2 番目と同じなら縦は間引かない、0 なら縦も半分」という印として使われています15。間引く量は横も縦も同じ半分で、違うのは表し方だけです。

実際にどれだけ間引かれるか

間引く量そのものは規格で決まっています。色差の 2 枚が輝度に対してどれだけ小さいかは、次の 3 通りです3。

形式 色差の幅 色差の高さ
4:4:4 輝度と同じ 輝度と同じ
4:2:2 輝度の半分 輝度と同じ
4:2:0 輝度の半分 輝度の半分

横の縮小率は SubWidthC、縦の縮小率は SubHeightC という名前で規格に出てきます3。4:2:0 はどちらも 2、4:2:2 は横だけ 2、4:4:4 はどちらも 1 です。小さくなるのは色差の 2 枚だけで、輝度の幅と高さは変わりません。

なお、色差を横だけ半分にする比率は SD 時代から続いています。当時の規格はサンプリング周波数を輝度で 13.5 MHz、色差でその半分の 6.75 MHz と定めていました6。横を 2 分の 1 にしたものが 4:2:2、さらに縦も半分にしたものが 4:2:0 です9。

サンプルの並びを形式ごとに見る

輝度サンプルを Y、色差サンプル(Cb と Cr が同じ位置に 1 組)を C として、4 画素 × 2 画素の窓を形式ごとに書き出します。

4:4:4 — 全画素に色差があります。

画素 0 画素 1 画素 2 画素 3
行 0 Y + C Y + C Y + C Y + C
行 1 Y + C Y + C Y + C Y + C

4:2:2 — 横 2 画素で色差 1 組を共有します。色差は窓の中に 4 組です。

画素 0 画素 1 画素 2 画素 3
行 0 Y + C Y Y + C Y
行 1 Y + C Y Y + C Y

4:2:0 — 2×2 の 4 画素で色差 1 組を共有します。色差は窓の中に 2 組だけです。

画素 0 画素 1 画素 2 画素 3
行 0 Y + C Y Y + C Y
行 1 Y Y Y Y

まとめた 1 個の値はどう決まるのか

4:2:0 では 2×2 の 4 画素分の色差が 1 個のサンプルにまとまります。その 1 個はどんな値なのでしょうか。

規格が決めているのは、色差サンプルが何個あるかと、輝度に対してどの位置にあるとみなすかまでです3。4 個から 1 個を作る計算はコーデックの規格では決まっておらず、エンコードに入る前の前処理で行います。

一般的なのは、色差の面にローパスフィルタをかけてから間引く方法です。先にならしておかないと、間引きで拾いきれなかった細かい模様が偽の色として現れてしまいます。SD 時代の規格には 4:4:4 から 4:2:2 に落とすフィルタ特性の目安が図で示されており6、RGB から色差を作る流れにも「サブサンプリングフィルタ」の段が置かれています9。変換ツールでも輝度と色差に別のフィルタを割り当てられます。ffmpeg の bicublin は輝度に bicubic、色差に bilinear を使います16。

最も単純な例が 4 個の単純平均です。2×2 の Cb が次の値だったとします。

100  104
 98  102

まとめた値は (100+104+98+102)/4=101(100 + 104 + 98 + 102) / 4 = 101 です。

既定の「2 行の間の高さにある」というのは、上下 2 行の値をまとめた結果が、縦方向にはちょうど 2 行の真ん中を代表している、という意味です。横方向は事情が違い、既定では色差は左側の輝度の列と同じ横位置に置かれます3。そのため規格上の色差の位置は、単純平均の重心(2×2 の中心)から横にずれています。実際のフィルタの重みは、この規格上の位置に合わせて決めます3。

表示するときは、間引きと逆向きの処理を行います。データの上では 2×2 の 4 画素が 1 個の Cb・Cr を共有しているので、デコードのあとで色差を輝度と同じ数まで引き伸ばします。これをアップサンプリング(upsampling)と呼びます。同じ値を 4 つコピーすれば 4 画素は同じ色になりますが、復号側では補間フィルタで隣の色差サンプルとの間をならすので、画面上では 4 画素の色がわずかに違って見えます917。データ上は 1 個を共有し、表示では補間でなだらかにされる、ということです。

データ量は何%になるか

1 画素あたりのサンプル数は「輝度 1 個 + 色差 2 枚 ÷(横の縮小率 × 縦の縮小率)」で求まります。

形式 縮小率の積 1 画素あたりのサンプル数 4:4:4 比
4:4:4 1 × 1 = 1 1+2/1=3.001 + 2/1 = 3.00 100.0%
4:2:2 2 × 1 = 2 1+2/2=2.001 + 2/2 = 2.00 66.7%
4:2:0 2 × 2 = 4 1+2/4=1.501 + 2/4 = 1.50 50.0%

4:2:0 は 4:4:4 のちょうど半分です。16×16 画素のブロックで数えると次のようになります。

形式 輝度サンプル 色差サンプル 合計
4:4:4 256 512 768
4:2:2 256 256 512
4:2:0 256 128 384

ここまでの流れを 1 本にまとめると次のようになります。

chroma-subsample

色差サンプルが横に半分(4:2:2)、さらに縦にも半分(4:2:0)と間引かれていく。バーは 4:4:4 を 100% としたデータ量。4:2:0 では 2×2 の色差 4 個を 1 個にまとめて 2 行の間に置く(図は Cb を単純平均で示したもので、Cr も同じ)。輝度の格子は最後まで変わらない

離散コサイン変換(DCT)や量子化といった圧縮らしい処理を一切かける前に、色差を間引くだけでデータが半分になります。しかも自然な映像では見た目の劣化がほとんど分かりません。これが動画で 4:2:0 が既定になっている理由です。

一方で、彩度の高い細い線や文字(赤地に白抜きの文字など)は 4:2:0 が苦手とする素材です。色の境界を 2 画素単位でしか置けないため、輪郭の色がにじみます。字幕やスクリーンキャプチャで色のにじみが目立つのはこのためです。

ビット深度:8 bit と 10 bit

階調を「階段」として見る

ビット深度 bb は 1 サンプルを何ビットで表すかです。黒から白までの明るさの変化を階段に例えると、ビット深度は階段の段数に当たります。段数が少ないと 1 段の高さが大きくなり、なめらかな坂のつもりが段差として見えてしまいます。実際の段の高さが均一でない点は、階段の比喩とは違います。ガンマ補正があるため、1 段あたりの明るさの変化は暗部では小さく、明部では大きくなります。

グラデーションが階段状の縞に見えてしまうこの現象をバンディング(banding)と呼びます。規格の言葉では「階調再現の不連続」です18。

数えてみる

限定レンジでは、8 bit のとき黒が 16、白が 235 に割り当てられます。10 bit ではそれぞれ 64、940 です4。使える階調の段数は次のとおりです。

ビット深度 全レベル数 黒 白 使える階調
8 bit 256 16 235 220 段
10 bit 1024 64 940 877 段

10 bit は 8 bit の約 3.99 倍の階調を持ちます。1 段あたりの明るさの差が約 4 分の 1 になる、ということです。

段差が見えるかどうかは、1 段上がったときに明るさが元の明るさに対してどれだけの割合で変わるか、という比で決まります。ビット深度を決める基準は、隣り合うコードの間で表示輝度がどれだけ変わるか(再現コントラスト)が、知覚できる最小のコントラストを下回ることです18。最小知覚コントラスト ΔL/L\Delta L / L は、中程度の明るさでは 1/50 から 1/100 の間です18(暗い所と非常に明るい所では大きくなります)。段数を 4 倍にすれば 1 段あたりの比は 4 分の 1 になるので、10 bit のほうが余裕を持ってこの基準を満たせます。

コントラストの比だけでは実感がわきにくいので、画面上の帯の幅にも換算しておきます。横 1920 画素いっぱいに黒→白のグラデーションを敷いた場合、1 段分の帯の幅は 8 bit で 8.73 画素、10 bit で 2.19 画素です。8 bit では 9 画素弱の帯が 220 本並ぶことになります。ただしこれは感覚をつかむための換算で、見える/見えないの判定そのものは帯の幅ではなく上のコントラスト比で決まります。

4K / 8K の規格である BT.2020 は、ビット深度を 10 bit または 12 bit と定めています5。8 bit は選択肢に入っていません。

H.265 のプロファイルとの関係

そのビットストリームで何を使ってよいかを決める区分を、プロファイル(profile)と呼びます。H.264(AVC、Advanced Video Coding)にもある仕組みで、Apple 端末向けの HLS では、H.264 は High プロファイルが推奨されています1。H.265(HEVC、High Efficiency Video Coding)では、プロファイルごとに使える色差の形式とビット深度が次のように制限されています2。

プロファイル 色差の形式 ビット深度
Main 4:2:0 のみ 8 bit のみ
Main 10 4:2:0 のみ 8〜10 bit

つまりこの章で扱った「4:2:0」と「8 bit / 10 bit」は、そのまま H.265 でどのプロファイルを選ぶかを決める条件になります。

プロファイルと組で出てくるのが、解像度やビットレートの上限を決める区分であるレベル(level)と、レベルの中でビットレート上限をさらに分ける区分であるティア(tier)です。Apple 端末で再生する HLS では、H.265 は Main 10 プロファイル、レベル 5.1、High ティア以下でなければなりません1。互換性を優先する場合はさらに絞って Main 10 プロファイル、レベル 4.0、Main ティア以下が推奨されます1(2026 年 9 月時点)。

プロファイルとレベルという概念そのものは → 4 章『H.264 の復習:マクロブロック・NAL ユニット・パラメータセット』で、H.265 固有の Main 10 とティアは → 5 章『H.265 で何が変わったか』で扱います。

非圧縮サイズを計算する

式

非圧縮サイズは、ここまでに定義した量を掛け合わせるだけで求まります。「1 フレームの画素数」に「1 画素あたりのサンプル数」を掛けると 1 フレームのサンプル数、それに「1 サンプルあたりのビット数」を掛けると 1 フレームのビット数、さらに「1 秒あたりのフレーム数」を掛けるとビットレート RR(bit/s)になります。

R=W×H×b×(1 画素あたりのサンプル数)×fps\displaystyle R = W \times H \times b \times (\text{1 画素あたりのサンプル数}) \times f_{ps}

以下では 1 MB = 10610^{6} バイト、1 GB = 10910^{9} バイト、1 TB = 101210^{12} バイトとします。

1080p / 30 fps / 8 bit / 4:2:0

R=1920×1080×8×1.5×30=746,496,000 bit/s\displaystyle R = 1920 \times 1080 \times 8 \times 1.5 \times 30 = 746{,}496{,}000 \ \text{bit/s}

=746.496= 746.496 Mbit/s です。バイトに直すと 8 で割って 93.312 MB/s になります。

時間 サイズ
1 フレーム 3.1104 MB
1 秒 93.312 MB
1 分 5.599 GB
1 時間 335.9 GB

1 時間の非圧縮動画で 336 GB です。

比較のために、同じ 1080p30 8 bit で色差の形式だけ変えると次のようになります。

形式 ビットレート 1 時間
4:4:4 1492.992 Mbit/s 671.8 GB
4:2:2 995.328 Mbit/s 447.9 GB
4:2:0 746.496 Mbit/s 335.9 GB

4K / 60 fps

3840×21603840 \times 2160、60 fps、8 bit、4:2:0 では次のようになります。

R=3840×2160×8×1.5×60=5,971,968,000 bit/s\displaystyle R = 3840 \times 2160 \times 8 \times 1.5 \times 60 = 5{,}971{,}968{,}000 \ \text{bit/s}

=5971.968= 5971.968 Mbit/s、約 5.97 Gbit/s です。

条件 ビットレート 1 秒 1 分 1 時間
4K30 8 bit 4:2:0 2985.984 Mbit/s 373.248 MB 22.395 GB 1.344 TB
4K60 8 bit 4:2:0 5971.968 Mbit/s 746.496 MB 44.790 GB 2.687 TB
4K60 10 bit 4:2:0 7464.960 Mbit/s 933.120 MB 55.987 GB 3.359 TB

10 bit にすると、ビットレートとサイズは単純に 10/8 = 1.25 倍になります。

実際の配信ビットレートと比べる

では HLS(HTTP Live Streaming)で配信される動画は実際どれくらいのビットレートなのでしょうか。HLS では同じ内容をビットレートや解像度の違うストリームとして何本も用意し、プレーヤーが回線状況に応じて切り替えます。この 1 本を変種(variant)と呼びます。変種ごとの平均ビットレートの例として、次の値が挙げられています(2026 年 9 月時点、文書の最終更新は 2025-06-26)1。

解像度 H.264 H.265
1920 × 1080 6000 kbit/s、7800 kbit/s 4500 kbit/s、5800 kbit/s
3840 × 2160 (表になし) 11600 kbit/s、16800 kbit/s

この H.265 の表は 30 fps 基準です1。したがって比較相手も 30 fps に揃えます。4K30 8 bit 4:2:0 の非圧縮は 2985.984 Mbit/s です。

条件 配信ビットレート 非圧縮に対する比
1080p30、H.264 6.0 Mbit/s 約 124 分の 1
1080p30、H.264 7.8 Mbit/s 約 96 分の 1
1080p30、H.265 4.5 Mbit/s 約 166 分の 1
1080p30、H.265 5.8 Mbit/s 約 129 分の 1
4K30、H.265 11.6 Mbit/s 約 257 分の 1
4K30、H.265 16.8 Mbit/s 約 178 分の 1

100 分の 1 から 250 分の 1 という桁です。なおこの表は 30 fps が基準で、24 fps の H.265 ではビットレートを約 20% 下げるのが目安です1。60 fps なら表の値より多くのビットレートが要ることになります。しかも 4:2:0 にした時点ですでに 4:4:4 の半分になっているので、4:4:4 の生データから数えると 1080p の H.265 で約 332 分の 1 ということになります。

この章の方法で減らせたのは、色差を間引く分の 2 分の 1 だけでした。残りの 100 分の 1 以上の圧縮をどうやって実現するのかは、次章以降で扱います。

ここから先:JPEG との違い

JPEG は非可逆圧縮(lossy)です。データを量子化で粗い段数に落とし、元に戻らない形で情報を捨てることでサイズを縮めています。捨てた情報は復元できないので、保存し直すたびに劣化が積み上がります。一方 PNG は可逆圧縮(lossless)で、展開すれば元のデータが 1 ビットも違わず戻ります。→ 2 章『圧縮の数学:DCT・量子化・エントロピー符号化』では、JPEG が具体的にどの数値を捨てているのかを、DCT・量子化・エントロピー符号化(entropy coding)の順で追いかけます。

そのうえで動画には JPEG に無い軸があります。時間方向です。

  • JPEG: 1 枚の画像の中の冗長さ(隣の画素は似ている)を減らす
  • 動画: それに加えて、フレーム間の冗長さ(前のフレームと似ている)を減らす

30 fps の動画では、1 秒間に 30 枚のフレームが並びます。カメラが止まっていれば隣り合うフレームはほとんど同じ絵です。100 分の 1 以上という圧縮率の大部分は、隣り合うフレームが「ほとんど同じ」であることを利用して得られます。時間方向の話は → 3 章『フレーム間予測と GOP』で扱います。

flowchart TB
  A["非圧縮 746 Mbit/s"] --> B["色差サブサンプリング<br/>(この章)"]
  B --> C["空間方向の冗長さを削る<br/>DCT・量子化・エントロピー符号化<br/>(2 章)"]
  C --> D["時間方向の冗長さを削る<br/>フレーム間予測<br/>(3 章)"]
  D --> E["配信 4.5 Mbit/s"]

まとめ

  • 動画は W×HW \times H の格子に並んだサンプル値を fpsf_{ps} 枚/秒で積み上げたものです。1 サンプルは bb ビットの整数です
  • RGB は輝度(Y)と色差(Cb、Cr)に変換されます。1080p では BT.709 の係数を使います。rgb(255, 0, 0) は 8 bit で (Y, Cb, Cr) = (63, 102, 240) になります
  • 4:2:0 の 3 つの数字は「幅 4 画素 × 高さ 2 画素の窓で、上の行に色差 2 個、下の行に 0 個」を意味します。3 番目の 0 は「Cr が無い」ではなく「縦も半分に間引いている」という意味です。データ量は 4:4:4 の 50% です3
  • 色差を間引ける根拠は「桿体が多いから」ではありません。桿体は暗所視の細胞です12。根拠は、色の細かさに対するコントラスト感度の限界(11〜12 cycles/deg13)が輝度側(50〜60 cycles/deg14)よりずっと低いことです
  • 1080p30 8 bit 4:2:0 の非圧縮は 746.496 Mbit/s、1 時間で 335.9 GB です。配信の目安の一例では 1080p の H.265 は 4500 kbit/s なので1、約 166 分の 1 に圧縮していることになります
  • 10 bit は 8 bit の約 4 倍の階調を持ち、バンディングに強くなります。H.265 の Main 10 プロファイルは 4:2:0 の 8〜10 bit を許します2

1080p30 8 bit 4:2:0 の非圧縮は 746.496 Mbit/s もあって、配信ではそれを約 166 分の 1 まで小さくしている計算になります。4:2:0 で色差を間引いても、データ量は 4:4:4 の 50% までしか減りません。残りの差をエンコーダがどうやって縮めているのかを、次の → 2 章『圧縮の数学:DCT・量子化・エントロピー符号化』から見ていきます。

この章で出てきた用語と規格

用語 意味 詳しく扱う章
画素 画像を格子状に区切った 1 マス。規格では「サンプル」という語を使う 本章
サンプル 1 つの成分(輝度 Y、色差 Cb、Cr のいずれか)の 1 つの数値 本章
フレーム 動画を構成する 1 枚の静止画。規格では「ピクチャ」 本章・3 章
解像度 フレームの幅 × 高さ。W×HW \times H 本章
フレームレート 1 秒あたりのフレーム数。fpsf_{ps} 本章
輝度(Y) 明るさを表す成分 本章
色差(Cb、Cr) 色を表す成分。輝度との差として定義される 本章
色差サブサンプリング 色差の解像度を輝度より下げてサンプル数を減らすこと 本章
4:2:0 色差サブサンプリングの形式の 1 つ。色差の幅・高さをともに半分にする 本章
ガンマ補正 光量と符号値を非線形に対応させる変換。BT.709 の変換式はガンマ補正後の信号に対して定義される 本章
量子化 連続的な値を決まった段数の整数に落とすこと 本章・2 章
ビット深度 1 サンプルを何ビットで表すか。bb 本章・5 章
限定レンジ / フルレンジ 黒と白に余白を残す割り当てと、全域を使う割り当て 本章
バンディング グラデーションが階段状の縞に見える現象 本章
桿体 / 錐体 網膜の 2 種類の視細胞。桿体は暗所視、錐体は明所視と色を担う 本章
コントラスト感度 ある細かさの縞模様を見分けられる最小コントラストの逆数 本章
参照ブロック J:a:b 表記を読むときに基準にする幅 4 画素 × 高さ 2 画素の窓 本章
アップサンプリング 間引いた色差を表示時に輝度と同じ数まで引き伸ばすこと 本章
ビットレート 1 秒あたりのデータ量。RR、単位は bit/s 本章・8 章
プロファイル そのビットストリームで使ってよいツールの集合 4 章・5 章
Main 10 H.265 のプロファイルの 1 つ。4:2:0 の 8〜10 bit を許す 5 章
レベル 解像度・ビットレートの上限を決める区分 4 章
ティア H.265 でレベル内のビットレート上限を分ける区分 5 章
変種(variant) HLS で同じ内容をビットレート・解像度違いで用意したストリーム 1 本 6 章
非可逆圧縮 / 可逆圧縮 捨てた情報が戻らない圧縮と、完全に戻る圧縮 2 章
規格 何の規格か
BT.601 SD(標準解像度)のスタジオ符号化パラメータ。輝度の係数 0.299 / 0.587 / 0.114、輝度 13.5 MHz・色差 6.75 MHz のサンプリング
BT.709 HDTV(1080p)のパラメータ。輝度の係数 0.2126 / 0.7152 / 0.0722、8 bit で黒 16・白 235 の量子化
BT.2020 UHDTV(4K / 8K)のパラメータ。輝度の係数 0.2627 / 0.6780 / 0.0593、ビット深度 10 bit または 12 bit
BT.2246 UHDTV の現状をまとめた報告。ビット深度をどう決めるかの考え方
H.265(HEVC) この連載の主役の動画コーデック。4:2:0 などの色差形式、プロファイルの定義
H.264(AVC) H.265 の 1 世代前の動画コーデック
H.273 色空間・変換行列・レンジをコーデックに依らず識別するためのコードポイント集
HLS HTTP 上で動画を配信するプロトコル。変種ごとのビットレートの目安

出典

脚注

  1. Apple, "HTTP Live Streaming (HLS) authoring specification for Apple devices". 項目 1.4("For H.264, you SHOULD use High Profile in preference to Main or Baseline Profile.")、項目 1.6a("For maximum compatibility, some HEVC variants SHOULD be less than or equal to Main 10 Profile, Level 4.0, Main Tier.")、項目 1.6b("Profile, Level, and Tier for HEVC MUST be less than or equal to Main 10 Profile, Level 5.1, High Tier.")、項目 1.25(バリアントの平均ビットレート表。HEVC の表の列見出しは "HEVC/H.265 30 fps"、フレームレート欄は "Same as source"、表の後に "24 fps HEVC content should use bit rates reduced by about 20% from the values above.")。2026 年 9 月時点で確認、文書の最終更新は 2025-06-26。https://developer.apple.com/documentation/http-live-streaming/hls-authoring-specification-for-apple-devices ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8

  2. Recommendation ITU-T H.265 (V8) (08/2021), A.3.2 Main profile — chroma_format_idc = 1、bit_depth_luma_minus8 = 0、bit_depth_chroma_minus8 = 0。A.3.3 Main 10 and Main 10 Still Picture profiles — chroma_format_idc = 1、bit_depth_luma_minus8 / bit_depth_chroma_minus8 は 0〜2。https://www.itu.int/rec/T-REC-H.265 ↩ ↩2 ↩3

  3. Recommendation ITU-T H.265 (V8) (08/2021), "High efficiency video coding", 6.2 Source, decoded and output picture formats — 「The source and decoded pictures are each comprised of one or more sample arrays」「the two chroma arrays are referred to as Cb and Cr」、4:2:0 / 4:2:2 / 4:4:4 の各サンプリングの定義、Table 6-1(chroma_format_idc と SubWidthC / SubHeightC。4:2:0 は 2 / 2、4:2:2 は 2 / 1、4:4:4 は 1 / 1)、Figure 6-1(4:2:0 の色差サンプルは、横は 1 列おきの輝度サンプルと同じ位置、縦は上下 2 本の輝度行の中間に置かれる)。E.3.1 VUI semantics — chroma_sample_loc_type_top_field / chroma_sample_loc_type_bottom_field が 4:2:0 の色差サンプル位置を Figure E.1 のとおり指定し、省略時は 0 と推定される。Table E.6 は type 0 を輝度に対して横 0・縦 0.5、type 2 を横 0・縦 0 の位置とし、「In a typical FIR filter design, … HorizontalOffsetC and VerticalOffsetC would serve as the phase offsets for the horizontal and vertical filter operations, respectively, for separable downsampling from 4:4:4 chroma format」とする。また「When chroma_format_idc is equal to 1 (4:2:0 chroma format) and the decoded video content is intended for interpretation according to Rec. ITU-R BT.2020-2 or Rec. ITU-R BT.2100-2, chroma_loc_info_present_flag should be equal to 1, and chroma_sample_loc_type_top_field and chroma_sample_loc_type_bottom_field should both be equal to 2.」で、BT.2020 / BT.2100 の映像では type 2(左上の輝度と同じ位置)が推奨される。規定されているのはサンプル配列の大きさと規格上の位置であり、4:4:4 から 4:2:0 を作る前処理の計算方法は規定されていない。https://www.itu.int/rec/T-REC-H.265 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10

  4. Recommendation ITU-R BT.709-6 (06/2015), "Parameter values for the HDTV standards for production and international programme exchange". item 2.2(Samples per active line: 1 920)、item 3.2(輝度の導出)、item 3.3(色差の導出)、item 3.4(量子化。INT\mathrm{INT} 演算子の定義は脚注 (2))、item 4.6(量子化レベル: 8 bit で黒 16 / 白 235、10 bit で黒 64 / 白 940)、item 4.7(Quantization level assignment: 8 bit で Video data 1 through 254、Timing reference 0 and 255)。https://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.709-6-201506-I!!PDF-E.pdf ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9

  5. Recommendation ITU-R BT.2020-2 (10/2015), "Parameter values for ultra-high definition television systems for production and international programme exchange". Table 1(3 840 × 2 160)、Table 4 "Coding format: 10 or 12 bits per component"、輝度の係数 0.2627 / 0.6780 / 0.0593。https://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.2020-2-201510-I!!PDF-E.pdf ↩ ↩2 ↩3

  6. Recommendation ITU-R BT.601-7 (03/2011), "Studio encoding parameters of digital television for standard 4:3 and wide-screen 16:9 aspect ratios". §2.5.1(EY=0.299ER+0.587EG+0.114EBE_Y = 0.299 E_R + 0.587 E_G + 0.114 E_B)、Table 1 項目 4(サンプリング周波数: 輝度 13.5 MHz、各色差信号 6.75 MHz)、§2.5.4 末尾(「To obtain the 4:2:2 components Y, CR, CB, low-pass filtering and sub-sampling must be performed on the 4:4:4 CR, CB signals described above.」)、Appendix 2 to Annex 1 Figure 5(Digital filter template for sampling-rate conversion from 4:4:4 to 4:2:2 colour difference signals)。https://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.601-7-201103-I!!PDF-E.pdf ↩ ↩2 ↩3

  7. Helga Kolb, "Facts and Figures Concerning the Human Retina", Webvision (University of Utah). Osterberg (1935) による桿体 110,000,000〜125,000,000 個、錐体 6,400,000 個。感度のピーク波長は明所視 555 nm、暗所視 507 nm。明所視の輝度単位は L 錐体・M 錐体が吸収した光子の重み付き和に、暗所視の輝度単位は桿体が吸収した光子数に比例する、との記述あり。https://www.webvision.pitt.edu/book/part-xiii-facts-and-figures-concerning-the-human-retina/ ↩ ↩2 ↩3 ↩4 ↩5

  8. Recommendation ITU-T H.273 (V2) (07/2021), "Coding-independent code points for video signal type identification", 8.3 Matrix coefficients — VideoFullRangeFlag = 0 のとき式 23〜25 で 219EY′+16219 E'_Y + 16 / 224EPb′+128224 E'_{Pb} + 128 / 224EPr′+128224 E'_{Pr} + 128(8 bit 換算)、= 1 のとき式 29〜31 で全域を使う。「When not present or not specified, the value 0 for VideoFullRangeFlag would ordinarily be inferred as the default value for video imagery.」。式 32〜37 は KRK_R、KBK_B を原色の色度座標 (xR,yR)(x_R, y_R) 等と白色点 (xW,yW)(x_W, y_W) から計算する手順。https://www.itu.int/rec/T-REC-H.273 ↩ ↩2 ↩3

  9. Charles Poynton, "Frequently Asked Questions About Color". 「In digital video, Rec. 601 standardizes subsampling denoted 4:2:2, where CB and CR components are subsampled horizontally by a factor of two with respect to luma. JPEG and MPEG conventionally subsample by a factor of two in the vertical dimension as well, denoted 4:2:0.」。Q.27「If necessary, apply a color subsampling filter to obtain subsampled color difference components. To decode, invert the above procedure」(同項の図は符号化側に SUBSAMPLING FILTER、復号側に INTERPOLATION FILTER を置く)。Q.29「This coding places black at code 16 and white at code 235, reserving the extremes of the range for signal processing headroom and footroom.」。Q.30「studio video signals use the extremes of the coding range to handle signal overshoot and undershoot」。https://www.poynton.ca/pdf/ColourFAQ.pdf ↩ ↩2 ↩3 ↩4

  10. Helga Kolb, "Photoreceptors", Webvision (University of Utah). 「The rods are photoreceptors that contain the visual pigment – rhodopsin」「Rods are highly sensitive photoreceptors and are used for vision under dark-dim conditions at night.」。なお同ページは視物質そのものの吸収のピークとして S 錐体 420 nm 付近、M 錐体 530 nm 付近、L 錐体 560 nm 付近、桿体 500 nm 付近を挙げており、本文とグラフで使った値(442 / 543 / 570 / 507 nm)とは異なる。後者は角膜で測った感度(cone fundamentals)で、水晶体・黄斑色素による吸収や視物質の光学密度の違いを含み、さらにエネルギー単位(linear energy)で表しているため、視物質そのものの吸収とはずれる。https://www.webvision.pitt.edu/book/part-ii-anatomy-and-physiology-of-the-retina/photoreceptors/ 。cone fundamentals の導出で黄斑色素・視物質の光学密度・水晶体を扱っていることは CVRL の説明ページ(「it was assumed (i) that the macular pigment density changes from a peak of 0.095 to a peak of 0.35 and (ii) that the peak photopigment optical density changes from 0.38 to 0.50 (for L and M) or from 0.30 to 0.40 (for S). In making the calculations, the Stockman, Sharpe and Fach (1999) lens and macular pigment density spectra were used.」、配布データは Quantal と Energy の 2 系統)http://www.cvrl.org/database/text/cones/ss2_10.htm ↩ ↩2

  11. 錐体の分光感度は Stockman, A. & Sharpe, L. T. (2000). Spectral sensitivities of the middle- and long-wavelength sensitive cones derived from measurements in observers of known genotype. Vision Research, 40, 1711–1737 と、S 錐体について Stockman, A., Sharpe, L. T. & Fach, C. C. (1999). The spectral sensitivity of the human short-wavelength cones. Vision Research, 39, 2901–2927 による。グラフには Colour & Vision Research Laboratory (UCL) 配布の 2° cone fundamentals(linear energy、1 nm 刻み)http://www.cvrl.org/database/data/cones/linss2_10e_1.csv を用いた。桿体は CIE (1951) 暗所視標準比視感度 V′(λ)V'(\lambda) http://www.cvrl.org/database/data/lum/scvle_1.csv 。S 錐体は 615 nm より長い波長の測定値がない。 ↩ ↩2 ↩3

  12. N. Tikidji-Hamburyan et al., "Rods progressively escape saturation to drive visual responses in daylight conditions", Nature Communications, 2017. DOI: 10.1038/s41467-017-01816-6。引用したのは照度域の一般的な区分の定義文「Light intensities are called scotopic (only rods are active, starlight vision), mesopic (both rods and cones are active), or photopic (rods are saturated, and only cones are active, daylight vision).」のみ。同論文自体の主張は逆向きで、この飽和は絶対的ではなく桿体は明所視の照度でも中程度のコントラストに応答しうる、というもの。本文で使ったのは「明所視で輝度の知覚を主に担うのは錐体」という範囲までで、明所視の輝度が L 錐体・M 錐体の吸収光子の重み付き和に比例する点は 7 による。https://pmc.ncbi.nlm.nih.gov/articles/PMC5703729/ ↩ ↩2

  13. K. T. Mullen, "The contrast sensitivity of human colour vision to red-green and blue-yellow chromatic gratings", The Journal of Physiology, 359, pp. 381-400, 1985. DOI: 10.1113/jphysiol.1985.sp015591。「the limiting acuities based on red-green and blue-yellow colour discriminations are similar at 11 or 12 cycles/deg」「Above 0.5 cycles/deg, contrast sensitivity is greater to monochromatic than to chromatic gratings」。無料全文(PMCID: PMC1193381): https://pmc.ncbi.nlm.nih.gov/articles/PMC1193381/ ↩ ↩2 ↩3

  14. Michael Kalloniatis and Charles Luu, "Visual Acuity", Webvision (University of Utah). 「As mean light levels increase, the peak of the contrast sensitivity function is now close to 0.5% contrast and the high spatial frequency cut off is at about 50 to 60 cycles per degree」。https://www.webvision.pitt.edu/book/part-viii-gabac-receptors/visual-acuity/ ↩ ↩2

  15. Charles Poynton, "Chroma subsampling notation", technical note, 3 pp., 2008-01-24(同著 Digital Video and HDTV Algorithms and Interfaces, Morgan Kaufmann, 2003 の要約)。Figure 1(第 1 数字 "Luma horizontal sampling reference"、第 2 数字 "CB and CR horizontal factor (relative to first digit)"、第 3 数字 "Same as second digit; or zero, indicating CB and CR are subsampled 2:1 vertically")と同図注「The third digit originally specified the horizontal subsampling of CR. The notation developed without anticipating vertical subsampling; a third digit of zero now denotes 2:1 vertical subsampling of both CB and CR.」、p. 1「At the outset of digital video, subsampling notation was logical; unfortunately, technology outgrew the notation.」「Until recently, the initial digit was always 4, since all chroma ratios have been powers of two – 4, 2, or 1. However, 3:1:1 subsampling has been commercialized in an HDTV production system (Sony's HDCAM), so 3 may now appear as the leading digit.」、p. 2「The third digit has two possibilities. If the third digit is the same as the second digit, there is no vertical subsampling. If the third digit is zero, 2:1 vertical subsampling of both CB and CR is indicated.」。https://poynton.ca/PDFs/Chroma_subsampling_notation.pdf (2026-09-30 時点で 404。アーカイブ: https://web.archive.org/web/20251221082018/https://poynton.ca/PDFs/Chroma_subsampling_notation.pdf ) ↩ ↩2

  16. FFmpeg, "ffmpeg-scaler Documentation", sws_flags の bicublin — 「Select bicubic scaling algorithm for the luma component, bilinear for chroma components. (Deprecated)」輝度と色差に別のスケーリングフィルタを指定できることの例。2026 年 9 月時点では非推奨で、アルゴリズムは scaler / scaler_sub で指定する形に移行している(「This is also used to set the scaling algorithm, though this usage is deprecated in favor of setting 'scaler'.」)。https://ffmpeg.org/ffmpeg-scaler.html ↩

  17. Recommendation ITU-T H.265 (V8) (08/2021), D.3.31 Chroma resampling filter hint SEI message semantics — 「The chroma resampling filter hint SEI message signals one downsampling process and one upsampling process for the chroma components of decoded pictures.」ver_chroma_filter_idc(Table D.13)は縦のフィルタとして SEI で送る係数か SMPTE RP 2050-1 のフィルタ(係数は Table D.18)を、hor_chroma_filter_idc(Table D.14)は横のフィルタとして送る係数か ITU-T T.800 の 5/3 フィルタ(係数は Table D.19)を指す。規格にも、ダウンサンプリング・アップサンプリングのフィルタを強制ではなくヒントとして伝える手段が用意されていることの根拠。https://www.itu.int/rec/T-REC-H.265 ↩

  18. Report ITU-R BT.2246-8 (2023), "The present state of ultra-high definition television", 3.2.8 Bit depth — 階調再現の不連続(discontinuity in tone reproduction)、再現コントラストが最小知覚コントラストを下回るべきという基準、ΔL/L\Delta L / L は 1/50〜1/100(「It is believed that the ratio is between 1/50 and 1/100. However, it increases below and above certain luminances.」)。Figure 31 に最小知覚コントラストの実測とモデル、Figure 32 / 33 に 8 / 10 / 12 bit の符号化関数の再現コントラストの比較図。https://www.itu.int/dms_pub/itu-r/opb/rep/R-REP-BT.2246-8-2023-PDF-E.pdf ↩ ↩2 ↩3