How SVT-AV1 Processes Interlaced Video
This article explains how the Scalable Video Technology for AV1
(SVT-AV1) encoder handles natively interlaced video sources. It covers
the AV1 standard’s architectural limitations regarding interlacing, why
libsvtav1 requires progressive input, and the best
practices for deinterlacing source material to achieve high-quality AV1
output.
The AV1 Standard’s Progressive-Only Design
Unlike older video codecs such as MPEG-2, H.264 (AVC), and H.265 (HEVC), the AV1 video coding format does not natively support interlaced video coding. The Alliance for Open Media (AOMedia) designed AV1 as a modern, progressive-scan-only codec to maximize compression efficiency and simplify decoder hardware.
Because the underlying AV1 specification has no syntax for interlaced
fields, coding tools like Picture-Adaptive Frame-Field (PAFF) or
Macroblock-Adaptive Frame-Field (MBAFF) are entirely absent.
Consequently, the libsvtav1 encoder cannot natively process
or output interlaced video streams.
How libsvtav1 Handles Raw Interlaced Input
If you pass a raw, natively interlaced video stream directly to
libsvtav1 without preprocessing, the encoder will treat the
interlaced fields as a single progressive frame.
This leads to several critical issues: * Severe Visual Artifacts: The alternating lines of the two fields will be encoded together, permanently baking “combing” or “feathering” artifacts into the compressed video. * Reduced Compression Efficiency: The sharp horizontal edges created by the combing artifacts represent high-frequency noise. SVT-AV1 will waste significant bitrate attempting to encode these artificial edges, reducing overall visual quality. * Playback Degradation: Because the output is flagged as progressive, video players will not attempt to deinterlace the file during playback, making the combing artifacts highly visible to the end-user.
The Required Workflow: Pre-Encoding Deinterlacing
To successfully encode interlaced content using
libsvtav1, the source video must be deinterlaced into a
progressive format before it is handed over to the encoder pipeline.
This is typically achieved using a media processing framework like
FFmpeg.
1. Choosing a Deinterlacing Filter
When setting up your encoding pipeline, you should use a high-quality deinterlacing filter. Common options in FFmpeg include: * YADIF (Yet Another Deinterlacing Filter): A fast and highly compatible CPU-based deinterlacer. * BWDIF (Bob Weaver Deinterlacing Filter): A motion-adaptive deinterlacer based on YADIF that generally delivers sharper results. * QTGMC: A high-quality, Avisynth/VapourSynth-based deinterlacer that utilizes motion compensation to produce the cleanest progressive frames, though it is computationally expensive.
2. Temporal Resolution (Frame Rate) Considerations
When deinterlacing for AV1, you must choose between two target frame rates: * Double-Rate (Bobbing): This converts each field into a full progressive frame (e.g., converting 60i/30fps interlaced to 60p progressive). This is highly recommended because it preserves the fluid motion of the original interlaced broadcast or camera capture. * Single-Rate: This discards half of the temporal information to keep the original frame rate (e.g., converting 60i to 30p). While this reduces the frame rate, it can result in judder or jerky motion in high-action scenes.
Example FFmpeg Implementation
To encode an interlaced source to AV1 using libsvtav1
with high-quality double-rate deinterlacing, you can use the following
FFmpeg command structure:
ffmpeg -i input_interlaced.mp4 -vf bwdif=mode=send_field -c:v libsvtav1 -crf 26 -preset 4 output_progressive.mkvIn this command, -vf bwdif=mode=send_field outputs one
frame per field (doubling the frame rate from 30fps to 60fps), ensuring
the motion remains smooth before the frames are processed by
libsvtav1.