GNOME Bugzilla – Bug 609689
compositions containing gnloperation videomixer/adder freeze when input is another gnloperation
Last modified: 2010-02-14 12:12:48 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)
Created attachment 153579 [details] works.py -- working gnl composition with stacked gnloperatoins
Created attachment 153580 [details] Another test case
Created attachment 153581 [details] Script which demonstrates the bug
Created attachment 153582 [details] Script which demonstrates bug with adder
Created attachment 153583 [details] Script which demonstrates that audio compositions otherwise work
Created attachment 153584 [details] Debug log
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
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/