A variety of different types of video frame encoders can be configured
with, e.g., a multimedia processing subsystem, as long as the video frame
encoder conforms to the interface protocol of the subsystem. A video
controller in the subsystem performs the higher-level functions of
coordinating the encoding of the video stream, thereby allowing the video
frame encoder to limit its processing to the lower, frame level. In
particular, the video controller provides information needed by the video
frame encoder to encode the current frame in the video sequence. In
addition to the raw image data, this information includes the type of
frame to be encoded (e.g., an I or P frame), the currently available
bandwidth for encoding the current frame, the time since the previous
encoded frame, the desired frame rate, and a quality measure that may be
used to trade off spatial and temporal qualities. The video frame encoder
either encodes the frame as requested or indicates to the video controller
that the frame should be skipped or otherwise not encoded as requested.
The video controller can then respond appropriately, e.g., by requesting
the video frame encoder to encode the next frame in the video sequence.