mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 07:58:51 +00:00
shapewipe: Fix some issues that were exposed by the new unit test
This commit is contained in:
parent
7f1c2f3a28
commit
7709bf5f2a
1 changed files with 12 additions and 10 deletions
|
@ -592,7 +592,7 @@ gst_shape_wipe_blend_16 (GstShapeWipe * self, GstBuffer * inbuf,
|
||||||
|
|
||||||
for (i = 0; i < self->height; i++) {
|
for (i = 0; i < self->height; i++) {
|
||||||
for (j = 0; j < self->width; j++) {
|
for (j = 0; j < self->width; j++) {
|
||||||
gfloat in = *mask / 65535.0f;
|
gfloat in = *mask / 65536.0f;
|
||||||
|
|
||||||
if (in < low) {
|
if (in < low) {
|
||||||
output[0] = 0x00; /* A */
|
output[0] = 0x00; /* A */
|
||||||
|
@ -648,7 +648,7 @@ gst_shape_wipe_blend_8 (GstShapeWipe * self, GstBuffer * inbuf,
|
||||||
|
|
||||||
for (i = 0; i < self->height; i++) {
|
for (i = 0; i < self->height; i++) {
|
||||||
for (j = 0; j < self->width; j++) {
|
for (j = 0; j < self->width; j++) {
|
||||||
gfloat in = *mask / 255.0f;
|
gfloat in = *mask / 256.0f;
|
||||||
|
|
||||||
if (in < low) {
|
if (in < low) {
|
||||||
output[0] = 0x00; /* A */
|
output[0] = 0x00; /* A */
|
||||||
|
@ -699,26 +699,26 @@ gst_shape_wipe_video_sink_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
GST_TIME_ARGS (timestamp), self->mask_position);
|
GST_TIME_ARGS (timestamp), self->mask_position);
|
||||||
|
|
||||||
g_mutex_lock (self->mask_mutex);
|
g_mutex_lock (self->mask_mutex);
|
||||||
mask = self->mask;
|
if (!self->mask)
|
||||||
if (self->mask)
|
|
||||||
gst_buffer_ref (self->mask);
|
|
||||||
else
|
|
||||||
g_cond_wait (self->mask_cond, self->mask_mutex);
|
g_cond_wait (self->mask_cond, self->mask_mutex);
|
||||||
|
|
||||||
if (self->mask == NULL) {
|
if (self->mask == NULL) {
|
||||||
g_mutex_unlock (self->mask_mutex);
|
g_mutex_unlock (self->mask_mutex);
|
||||||
|
gst_buffer_unref (buffer);
|
||||||
return GST_FLOW_UNEXPECTED;
|
return GST_FLOW_UNEXPECTED;
|
||||||
|
} else {
|
||||||
|
mask = gst_buffer_ref (self->mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
mask = gst_buffer_ref (self->mask);
|
|
||||||
|
|
||||||
g_mutex_unlock (self->mask_mutex);
|
g_mutex_unlock (self->mask_mutex);
|
||||||
|
|
||||||
ret =
|
ret =
|
||||||
gst_pad_alloc_buffer_and_set_caps (self->srcpad, GST_BUFFER_OFFSET_NONE,
|
gst_pad_alloc_buffer_and_set_caps (self->srcpad, GST_BUFFER_OFFSET_NONE,
|
||||||
GST_BUFFER_SIZE (buffer), GST_PAD_CAPS (self->srcpad), &outbuf);
|
GST_BUFFER_SIZE (buffer), GST_PAD_CAPS (self->srcpad), &outbuf);
|
||||||
if (G_UNLIKELY (ret != GST_FLOW_OK))
|
if (G_UNLIKELY (ret != GST_FLOW_OK)) {
|
||||||
|
gst_buffer_unref (buffer);
|
||||||
|
gst_buffer_unref (mask);
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
if (self->mask_bpp == 16)
|
if (self->mask_bpp == 16)
|
||||||
ret = gst_shape_wipe_blend_16 (self, buffer, mask, outbuf);
|
ret = gst_shape_wipe_blend_16 (self, buffer, mask, outbuf);
|
||||||
|
@ -749,6 +749,8 @@ gst_shape_wipe_mask_sink_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
g_cond_signal (self->mask_cond);
|
g_cond_signal (self->mask_cond);
|
||||||
g_mutex_unlock (self->mask_mutex);
|
g_mutex_unlock (self->mask_mutex);
|
||||||
|
|
||||||
|
gst_buffer_unref (buffer);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue