encodes a single uncompressed frame from
to a binary stream in buffer, according to initialization parameters and optionnaly previously encoded frames. Note that in the case of video sequences containing B frames, it is up to the caller to present frames in the encoder order. Since B frames require both previous and next reference frames, they must be presented after both previous and next reference frames have been coded. For example, a "IBBPBBP" coding sequence must be presented in "IPBBPBB" order. This presentation order is also the order in which the frames should be stored in a file or sent to a network.
is the context handle previously returned by
is a pointer to the input frame. Currently, only YV12 planar format, also called YUV 4:2:0, is supported. The YV12 planar format consists in three plane, one for the Y (luminance) and two for the Cr and Cb (chrominance) components, the chrominance planes being subsampled by 2x2. These three planes are mapped linearly in memory:
The process of converting RGB pictures to YUV12 will not be detailled here.
represents the shape in case of video with arbitrary shape.
It consists in a bitmap of
bytes, with 255 representing an opaque pixel and 0 representing a transparent pixel. Values between 0 and 255 are not supported yet.
For rectangular video, this parameter must be set to NULL.
returns a pointer to frame encoding statistics. These statistics include frame number, coding mode (I,P or B) for the frame, expected bits, actual bits used, spatial activity, and quantizer scale. The number of bytes written to the buffer is actual_bits/8.
MMX arithmetic performs bad at quality > 95%.
Encoding of B frames is not yet supported.
Only works when slices_per_frame has been set to 1 in
Usage of this function is deprecated. Use