On 19/07/2025 16.14, Jim DeLaHunt wrote: Some excellent suggestions.
Thanks, Jim. The latest draft follows.

Dear Dr. Poynton,

Thank you for providing valuable guidance to so many people for so many
years.

You may know that Wikipedia contains a rather tortured description of
chroma subsampling. I seek to simplify the description and to expand the
scope to include the notations that I call "conjectures", below.

I'm associated with the ffmpeg-user mailing list, and though I speak
solely for myself, I have the entirety of ffmpeg as an audience. I would
be delighted to receive the opinions of an authority. All comments are
welcome. I will not post any replies on ffmpeg-user or Wikipedia or
anywhere else without your expressed permission. Note however that I
have posted drafts of this message on ffmpeg-user for comments.

Q1. I show five conjectures: 4:4:2 and 4:4:1 and 4:2:1 and 4:1:0 and
4:0:0. In your judgment, do those conjectured notations exist? Are they
correct?

Q2. For 4:2:2 and 4:2:0 and 4:1:1, I see a difference between your
descriptions and Wikipedia's. As I see it, you show sampling that's a
half-pixel offset to the left. Do my diagrams correctly depict your
judgment?

Thank you. I hope you respond but I also hope you don't spend much time
on the response.

Warm Regards,
Mark Filipak.

References.
Poynton: https://www.poynton.ca/PDFs/Chroma_subsampling_notation.pdf
Wikipedia: https://en.wikipedia.org/wiki/Chroma_subsampling

KEY:
• : denotes a luma pixel.
© : denotes a chroma pixel.
©== : denotes a single Cb Cr pair that spans 2 pixels.
©====== : denotes a single Cb Cr pair that spans 4 pixels.
——[1]—— : denotes that there is no chroma subpicture there [1].

Shown next is the top-left corner of the sampled film.
+—————————
| • • • •    <== The sample loci in subpicture 0 (frame or field).
| • • • •    <== The sample loci in subpicture 1 (frame or field).
| The above is repeated across the pixel data's columns and rows.

Shown next is the loci of Y, Cb, and Cr separated as element 'planes'.
|    Y            Cb           Cr
| • • • •    | © © © ©    | © © © ©    4:4:4, Poynton, Wikipedia.
| • • • •    | © © © ©    | © © © ©

| • • • •    | © © © ©    | © © © ©    4:4:2, conjecture.
| • • • •    | ©== ©==    | ©== ©==

| • • • •    | © © © ©    | © © © ©    4:4:1, conjecture.
| • • • •    | ©======    | ©======

| • • • •    | © © © ©    | © © © ©    4:4:0, Wikipedia.
| • • • •    | ——[1]——    | ——[1]——

| • • • •    | ©== ©==    | ©== ©==    4:2:2, Wikipedia.
| • • • •    | ©== ©==    | ©== ©==

| • • • •    |©== ©==     |©== ©==     4:2:2 (BT.601), Poynton.
| • • • •    |©== ©==     |©== ©==     [2]

| • • • •    | ©== ©==    | ©== ©==    4:2:1, conjecture.
| • • • •    | ©======    | ©======

| • • • •    | ©== ©==    | ©== ©==    4:2:1 (JPEG variant, irregular),
| • • • •    | ——[1]——    | ©======    Wikipedia.

| • • • •    | ©== ©==    | ©== ©==    4:2:0 (MPEG1, H.261), Poynton,
| • • • •    | ——[1]——    | ——[1]——    Wikipedia.

| • • • •    |©== ©==     |©== ©==     4:2:0 (MPEG2 frames), Poynton.
| • • • •    | ——[1]——    | ——[1]——    [2]

| • • • •    | ©======    | ©======    4:1:1, Wikipedia.
| • • • •    | ©======    | ©======

| • • • •   ©======       |  ©======   4:1:1 (480i), Poynton.
| • • • •   ©======       |  ©======   [2]

| • • • •    | ©======    | ©======    4:1:0, conjecture.
| • • • •    | ——[1]——    | ——[1]——

| • • • •    | ——[1]——    | ——[1]——    4:0:0, (monochrome) conjecture.
| • • • •    | ——[1]——    | ——[1]——

| • • •      | ©====      | ©====      3:1:1 (Sony), Poynton,
| • • •      | ©====      | ©====      Wikipedia.

[1] The chroma subpicture is void. If both chroma subpictures 0 and 1
are void (e.g. 4:0:0), then there are no chroma subpictures and the
composited pixels carry luma only. Otherwise, the decoder copies chroma
subpicture 0 to chroma subpicture 1. Note that though it is possible,
the condition: chroma subpicture 0 void and chroma subpicture 1
populated, has not been seen in the wild.

[2] The chroma samples are shown left-shifted by one-half pixel,
presumably due to sampling one-half pixel to the left. Since they cannot
be moved, the pixels must be obtained by mixing (e.g. C.n = (C.n +
C.n+1)/2) in un-coded pictures. Note that the appearance of the left
edges of chroma spans are slightly blurred by simple mixing. Note also
that chroma spans are assumed to be truncated as needed at the left edge
of film edges (e.g. in 4:1:1) and that the mixing is most accurately
accomplished in frame pictures.

_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to