mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-28 04:31:06 +00:00
videotestsrc: flush pending lines on odd height
This commit is contained in:
parent
e97f6401de
commit
ede804041c
1 changed files with 16 additions and 3 deletions
|
@ -255,6 +255,9 @@ videotestsrc_convert_tmpline (paintinfo * p, GstVideoFrame * frame, int j)
|
||||||
int x = p->x_offset;
|
int x = p->x_offset;
|
||||||
int i;
|
int i;
|
||||||
int width = frame->info.width;
|
int width = frame->info.width;
|
||||||
|
int height = frame->info.height;
|
||||||
|
int n_lines = p->n_lines;
|
||||||
|
int offset = p->offset;
|
||||||
|
|
||||||
if (x != 0) {
|
if (x != 0) {
|
||||||
memcpy (p->tmpline2, p->tmpline, width * 4);
|
memcpy (p->tmpline2, p->tmpline, width * 4);
|
||||||
|
@ -270,6 +273,13 @@ videotestsrc_convert_tmpline (paintinfo * p, GstVideoFrame * frame, int j)
|
||||||
}
|
}
|
||||||
|
|
||||||
p->convert_tmpline (p, frame, j);
|
p->convert_tmpline (p, frame, j);
|
||||||
|
|
||||||
|
if (j == height - 1) {
|
||||||
|
while (j % n_lines - offset != n_lines - 1) {
|
||||||
|
j++;
|
||||||
|
p->convert_tmpline (p, frame, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BLEND1(a,b,x) ((a)*(x) + (b)*(255-(x)))
|
#define BLEND1(a,b,x) ((a)*(x) + (b)*(255-(x)))
|
||||||
|
@ -1175,7 +1185,7 @@ convert_hline_generic (paintinfo * p, GstVideoFrame * frame, int y)
|
||||||
y -= n_lines - 1;
|
y -= n_lines - 1;
|
||||||
|
|
||||||
for (i = 0; i < n_lines; i++) {
|
for (i = 0; i < n_lines; i++) {
|
||||||
idx = CLAMP (y + i + offset, 0, height);
|
idx = CLAMP (y + i + offset, 0, height - 1);
|
||||||
|
|
||||||
GST_DEBUG ("line %d, %d, idx %d", i, y + i + offset, idx);
|
GST_DEBUG ("line %d, %d, idx %d", i, y + i + offset, idx);
|
||||||
lines[i] = p->lines[idx % n_lines];
|
lines[i] = p->lines[idx % n_lines];
|
||||||
|
@ -1185,10 +1195,13 @@ convert_hline_generic (paintinfo * p, GstVideoFrame * frame, int y)
|
||||||
gst_video_chroma_resample (p->subsample, lines, width);
|
gst_video_chroma_resample (p->subsample, lines, width);
|
||||||
|
|
||||||
for (i = 0; i < n_lines; i++) {
|
for (i = 0; i < n_lines; i++) {
|
||||||
GST_DEBUG ("pack line %d", y + i + offset);
|
idx = y + i + offset;
|
||||||
|
if (idx > height - 1)
|
||||||
|
break;
|
||||||
|
GST_DEBUG ("pack line %d", idx);
|
||||||
finfo->pack_func (finfo, GST_VIDEO_PACK_FLAG_NONE,
|
finfo->pack_func (finfo, GST_VIDEO_PACK_FLAG_NONE,
|
||||||
lines[i], 0, frame->data, frame->info.stride,
|
lines[i], 0, frame->data, frame->info.stride,
|
||||||
frame->info.chroma_site, y + i + offset, width);
|
frame->info.chroma_site, idx, width);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue