aboutsummaryrefslogtreecommitdiff
path: root/gst/videotestsrc/videotestsrc.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/videotestsrc/videotestsrc.c')
-rw-r--r--gst/videotestsrc/videotestsrc.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/gst/videotestsrc/videotestsrc.c b/gst/videotestsrc/videotestsrc.c
index 2fec7e4..1235782 100644
--- a/gst/videotestsrc/videotestsrc.c
+++ b/gst/videotestsrc/videotestsrc.c
@@ -255,6 +255,9 @@ videotestsrc_convert_tmpline (paintinfo * p, GstVideoFrame * frame, int j)
int x = p->x_offset;
int i;
int width = frame->info.width;
+ int height = frame->info.height;
+ int n_lines = p->n_lines;
+ int offset = p->offset;
if (x != 0) {
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);
+
+ 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)))
@@ -1175,7 +1185,7 @@ convert_hline_generic (paintinfo * p, GstVideoFrame * frame, int y)
y -= n_lines - 1;
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);
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);
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,
lines[i], 0, frame->data, frame->info.stride,
- frame->info.chroma_site, y + i + offset, width);
+ frame->info.chroma_site, idx, width);
}
}
}