#include <fame.h> fame_frame_statistics_t *fame_encode_frame(fame_context_t *context, fame_yuv_t *yuv, unsigned char *shape);
fame_encode_frame() encodes a single uncompressed frame from yuv 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.
context is the context handle previously returned by fame_open
yuv 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:
width yuv -> +=========+ | | | Y | height | | +====+====+ | Cr | height / 2 +====+ | Cb | height / 2 +====+ width / 2
The process of converting RGB pictures to YUV12 will not be detailled here.
shape represents the shape in case of video with arbitrary shape. It consists in a bitmap of width x height 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.
fame_encode_frame 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 fame_init
Usage of this function is deprecated. Use fame_start_frame , fame_encode_slice , and fame_end_frame instead.
fame_open(3), fame_init(3), fame_close(3), fame_encode_slice(3)
fame_close(3), fame_init(3), fame_open(3).