gf_format_t

Формат пикселей поверхности

Формат:

#include <gf/gf.h>
typedef enum {
GF_FORMAT_INVALID = 0,
GF_FORMAT_BYTE,
GF_FORMAT_PAL8,
GF_FORMAT_PACK_ARGB1555,
GF_FORMAT_PKLE_ARGB1555,
GF_FORMAT_PKBE_ARGB1555,
GF_FORMAT_PACK_RGB565,
GF_FORMAT_PKLE_RGB565,
GF_FORMAT_PKBE_RGB565,
GF_FORMAT_BGR888,
GF_FORMAT_BGRA8888,
GF_FORMAT_ARGB8888,
GF_FORMAT_ABGR8888,
GF_FORMAT_RGBA8888,
GF_FORMAT_PACK_YUV_UYVY,
GF_FORMAT_PKLE_YUV_UYVY,
GF_FORMAT_PKBE_YUV_UYVY,
GF_FORMAT_PACK_YUV_YUY2,
GF_FORMAT_PKLE_YUV_YUY2,
GF_FORMAT_PKBE_YUV_YUY2,
GF_FORMAT_PACK_YUV_YVYU,
GF_FORMAT_PKLE_YUV_YVYU,
GF_FORMAT_PKBE_YUV_YVYU,
GF_FORMAT_PACK_YUV_V422,
GF_FORMAT_PKLE_YUV_V422,
GF_FORMAT_PKBE_YUV_V422,
GF_FORMAT_PACK_YUV_NV12,
GF_FORMAT_PACK_YUV_AYUV,
GF_FORMAT_PLANAR_YUV_YVU9,
GF_FORMAT_PLANAR_YUV_YV12,
GF_FORMAT_PLANAR_YUV_420,
/* interlaced formats */
GF_FORMAT_PACK_YUV_UYVY_INTERLACED,
GF_FORMAT_PKLE_YUV_UYVY_INTERLACED,
GF_FORMAT_PKBE_YUV_UYVY_INTERLACED,
GF_FORMAT_PACK_YUV_YUY2_INTERLACED,
GF_FORMAT_PKLE_YUV_YUY2_INTERLACED,
GF_FORMAT_PKBE_YUV_YUY2_INTERLACED,
GF_FORMAT_PACK_YUV_YVYU_INTERLACED,
GF_FORMAT_PKLE_YUV_YVYU_INTERLACED,
GF_FORMAT_PKBE_YUV_YVYU_INTERLACED,
GF_FORMAT_PACK_YUV_V422_INTERLACED,
GF_FORMAT_PKLE_YUV_V422_INTERLACED,
GF_FORMAT_PKBE_YUV_V422_INTERLACED,
GF_FORMAT_PACK_YUV_NV12_INTERLACED,
GF_FORMAT_PACK_YUV_AYUV_INTERLACED,
GF_FORMAT_PLANAR_YUV_YVU9_INTERLACED,
GF_FORMAT_PLANAR_YUV_YV12_INTERLACED,
GF_FORMAT_PLANAR_YUV_420_INTERLACED,
} gf_format_t;

Описание:

Перечисление gf_format_t характеризует форматы отображаемой информации и соответствующие им форматы пикселей поверхности. Допустимы следующие значения:

GF_FORMAT_INVALID
Значение, используемое для обозначение ошибочных ситуаций.
GF_FORMAT_BYTE
Формат без явного значения, 8bpp (от англ. "bits per pixel" или бит на пиксель).
GF_FORMAT_PAL8
8bpp, индексированный палитровый формат с 256 цветами.
GF_FORMAT_*_ARGB1555
16bpp упакованные ARGB форматы: биты 0-4 определяют синий цвет, 5-9 — зеленый, 10-14 — красный, старшие биты — альфа канал.
GF_FORMAT_*_RGB565
16bpp упакованные RGB форматы: биты 0-4 определяют синий цвет, 5-10 — зеленый, 11-15 — красный.
GF_FORMAT_BGR888
24bpp BGR формат с 8 битами на канал цвета.
GF_FORMAT_BGRA8888
32bpp BGRA формат с 8 битами на канал цвета.
GF_FORMAT_*_YUV_UYVY
16-битовый упакованные YUV форматы (FourCC код UYVY).
GF_FORMAT_*_YUV_YUY2
16-битовый упакованные YUV форматы (FourCC код YUY2).
GF_FORMAT_*_YUV_YVYU
16-битовый упакованные YUV форматы (FourCC код YVYU).
GF_FORMAT_*_YUV_V422
16-битовый упакованные YUV форматы (FourCC код V422).
GF_FORMAT_PLANAR_YUV_YVU9
Планарный YUV формат (FourCC код YVU9).
GF_FORMAT_PLANAR_YUV_YV12
Планарный YUV формат (FourCC код YV12).
GF_FORMAT_PLANAR_YUV_420
Планарный YUV формат.
GF_FORMAT_*_INTERLACED
Группа YUV форматов на основе предшествующих, подразумевающих интерлейсинг.

Отдельные форматы со временем утрачивают актуальность. Так, Photon не поддерживает палитровый формат GF_FORMAT_PAL8.

Порядок следования байтов

Для всех упакованных форматов имеется четыре разновидности:

Там, где это возможно, рекомендуется использовать PACK и позволить драйверу выделять поверхности тем способом, который близок к потребностям оборудования. Это повысит потенциальную портируемость приложения. Данную логику принятия решений в общем случае реализуют функции gf_surface_create() и gf_surface_create_layer().

При использовании функции gf_surface_attach() следует указывать конкретный порядок байт, используя PKLE, PKBE или PKHE.

Классификация:

Графическая подсистема ЗОСРВ «Нейтрино», Graphics Framework

Тематические ссылки:

gf_surface_create(), gf_surface_create_layer(), gf_surface_attach()




Предыдущий раздел: GF API