After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 755542 - gtk: Fix a race where we end up setting wrong VideoInfo
gtk: Fix a race where we end up setting wrong VideoInfo
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
unspecified
Other All
: Normal normal
: 1.6.0
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-09-24 13:57 UTC by Thibault Saunier
Modified: 2015-09-24 14:56 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
gtk: Do not forget to release OBJECT_LOCK on error path (1.52 KB, patch)
2015-09-24 13:57 UTC, Thibault Saunier
committed Details | Review
gtk: When setting format also check pending format changed (1.12 KB, patch)
2015-09-24 13:57 UTC, Thibault Saunier
reviewed Details | Review
gtk: When setting format check if pending format changed (1.06 KB, patch)
2015-09-24 14:51 UTC, Thibault Saunier
committed Details | Review

Description Thibault Saunier 2015-09-24 13:57:16 UTC
When seeking in a transition in GES we could end up getting:

>   ** (pitivi:1455): CRITICAL **: gst_video_frame_map_id: assertion 'info->finfo->format == meta->format' failed

because the pending format was not taken into account when checking if the format had changed or not (the pending
format not having been taken into account yet).
Comment 1 Thibault Saunier 2015-09-24 13:57:20 UTC
Created attachment 312056 [details] [review]
gtk: Do not forget to release OBJECT_LOCK on error path
Comment 2 Thibault Saunier 2015-09-24 13:57:28 UTC
Created attachment 312057 [details] [review]
gtk: When setting format also check pending format  changed

In case the format changed fast and the pending format is different
than the currently set but the currently set is equal to the pending
one we could end up having mismatch between the finally set format
and the data stream format.
Comment 3 Matthew Waters (ystreet00) 2015-09-24 14:03:11 UTC
Review of attachment 312057 [details] [review]:

One question.

::: ext/gtk/gtkgstbasewidget.c
@@ +456,3 @@
 
+  if (gst_video_info_is_equal (&widget->v_info, v_info) &&
+      gst_video_info_is_equal (&widget->pending_v_info, v_info)) {

Shouldn't his only check pending_v_info?

The pending_v_info is used to cache changes before drawing>
Comment 4 Thibault Saunier 2015-09-24 14:07:31 UTC
Review of attachment 312057 [details] [review]:

::: ext/gtk/gtkgstbasewidget.c
@@ +456,3 @@
 
+  if (gst_video_info_is_equal (&widget->v_info, v_info) &&
+      gst_video_info_is_equal (&widget->pending_v_info, v_info)) {

Hrm, indeed pending == v_info if it has been set already.
Comment 5 Thibault Saunier 2015-09-24 14:51:12 UTC
Created attachment 312065 [details] [review]
gtk: When setting format check if pending format changed

In case the format changed fast and the pending format is different
than the currently set but the currently set is equal to the pending
one we could end up having mismatch between the finally set format
and the data stream format.
Comment 6 Thibault Saunier 2015-09-24 14:55:50 UTC
Attachment 312056 [details] pushed as bdcb820 - gtk: Do not forget to release OBJECT_LOCK on error path
Attachment 312065 [details] pushed as 4807201 - gtk: When setting format check if pending format changed