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
1152 int i, int j, unsigned y, unsigned u, unsigned v, enum AVPixelFormat fmt,1152 int i, int j, unsigned y, unsigned u, unsigned v, enum AVPixelFormat fmt,
1153 uint8_t ayuv_map[4])1153 uint8_t ayuv_map[4])
1154{1154{
1155 const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt);
1155 uint32_t n;1156 uint32_t n;
1156 1157
1157 switch (fmt) {1158 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;
1158 case AV_PIX_FMT_YUV444P:1177 case AV_PIX_FMT_YUV444P:
1159 case AV_PIX_FMT_YUVJ444P:1178 case AV_PIX_FMT_YUVJ444P:
1160 dstp[0][i + j*dst_linesizep[0]] = y;1179 dstp[0][i + j*dst_linesizep[0]] = y;
@@ -1177,7 +1196,7 @@ static void yuvtest_fill_picture(AVFilterContext *ctx, AVFrame *frame) · 16 unmodified lines
1177{1196{
1178 TestSourceContext *test = ctx->priv;1197 TestSourceContext *test = ctx->priv;
1179 int i, j, w = frame->width, h = frame->height;1198 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);
1181 const int factor = 1 << desc->comp[0].depth;1200 const int factor = 1 << desc->comp[0].depth;
1182 const int mid = 1 << (desc->comp[0].depth - 1);1201 const int mid = 1 << (desc->comp[0].depth - 1);
1183 1202
@@ -1209,7 +1228,10 @@ static const enum AVPixelFormat yuvtest_pix_fmts[] = { · 25 unmodified lines
1209 AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUVJ444P,1228 AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUVJ444P,
1210 AV_PIX_FMT_YUV444P9, AV_PIX_FMT_YUV444P10,1229 AV_PIX_FMT_YUV444P9, AV_PIX_FMT_YUV444P10,
1211 AV_PIX_FMT_YUV444P12, AV_PIX_FMT_YUV444P14,1230 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,
1213 AV_PIX_FMT_NONE1235 AV_PIX_FMT_NONE
1214};1236};
1215 1237

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