diff --git a/gst/videomixer/videomixer2.c b/gst/videomixer/videomixer2.c index 95c8f216e6..f3d0f80c6d 100644 --- a/gst/videomixer/videomixer2.c +++ b/gst/videomixer/videomixer2.c @@ -836,10 +836,17 @@ gst_videomixer2_blend_buffers (GstVideoMixer2 * mix, mix->fill_color (&outframe, 240, 128, 128); break; case VIDEO_MIXER2_BACKGROUND_TRANSPARENT: - gst_buffer_memset (*outbuf, 0, 0, outsize); + { + guint i, num_maps; + + num_maps = (outframe.meta) ? GST_VIDEO_FRAME_N_PLANES (&outframe) : 1; + for (i = 0; i < num_maps; ++i) + memset (outframe.map[i].data, 0, outframe.map[i].size); + /* use overlay to keep background transparent */ composite = mix->overlay; break; + } } for (l = mix->sinkpads; l; l = l->next) { diff --git a/tests/check/pipelines/simple-launch-lines.c b/tests/check/pipelines/simple-launch-lines.c index 326d357d8d..4dedbe3d88 100644 --- a/tests/check/pipelines/simple-launch-lines.c +++ b/tests/check/pipelines/simple-launch-lines.c @@ -220,7 +220,8 @@ GST_START_TEST (test_rtp_payloaders) /*s = FAKESRC " ! ! rtpsv3vdepay ! " FAKESINK; */ } -GST_END_TEST +GST_END_TEST; + GST_START_TEST (test_video_encoders_decoders) { const gchar *s; @@ -253,7 +254,26 @@ GST_START_TEST (test_video_encoders_decoders) } } -GST_END_TEST +GST_END_TEST; + +#define VIDEOMIXER_PIPELINE \ + "videomixer name=mix background=transparent ! fakesink " \ + "videotestsrc num-buffers=50 ! " \ + " video/x-raw,format=RGBA, width=200,height=200,framerate=10/1 ! " \ + " videoconvert ! mix.sink_1 " \ + "videotestsrc num-buffers=50 pattern=smpte ! " \ + " video/x-raw,format=RGBA, width=720,height=480,framerate=10/1 ! " \ + " videoconvert ! mix.sink_0 " + +GST_START_TEST (test_videomixer) +{ + run_pipeline (setup_pipeline (VIDEOMIXER_PIPELINE), VIDEOMIXER_PIPELINE, + GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING), + GST_MESSAGE_UNKNOWN, GST_STATE_PLAYING); +} + +GST_END_TEST; + #endif /* #ifndef GST_DISABLE_PARSE */ static Suite * simple_launch_lines_suite (void) @@ -268,6 +288,8 @@ simple_launch_lines_suite (void) #ifndef GST_DISABLE_PARSE tcase_add_test (tc_chain, test_rtp_payloaders); tcase_add_test (tc_chain, test_video_encoders_decoders); + /* FIXME: very rarely fails, maybe because of negotiation issues? */ + tcase_skip_broken_test (tc_chain, test_videomixer); #endif return s; }