GnlComposition Signals
Edward Hervey
bilboed at gmail.com
Mon Feb 28 01:53:42 PST 2011
On Mon, 2011-02-28 at 09:21 +0100, Angel Martin wrote:
> Dear all,
>
> I have the next problem.
>
> When 3 contents are played and afterwards only 1 is performed using
> gnlcomposition an error appears, but if i remove one by one it works:
> Content A start 0 dur 10
> Content B start 0 dur 10
> Content C start 0 dur 10
> Content D start 10 dur 10
> -> Seek Error
> ERROR gnlcomposition
> gnlcomposition.c:1724:no_more_pads_object_cb:<video-composition>
> Sending seek event failed!
You're not giving enough information. What priorities are you using ?
Do you have any other object apart from those 4 ?
>
> Content A start 0 dur 10
> Content B start 0 dur 9
> Content C start 0 dur 8
> Content D start 10 dur 10
> -> Ok!
>
> In my case I have a gnloperation that places each content through the
> xpos, ypos and zorder attributes of the sinkpad of the videomixer.
>
> gnloperation = gst_element_factory_make ("gnloperation",
> "general-video-composition");
> videomixer = gst_element_factory_make ("videomixer",
> "general-video-adder");
>
> gst_bin_add (GST_BIN (gnloperation), videomixer);
> g_object_set(G_OBJECT (gnloperation),
> "expandable", TRUE,
> "priority", 0,
> NULL);
> gst_bin_add (GST_BIN (gnlcomposition), gnloperation);
>
> g_signal_connect(gnloperation, "input-priority-changed", G_CALLBACK
> (onPriorityChange), data);
>
> In the onPriorityChange function I assign to each video/image content
> the xpos, ypos and zorder parameters mentioned before.
>
> So, as far as i understood it is supposed that the videomixer should
> manage properly the request_new_pad and release_request_pad calls, and
> no redefinition would be needed.
>
> However, depending on the number of performed contents the Seek Error
> appears or not.
>
> After trying to understand the problem from the code of videomixer,
> gnlcomposition and gnloperation, I think that the problem could be the
> "gnloperation" element.
>
> In the code of of the function "synchronize_sinks" there is a call
> to:
> /* Remove pad */
> /* FIXME, which one do we remove ? :) */
> remove_sink_pad (operation, NULL);
>
> I think that this is the tricky point, because this function seems not
> be prepared to remove several sinks at once, so gstreamer try to seek
> a sinkpad that in fact doesn't have any source "connected".
>
> So a loop inside "synchronize_sinks" could fix it.
> /* Find unlinked sinkpads */
> GstPad * sinkpad;
> while ((sinkpad = get_unlinked_sink_ghost_pad (operation)) !=
> NULL) {
> remove_sink_pad (operation, sinkpad);
> }
Fixed that in a pending branch, will try to push the commit later
today.
>
> According to the GST_DEBUG log I think that the function
> "synchronize_sinks" is not called for each multimedia content removed
> by the composition, but once, so this code could fix it.
>
> But, again the Content D try to find a videomixer sink pad and it
> can't be found, so the pipeline freezes.
>
> Could someone provide any idea to fix this situation?
>
> Thank you in advance.
>
> Best Regards,
>
> Angel
>
> --
> Ángel Martín Navas
> Investigador / Researcher
> Televisión Digital y Servicios Multimedia / Digital TV & Multimedia Services
>
> Vicomtech - Visual Interaction Communication Technologies
>
> Mikeletegi Pasealekua, 57 - Parque Tecnológico
> 20009 Donostia - San Sebastián - Spain
> Tel: +[34] 943 30 92 30
> Fax: +[34] 943 30 93 93
> e-mail: amartin at vicomtech.org
>
> www.vicomtech.org
>
> *** member of IK4 Research Alliance ****
> www.ik4.es
> *** member of GraphicsMedia.net ****
>
> www.graphicsmedia.net
>
>
>
> -----------------------------------------------------
> Vicomtech is an ISO 9001:2000 certified institute
> -----------------------------------------------------
>
>
> Este mensaje se dirige exclusivamente a su destinatario.
> La información incluida en el presente correo es confidencial sometida a
> secreto profesional, especialmente en lo que respecta a los datos de
> carácter personal, cuya divulgación está prohibida, en virtud de la
>
> legislación vigente. Si usted no es el destinatario legítimo y lo ha
> recibido por error o tiene conocimiento del mismo por cualquier motivo,
> le rogamos que nos lo comunique por este medio y proceda a destruirlo o
>
> borrarlo. En todo caso abstengase de utilizar, reproducir, alterar,
> archivar o comunicar a terceros el presente mensaje así como los ficheros
> anexos, todo ello bajo pena de incurrir en responsabilidades legales.
>
> Cualquier opinión contenida en este correo es exclusiva de su autor y no
> representa necesariamente la opinión de ASOCIACIÓN CENTRO DE TECNOLOGÍAS
> DE INTERACCIÓN VISUAL Y COMUNICACIONES VICOMTECH (en adelante Vicomtech-IK4)
>
> El emisor no garantiza la integridad, rapidez o seguridad del presente correo,
> ni se responsabiliza de posibles perjuicios derivados de la captura,
> incorporaciones de virus o cualesquiera otras manipulaciones efectuadas por terceros.
>
> Con motivo de la entrada en vigor de la Ley 34/2002, de 11 de julio, de
> Servicios de la Sociedad de la Información y de Comercio Electrónico, le
> informamos que pueden revocar en cualquier momento, de forma sencilla y gratuita,
>
> el consentimiento para la recepción de mensajes de vicomtech.org en info.lopd at vicomtech.org.
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
More information about the gstreamer-devel
mailing list