GNOME Bugzilla – Bug 357959
buffer_alloc is not proxied through tee
Last modified: 2007-07-03 16:28:03 UTC
Please describe the problem: buffer_alloc is not proxied through tee, this prohibits the use of, for example, videoscale. Steps to reproduce: 1. Download the two python scripts attached to this bug report 2. Copy a videofile to /tmp/myvideo.avi 3. Run "python videoscale_works_without_tee.py" 4. Re-size the video window 5. The videostream is properly resized 6. Run "python videoscale_does_not_work_with_tee.py" 7. Re-size the video window 8. The videostream is NOT properly resized Actual results: The videostream is not properly resized when a tee element is added to an otherwise fine-working pipeline. Expected results: The videostream should be properly resized regardless of the tee element's presence. Does this happen every time? Yes Other information: According to wtay in #gstreamer, this problem is caused by the fact that buffer_alloc is not proxied through tee.
Created attachment 73490 [details] Python script showing that scaling works without tee
Created attachment 73491 [details] Python script showing that scaling does not work with tee
fixed in CVS, the first requested pad is proxied currently. Keeping this thing open for now.
* plugins/elements/gsttee.c: (gst_tee_base_init), (gst_tee_request_new_pad), (gst_tee_release_pad), (gst_tee_find_buffer_alloc), (gst_tee_buffer_alloc), (gst_tee_do_push), (clear_pads), (gst_tee_handle_buffer), (gst_tee_chain): Be a lot smarter when deciding what srcpad to use for proxying the buffer_alloc. Also handle pad added/removed when doing so. Fixes #357959. Keep track of what pads we already pushed on in case we have pads added/removed while pushing. Fixes #374639 * tests/check/Makefile.am: * tests/check/elements/tee.c: (handoff), (GST_START_TEST), (tee_suite): Added unit test for pad resync.