OpenGL is a versatile language with a wide range of uses.  The language is designed to run on dedicated graphics hardware (GPU), so on many platforms using OpenGL requires only minimal CPU resources.  Streaming video displays usually require image scaling which is inherently handled by the OpenGL language.  They may also require pixel format conversions which can be done using OpenGL pixel shaders.

The video stream sent to OpenGL is composed of periodic, un-compressed video frames.  The frame source is usually a video camera, or a video decoder.  While the stream is running, every video frame must be loaded into an OpenGL texture.  There are many ways to accomplish this.  The ideal scenario is when the video source has direct access to the memory location where the OpenGL texture is stored so the image can be generated there with no need to copy it.  The image in the OpenGL texture can have any pixel format, including YUV formats.  The OpenGL shading language can be used to convert pixel formats during the rendering process.

Using OpenGL to Display Streaming Video block diagram

More Information