Core Video provides both a buffering model and a playback synchronization solution within its processing pipeline. A video source provides a decompressed data stream to be rendered as images within a visual context in Quartz 2D. Core Video can be thought of as the link between this video source and its display context. Rendered images can be further processed by Core Image before being composed into a final scene with Quartz Compositor. As part of the composition process, Core Video maintains a "frame buffer", keeping a pool of rendered, composed frames ready for playback. To ensure smooth playback, Core Video uses a high-priority thread to maintain its frame buffer. This "display link" runs independently from the application which invokes video playback, and it compensates for different display refresh rates and latency.