LINUX.ORG.RU

Сообщения cdslow

 

[C] Выбор структуры данных для видеофильтров

Форум — Development

Пишу фреймворк для фильтрации видео. Не могу окончательно решить, какую структуру данных использовать для хранения обрабатываемых кадров.

Вариант 1:

typedef struct image_s
    {
    int w;
    int h;
    int sz_yy;
    int sz_buf;
    uint8_t *buf;
    uint8_t *yy;
    uint8_t *cb;
    uint8_t *cr;
    } image_t;

Вариант 2:

typedef struct pixel_s
    {
    uint8_t yy;
    uint8_t cb;
    uint8_t cr;
    } pixel_t;

typedef struct image_s
    {
    int w;
    int h;
    int px_count;
    int px_sz;
    pixel_t *px;
    } image_t;

Первый вариант удобнее импортировать/экспортировать из планарных форматов (yv12, yuv420p) и обрабатывать покомпонентными фильтрами.

Второй вариант удобнее обрабатывать попиксельными фильтрами, и использовать при этом код типа такого:

out->px[xy]=in->px[xy];
вместо такого:
out->yy[xy]=in->yy[xy];
out->cb[xy]=in->cb[xy];
out->cr[xy]=in->cr[xy];

Есть какие-нибудь аргументы, чтобы остановиться на одном из вариантов?

 

cdslow
()

RSS подписка на новые темы