History

avfilter/vsrc_testsrc: add support for packed YUV formats in yuvtestsrc

James Almer committed 2 years ago

Commit f2853001 parent 667e22e1 file · +24 −2Browse files

Unified · Split

libavfilter/vsrc_testsrc.c+24−2
@@ -1152,9 +1152,28 @@ static void yuvtest_put_pixel(uint8_t *dstp[4], int dst_linesizep[4], · 1151 unmodified lines
11521152 int i, int j, unsigned y, unsigned u, unsigned v, enum AVPixelFormat fmt,
11531153 uint8_t ayuv_map[4])
11541154 {
1155+ const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt);
11551156 uint32_t n;
11561157
11571158 switch (fmt) {
1159+ case AV_PIX_FMT_VYU444:
1160+ n = (y << (ayuv_map[Y]*8)) + (u << (ayuv_map[U]*8)) + (v << (ayuv_map[V]*8));
1161+ AV_WL24(&dstp[0][i*3 + j*dst_linesizep[0]], n);
1162+ break;
1163+ case AV_PIX_FMT_V30XLE:
1164+ case AV_PIX_FMT_XV30LE:
1165+ n = (y << ((desc->comp[0].offset*8) + desc->comp[0].shift)) +
1166+ (u << ((desc->comp[1].offset*8) + desc->comp[1].shift)) +
1167+ (v << ((desc->comp[2].offset*8) + desc->comp[2].shift));
1168+ AV_WL32(&dstp[0][i*4 + j*dst_linesizep[0]], n);
1169+ break;
1170+ case AV_PIX_FMT_UYVA:
1171+ case AV_PIX_FMT_VUYA:
1172+ case AV_PIX_FMT_VUYX:
1173+ case AV_PIX_FMT_AYUV:
1174+ n = (y << (ayuv_map[Y]*8)) + (u << (ayuv_map[U]*8)) + (v << (ayuv_map[V]*8)) + (255U << (ayuv_map[A]*8));
1175+ AV_WL32(&dstp[0][i*4 + j*dst_linesizep[0]], n);
1176+ break;
11581177 case AV_PIX_FMT_YUV444P:
11591178 case AV_PIX_FMT_YUVJ444P:
11601179 dstp[0][i + j*dst_linesizep[0]] = y;
@@ -1177,7 +1196,7 @@ static void yuvtest_fill_picture(AVFilterContext *ctx, AVFrame *frame) · 16 unmodified lines
11771196 {
11781197 TestSourceContext *test = ctx->priv;
11791198 int i, j, w = frame->width, h = frame->height;
1180− const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format);
1199+ const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(ctx->outputs[0]->format);
11811200 const int factor = 1 << desc->comp[0].depth;
11821201 const int mid = 1 << (desc->comp[0].depth - 1);
11831202
@@ -1209,7 +1228,10 @@ static const enum AVPixelFormat yuvtest_pix_fmts[] = { · 25 unmodified lines
12091228 AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUVJ444P,
12101229 AV_PIX_FMT_YUV444P9, AV_PIX_FMT_YUV444P10,
12111230 AV_PIX_FMT_YUV444P12, AV_PIX_FMT_YUV444P14,
1212− AV_PIX_FMT_YUV444P16,
1231+ AV_PIX_FMT_YUV444P16, AV_PIX_FMT_VYU444,
1232+ AV_PIX_FMT_AYUV, AV_PIX_FMT_UYVA,
1233+ AV_PIX_FMT_VUYA, AV_PIX_FMT_VUYX,
1234+ AV_PIX_FMT_XV30LE, AV_PIX_FMT_V30XLE,
12131235 AV_PIX_FMT_NONE
12141236 };
12151237

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t