Video Scopes

Shotcut contains various video scopes to help with color adjustment and picture validation.

The video scopes represent the picture from the preview player. The preview player always displays as YUV 4:2:0. As a result, the representation in the scope does not necessarily represent the original source material. Nor does it necessarily represent what will be in the final export file.

Format Conversions
Shotcut manipulates images by applying various services (filters, transitions, playlist, timeline). Different services operate on different image formats. Shotcut will automatically convert the image format as needed as the image passes through the processing pipeline from one service to the next. Depending on the services that user has applied an image may go through multiple conversions before it reaches the preview player.

Internally, Shotcut supports two image formats:

Note that a full range YUV image will be converted to limited range upon decoding. If a limited range source image has values that are outside of the limited range, those out-of-bounds values will be passed to the preview window (and therefore the scopes) unless they go through a conversion. In order to satisfy the needs of various services (transition, filter, etc.) an image may be automatically converted between YUV and RGB. These automatic internal conversions will result in out-of-bounds values being rounded down to be within the limited range.

I do not think that is correct, and it is always converted to limited if it is detected or forced to full (except for a bug with full range sources with greater than 8-bit).
See producer_avformat.c:convert_image(). Only yuv20p in and out goes through as full, and that is really only for Movit as Shotcut and other services do not request yuv420p.

Or perhaps “conversion” is unclear. To the casual reader this means some effect such as filter, transition, track blending, or perhaps something expressed in Export.

Except that it uses OpenGL, which is strictly RGB when used for display, and there are shaders that convert YUV to RGB. YUV 4:2:0 is only an intermediate to accelerate the process of transferring the video data to the GPU memory as OpenGL textures.

  • Limited range YUV as defined by BT.709

It also supports BT.601 per the Video Mode.

Thanks. I think I fixed it. Have a look.

Good point. I tried to clarify this.

While technically true, that does not affect the video scopes. So I think it does not need to be mentioned here.

Added. Thanks.

1 Like