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 609689 - compositions containing gnloperation videomixer/adder freeze when input is another gnloperation
compositions containing gnloperation videomixer/adder freeze when input is an...
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gnonlin
0.10.13
Other Linux
: Normal normal
: 0.10.15
Assigned To: GStreamer Maintainers
Edward Hervey
Depends on:
Blocks:
 
 
Reported: 2010-02-11 21:27 UTC by Brandon Lewis
Modified: 2010-02-14 12:12 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
works.py -- working gnl composition with stacked gnloperatoins (2.16 KB, text/x-python)
2010-02-11 21:33 UTC, Brandon Lewis
  Details
Another test case (2.16 KB, text/x-python)
2010-02-11 21:35 UTC, Brandon Lewis
  Details
Script which demonstrates the bug (2.16 KB, text/x-python)
2010-02-11 21:36 UTC, Brandon Lewis
  Details
Script which demonstrates bug with adder (2.11 KB, text/x-python)
2010-02-11 21:37 UTC, Brandon Lewis
  Details
Script which demonstrates that audio compositions otherwise work (2.11 KB, text/x-python)
2010-02-11 21:38 UTC, Brandon Lewis
  Details
Debug log (872.16 KB, application/x-compressed-tar)
2010-02-11 21:41 UTC, Brandon Lewis
  Details
gnlcomposition: Don't forget to carry over the modifyed stack (722 bytes, patch)
2010-02-12 17:19 UTC, Edward Hervey
committed Details | Review

Description Brandon Lewis 2010-02-11 21:27:49 UTC
I think I have found a bug in GNonlin which manifests itself when you have a composition arranged like this:

[gnloperation: videomixer]
[gnloperation: anything]
[gnlsource]
...

Judging from the output of the debug log, the composition seems to go into an infinte loop when it tries to connect the under-operation to the videomixer (see attached: doesnt_work.py). Indeed, the last 60% of a 28-meg debug log is just the following repeating lines:

0:00:13.042037909  7078  0x8bc09a8 LOG           gnlcomposition gnlcomposition.c:1241:convert_list_to_tree:<gnloperation1> operation, num_sinks:1
0:00:13.042113268  7078  0x8bc09a8 DEBUG         gnlcomposition gnlcomposition.c:1213:convert_list_to_tree: object:gnlsource0 , *start:0:00:02.500000000, *stop:0:00:05.000000000 highprio:3
0:00:13.042188906  7078  0x8bc09a8 DEBUG         gnlcomposition gnlcomposition.c:1258:convert_list_to_tree:<gnlsource0> *start:0:00:02.500000000 *stop:0:00:05.000000000 priority:3
0:00:13.042271947  7078  0x8bc09a8 DEBUG         gnlcomposition gnlcomposition.c:1258:convert_list_to_tree:<gnloperation1> *start:0:00:02.500000000 *stop:0:00:05.000000000 priority:3
0:00:13.042349611  7078  0x8bc09a8 DEBUG         gnlcomposition gnlcomposition.c:1258:convert_list_to_tree:<gnloperation2> *start:0:00:02.500000000 *stop:0:00:05.000000000 priority:3
0:00:13.042771312  7078  0x8bc09a8 DEBUG         gnlcomposition gnlcomposition.c:1213:convert_list_to_tree: object:gnloperation2 , *start:0:00:02.500000000, *stop:0:00:05.000000000 highprio:3
0:00:13.042916792  7078  0x8bc09a8 LOG           gnlcomposition gnlcomposition.c:1241:convert_list_to_tree:<gnloperation2> operation, num_sinks:1
0:00:13.042998366  7078  0x8bc09a8 DEBUG         gnlcomposition gnlcomposition.c:1213:convert_list_to_tree: object:gnloperation1 , *start:0:00:02.500000000, *stop:0:00:05.000000000 highprio:3
0:00:13.043073795  7078  0x8bc09a8 LOG           gnlcomposition gnlcomposition.c:1241:convert_list_to_tree:<gnloperation1> operation, num_sinks:1
0:00:13.043146849  7078  0x8bc09a8 DEBUG         gnlcomposition gnlcomposition.c:1213:convert_list_to_tree: object:gnlsource0 , *start:0:00:02.500000000, *stop:0:00:05.000000000 highprio:3

My guess is that this has something to do with the fact that videomixer accepts an arbitrary number of inputs, because you can stack as many single-input operations together as you like (see attached: works.py). You can also stack as many single-input operations as you wish on top of a videomixer (see attached: also-works.py).

You might be wondering at this point if this is also the case with adder, and the answer is yes (see attached: audio_works.py and audio_doesnt_work.py)
Comment 1 Brandon Lewis 2010-02-11 21:33:56 UTC
Created attachment 153579 [details]
works.py -- working gnl composition with stacked gnloperatoins
Comment 2 Brandon Lewis 2010-02-11 21:35:22 UTC
Created attachment 153580 [details]
Another test case
Comment 3 Brandon Lewis 2010-02-11 21:36:40 UTC
Created attachment 153581 [details]
Script which demonstrates the bug
Comment 4 Brandon Lewis 2010-02-11 21:37:17 UTC
Created attachment 153582 [details]
Script which demonstrates bug with adder
Comment 5 Brandon Lewis 2010-02-11 21:38:53 UTC
Created attachment 153583 [details]
Script which demonstrates that audio compositions otherwise work
Comment 6 Brandon Lewis 2010-02-11 21:41:07 UTC
Created attachment 153584 [details]
Debug log
Comment 7 Edward Hervey 2010-02-12 17:19:50 UTC
Created attachment 153639 [details] [review]
gnlcomposition: Don't forget to carry over the modifyed stack

This can happen when we have several operations stacked one over each
other.

Fixes #609689
Comment 8 Brandon Lewis 2010-02-12 19:00:12 UTC
Seems to work as you described. The video examples I supplied may not work with the changes, but I have succeeden in getting alpha and smptealpha to work with controllers inside gnloperations. \o/