#include <fame.h> void fame_start_frame(fame_context_t *context, fame_yuv_t *yuv, unsigned char *shape);
fame_start_frame() starts the encoding of an uncompressed frame from yuv to a binary stream in buffer, according to initialization parameters and optionnaly previously encoded frames. It should be called before starting processing slices with fame_encode_slice
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_open(3), fame_init(3), fame_close(3), fame_encode_slice(3), fame_end_frame(3)