Hi I trying to control the position property of a smptealpha element. It controls the opacity of the alpha channel, it varies from 0.0 to 1.0.
The duration of this setting is 500ms. I am working around this problem, it happens at runtime, I can't figure out what it's wrong. Thanks and regards, Rossana Here's the code; _____________ gst_interpolation_control_source_set: assertion `G_VALUE_TYPE (value) == self->priv->type' failed // Agrego Controlador gdouble duracion = 500; GstController * ctrl = gst_object_control_properties(G_OBJECT(smpte), "position",NULL); if (ctrl == NULL) { GST_WARNING ("No puede controlar el elemento fuente\n"); return 0; } // Todo valor GValue debe inicializarse en 0 GValue val_double = { 0, }; g_value_init (&val_double, G_TYPE_DOUBLE); // Seteo modo de interpolacion GstInterpolationControlSource * csource = gst_interpolation_control_source_new(); gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR); // Seteo primer valor g_value_set_double(&val_double, 0.0); gst_interpolation_control_source_set(csource,(0 * GST_MSECOND),&val_double); // Seteo segundo valor g_value_set_double (&val_double, 1.0); gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&val_double); gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE (csource)); g_object_unref (csource); g_value_unset (&val_double); _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
On 10/26/2011 03:12 AM, Rossana Guerra wrote:
no, position controls the transition of the fade. 0.0:input1, 1.0:input2.Hi I trying to control the position property of a smptealpha element. It controls the opacity of the alpha channel, it varies from 0.0 to 1.0. The duration of this setting is 500ms. I am working around this problem, it happens at runtime, I can't figure out what it's wrong. What is not working? The code snippet looks more of less okay. Maybe you can post a full standalone example. Stefan guint64 duracion = 500;Thanks and regards, Rossana Here's the code; _____________ gst_interpolation_control_source_set: assertion `G_VALUE_TYPE (value) == self->priv->type' failed // Agrego Controlador gdouble duracion = 500; GstController * ctrl = gst_object_control_properties(G_OBJECT(smpte), "position",NULL); if (ctrl == NULL) { GST_WARNING ("No puede controlar el elemento fuente\n"); return 0; } // Todo valor GValue debe inicializarse en 0 GValue val_double = { 0, }; g_value_init (&val_double, G_TYPE_DOUBLE); // Seteo modo de interpolacion GstInterpolationControlSource * csource = gst_interpolation_control_source_new(); gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR); // Seteo primer valor g_value_set_double(&val_double, 0.0); gst_interpolation_control_source_set(csource,(0 * GST_MSECOND),&val_double); // Seteo segundo valor g_value_set_double (&val_double, 1.0); gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&val_double); gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE (csource)); g_object_unref (csource); g_value_unset (&val_double);_______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
HI Stefan, thanks for your help, I changed the variable type from gdouble to guint, same error.
Here's the whole code example: #include <gst.h> #include <controller/gstcontroller.h> #include <iostream> using namespace std; // Error handler static gboolean bus_call (GstBus *bus, GstMessage *msg, gpointer data) { GMainLoop *loop = (GMainLoop *) data; switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_EOS: g_print ("Final de stream\n"); g_main_loop_quit (loop); break; case GST_MESSAGE_ERROR: { gchar *debug; GError *error; gst_message_parse_error (msg, &error, &debug); g_free (debug); g_printerr ("Error: %s\n", error->message); g_error_free (error); g_main_loop_quit (loop); break; } default: break; } return TRUE; } static void on_pad_added (GstElement *element, GstPad *pad, gpointer data) { GstPad *sinkpad = NULL; GstElement * elemento = (GstElement *) data; /* Ahora linkeo el pad de comp con sink pad */ g_print ("Dynamic pad created, linking queue\n"); sinkpad = gst_element_get_static_pad (elemento, "sink"); gst_pad_link (pad, sinkpad); gst_object_unref(sinkpad); } int main(int argc, char *argv[]) { GMainLoop *loop = NULL; GstElement *src1, *src2,*dec1,*dec2,*alfa1,*color,*smpte,*queue,*sink; GstBus *bus; guint duracion = 500.0; guint transicion = 1; /* init GStreamer */ gst_init (&argc, &argv); bool iniciado = gst_controller_init (&argc, &argv); loop = g_main_loop_new (NULL, FALSE); /* make sure we have input */ if (argc != 3) { g_print ("Usage: %s <filename1> <filename2>\n", argv[0]); return -1; } src1 = gst_element_factory_make("filesrc", "src1"); g_object_set(G_OBJECT(src1),"location",argv[1], NULL); src2 = gst_element_factory_make("filesrc", "src2"); g_object_set(G_OBJECT(src1),"location",argv[2], NULL); GstElement *pipeline = gst_pipeline_new ("video-player"); dec1 = gst_element_factory_make("decodebin2","dec1"); dec2 = gst_element_factory_make("decodebin2","dec2"); cout << "Creando pipeline..." << endl; bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); gst_bus_add_watch (bus, bus_call, loop); gst_object_unref (bus); alfa1 = gst_element_factory_make ("alpha","alfa1"); smpte = gst_element_factory_make ("smptealpha","smpte"); g_object_set(smpte,"type", transicion, NULL); color = gst_element_factory_make ("ffmpegcolorspace", "color"); GstElement * mixer = gst_element_factory_make("videomixer", "mixer"); if ((!alfa1) || (!smpte) || (!color) || (!mixer)) { g_printerr ("Alguno de los elementos del Bin no pudo ser creado. Saliendo\n"); return 0; } // Controller creation GstController * ctrl = gst_object_control_properties(G_OBJECT(smpte), "position",NULL); if (ctrl == NULL) { GST_WARNING ("No puede controlar el elemento fuente\n"); return 1; } // Todo valor GValue debe inicializarse en 0 GValue val_double = { 0, }; g_value_init (&val_double, G_TYPE_DOUBLE); // Set interpolation mode GstInterpolationControlSource * csource = gst_interpolation_control_source_new(); gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR); // Seteo primer valor g_value_set_double(&val_double, 0.0); gst_interpolation_control_source_set(csource,(0 * GST_MSECOND),&val_double); // Seteo segundo valor g_value_set_double (&val_double, 1.0); gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&val_double); gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE (csource)); g_object_unref (csource); g_value_unset (&val_double); g_signal_connect (G_OBJECT (dec1), "pad-added", G_CALLBACK (on_pad_added),alfa1); g_signal_connect (G_OBJECT (dec2), "pad-added", G_CALLBACK (on_pad_added),smpte); queue = gst_element_factory_make("queue", "queue"); sink = gst_element_factory_make("autovideosink", "sink"); gst_bin_add_many (GST_BIN (pipeline),src1, src2, dec1, dec2, alfa1, smpte, mixer, queue, color, sink, NULL); gst_element_link (src1,dec1); gst_element_link (src2,dec2); gst_element_link (alfa1,mixer); gst_element_link (smpte,mixer); gst_element_link (mixer,queue); gst_element_link (queue,sink); /* now run */ gst_element_set_state (pipeline, GST_STATE_PLAYING); cout << "Playing..." << endl; g_main_loop_run (loop); /* also clean up */ gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (GST_OBJECT (pipeline)); return 0; } 2011/10/26 Stefan Sauer <[hidden email]>
_______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Where it says guint duration = 500.0 it should say guint duration = 500. Nonetheless, the error persists.
2011/10/26 Rossana Guerra <[hidden email]> HI Stefan, thanks for your help, I changed the variable type from gdouble to guint, same error. _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Sorry, I had some copy/paste errors. Here's the code, the runtime error is:
CRITICAL **: gst_interpolation_control_source_set: assertion `G_VALUE_TYPE (value) == self->priv->type' failed. I changed the duracion value variable unit to second (replacing 500 with 5), and I tryed with GST_SECOND insted, but it didn't work. So I wrote it back to GST_MSECOND. The code ΅without" typing errors: #include <gst.h> #include <controller/gstcontroller.h> #include <iostream> #include <string.h> using namespace std; // Manejador de errores static gboolean bus_call (GstBus *bus, GstMessage *msg, gpointer data) { GMainLoop *loop = (GMainLoop *) data; switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_EOS: g_print ("Final de stream\n"); g_main_loop_quit (loop); break; case GST_MESSAGE_ERROR: { gchar *debug; GError *error; gst_message_parse_error (msg, &error, &debug); g_free (debug); g_printerr ("Error: %s\n", error->message); g_error_free (error); g_main_loop_quit (loop); break; } default: break; } return TRUE; } static void on_pad_added (GstElement *element, GstPad *pad, gpointer data) { GstPad *sinkpad = NULL; GstElement * elemento = (GstElement *) data; /* Ahora linkeo el pad de comp con sink pad */ g_print ("Dynamic pad created, linking queue\n"); sinkpad = gst_element_get_static_pad (elemento, "sink"); gst_pad_link (pad, sinkpad); gst_object_unref(sinkpad); } int main(int argc, char *argv[]) { GMainLoop *loop = NULL; GstElement *src1, *src2,*dec1,*dec2,*alfa1,*color,*smpte,*queue,*sink; GstBus *bus; guint duracion = 500; gint transicion = 1; cout << "Inicio..." << endl; /* init GStreamer */ gst_init (&argc, &argv); bool iniciado = gst_controller_init (&argc, &argv); loop = g_main_loop_new (NULL, FALSE); if (argc != 3) { g_print ("Usage: %s <filename1> <filename2>\n", argv[0]); return -1; } cout << "Creando..." << endl; src1 = gst_element_factory_make("filesrc", "src1"); g_object_set(G_OBJECT(src1),"location",argv[1], NULL); src2 = gst_element_factory_make("filesrc", "src2"); g_object_set(G_OBJECT(src1),"location",argv[2], NULL); GstElement *pipeline = gst_pipeline_new ("video-player"); dec1 = gst_element_factory_make("decodebin2","dec1"); dec2 = gst_element_factory_make("decodebin2","dec2"); cout << "Creando pipeline..." << endl; bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); gst_bus_add_watch (bus, bus_call, loop); gst_object_unref (bus); alfa1 = gst_element_factory_make ("alpha","alfa1"); smpte = gst_element_factory_make ("smptealpha","smpte"); g_object_set(smpte,"type", transicion, NULL); color = gst_element_factory_make ("ffmpegcolorspace", "color"); GstElement * mixer = gst_element_factory_make("videomixer", "mixer"); if ((!alfa1) || (!smpte) || (!color) || (!mixer)) { g_printerr ("Alguno de los elementos del Bin no pudo ser creado. Saliendo\n"); return 0; } // Agrego Controlador GstController * ctrl = gst_object_control_properties(G_OBJECT(smpte), "position",NULL); if (ctrl == NULL) { GST_WARNING ("No puede controlar el elemento fuente\n"); return 1; } // Todo valor GValue debe inicializarse en 0 GValue val_int = { 0, }; g_value_init (&val_int, G_TYPE_INT); // Set interpolation mode GstInterpolationControlSource * csource = gst_interpolation_control_source_new(); gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR); // Seteo primer valor g_value_set_int(&val_int, 0); gst_interpolation_control_source_set(csource,(0 * GST_MSECOND),&val_int); // Seteo segundo valor g_value_set_int (&val_int, 1); gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&val_int); gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE (csource)); g_object_unref (csource); g_value_unset (&val_int); g_signal_connect (G_OBJECT (dec1), "pad-added", G_CALLBACK (on_pad_added),alfa1); g_signal_connect (G_OBJECT (dec2), "pad-added", G_CALLBACK (on_pad_added),smpte); queue = gst_element_factory_make("queue", "queue"); sink = gst_element_factory_make("autovideosink", "sink"); gst_bin_add_many (GST_BIN (pipeline),src1, src2, dec1, dec2, alfa1, smpte, mixer, queue, color, sink, NULL); gst_element_link (src1,dec1); gst_element_link (src2,dec2); gst_element_link (alfa1,mixer); gst_element_link (smpte,mixer); gst_element_link (mixer,queue); gst_element_link (queue,sink); /* now run */ gst_element_set_state (pipeline, GST_STATE_PLAYING); cout << "Playing..." << endl; g_main_loop_run (loop); /* also clean up */ gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (GST_OBJECT (pipeline)); return 0; } 2011/10/26 Rossana Guerra <[hidden email]> Where it says guint duration = 500.0 it should say guint duration = 500. Nonetheless, the error persists. _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Well the error type disappeared, it was due where the place the gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE (csource)) sentence was.
The first time I did it according the documentation, at the end of the value sets of the control source. It seems it isn't the right place, I changed the sentences right after creating the controller, it seems it works. Hope it helps someone else. In this way: GstInterpolationControlSource * csource = gst_interpolation_control_source_new(); gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR); gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE (csource)); (Now the runtime is another! but one less at least) Specially thanks to Stefan! Here is the complete code: #include <gst.h> #include <controller/gstcontroller.h> #include <iostream> #include <string.h> using namespace std; // Manejador de errores static gboolean bus_call (GstBus *bus, GstMessage *msg, gpointer data) { GMainLoop *loop = (GMainLoop *) data; switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_EOS: g_print ("Final de stream\n"); g_main_loop_quit (loop); break; case GST_MESSAGE_ERROR: { gchar *debug; GError *error; gst_message_parse_error (msg, &error, &debug); g_free (debug); g_printerr ("Error: %s\n", error->message); g_error_free (error); g_main_loop_quit (loop); break; } default: break; } return TRUE; } static void on_pad_added (GstElement *element, GstPad *pad, gpointer data) { GstPad *sinkpad = NULL; GstElement * elemento = (GstElement *) data; /* Ahora linkeo el pad de comp con sink pad */ g_print ("Dynamic pad created, linking queue\n"); sinkpad = gst_element_get_static_pad (elemento, "sink"); gst_pad_link (pad, sinkpad); gst_object_unref(sinkpad); } int main(int argc, char *argv[]) { GMainLoop *loop = NULL; GstElement *src1, *src2,*dec1,*dec2,*alfa1,*color,*smpte,*queue,*sink; GstBus *bus; gdouble duracion = 500.0; gint transicion = 1; cout << "Inicio..." << endl; /* init GStreamer */ gst_init (&argc, &argv); bool iniciado = gst_controller_init (&argc, &argv); loop = g_main_loop_new (NULL, FALSE); //gint transicion = 1; /* make sure we have input */ if (argc != 3) { g_print ("Usage: %s <filename1> <filename2>\n", argv[0]); return -1; } cout << "Creando..." << endl; src1 = gst_element_factory_make("filesrc", "src1"); g_object_set(G_OBJECT(src1),"location",argv[1], NULL); src2 = gst_element_factory_make("filesrc", "src2"); g_object_set(G_OBJECT(src1),"location",argv[2], NULL); GstElement *pipeline = gst_pipeline_new ("video-player"); dec1 = gst_element_factory_make("decodebin2","dec1"); dec2 = gst_element_factory_make("decodebin2","dec2"); cout << "Creando pipeline..." << endl; bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); gst_bus_add_watch (bus, bus_call, loop); gst_object_unref (bus); alfa1 = gst_element_factory_make ("alpha","alfa1"); smpte = gst_element_factory_make ("smptealpha","smpte"); g_object_set(smpte,"type", transicion, NULL); color = gst_element_factory_make ("ffmpegcolorspace", "color"); GstElement * mixer = gst_element_factory_make("videomixer", "mixer"); if ((!alfa1) || (!smpte) || (!color) || (!mixer)) { g_printerr ("Alguno de los elementos del Bin no pudo ser creado. Saliendo\n"); return 0; } cout << "Creando 1..." << endl; // Agrego Controlador GstController * ctrl = gst_object_control_properties(G_OBJECT(smpte), "position",NULL); if (ctrl == NULL) { GST_WARNING ("No puede controlar el elemento fuente\n"); return 1; } // Todo valor GValue debe inicializarse en 0 GValue val_double = { 0, }; g_value_init (&val_double, G_TYPE_DOUBLE); // Creo la fuente al controlador y la asocio al controlador // Seteo modo de interpolacion GstInterpolationControlSource * csource = gst_interpolation_control_source_new(); gst_interpolation_control_source_set_interpolation_mode(csource,GST_INTERPOLATE_LINEAR); gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE (csource)); // Seteo primer valor g_value_set_double(&val_double, 0.0); gst_interpolation_control_source_set(csource,(0 * GST_MSECOND),&val_double); // Seteo segundo valor g_value_set_double(&val_double, 1.0); gst_interpolation_control_source_set(csource,(duracion*GST_MSECOND),&val_double); //gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE (csource)); g_object_unref (csource); g_value_unset (&val_double); g_signal_connect (G_OBJECT (dec1), "pad-added", G_CALLBACK (on_pad_added),alfa1); g_signal_connect (G_OBJECT (dec2), "pad-added", G_CALLBACK (on_pad_added),smpte); queue = gst_element_factory_make("queue", "queue"); sink = gst_element_factory_make("autovideosink", "sink"); gst_bin_add_many (GST_BIN (pipeline),src1, src2, dec1, dec2, alfa1, smpte, mixer, queue, color, sink, NULL); gst_element_link (src1,dec1); gst_element_link (src2,dec2); gst_element_link (alfa1,mixer); gst_element_link (smpte,mixer); gst_element_link (mixer,queue); gst_element_link (queue,sink); /* now run */ gst_element_set_state (pipeline, GST_STATE_PLAYING); cout << "Playing..." << endl; g_main_loop_run (loop); /* also clean up */ gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (GST_OBJECT (pipeline)); return 0; } 2011/10/26 Rossana Guerra <[hidden email]> Sorry, I had some copy/paste errors. Here's the code, the runtime error is: _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
On 10/27/2011 01:37 AM, Rossana Guerra wrote: Well the error type disappeared, it was due where the place the gst_controller_set_control_source (ctrl, "position", GST_CONTROL_SOURCE (csource)) sentence was.I fix the wrong order of calls in the docs. In this way: I made a few more fixes - compare your source and mine in a diff viewer (e.g. meld). You still need to do more stuff to ensure both sources can be mixed (run it as GST_DEBUG="*:2" ./ctrl <file1> <file2> to see the warnings). Stefan
_______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel ctrl.c (5K) Download Attachment |
Sorry Stefan, where is the code to compare with?..I downloaded the doc (pdf) and the order remains the same.
Regards and thanks 2011/10/27 Stefan Sauer <[hidden email]>
_______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
On 10/28/2011 12:40 AM, Rossana Guerra wrote:
Sorry Stefan, where is the code to compare with?I forwarded the mail to your personal address. Out mailing list tried to be super smart and stipped attached *sourcecode*. ..I downloaded the doc (pdf) and the order remains the same.I pushed the fix to the API docs to git. That does not regenerate the pdf. To be sure which pdf exactly are you talking about? Stefan Regards and thanks _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi Stefan, I didn't receive the email, I even looked into the spam folder, just in case....
2011/10/28 Stefan Sauer <[hidden email]>
The pdf asociated with the html file, the one that has this chapter: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-dparams-parameters.html http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/manual.pdf thanks
_______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi Stefan, I saw and run the code. I noticed the differences, mostly in the "on-pad-added" function.
You create a fakesink where the "flow" doesn't come from video, then you create a bin from the parent element and got the static pad from it for linking. I didn't get the meaning of this technique. I have an "internal data flow error" message. Here's the output when I run with debug option as you pointed out. Debug information: rossana@Studio:~/CodeBlocks/ctrl/bin/Debug$ GST_DEBUG="*:2" ./ctrl "/home/rossana/video1.avi" "/home/rossana/video2.avi" Inicio... Creando... Creando pipeline... Creando 1... Playing... Dynamic pad created: video/x-raw-rgb ... linking video Dynamic pad created: audio/x-raw-int ... dropping audio 0:00:00.064628890 4083 0x157f070 WARN basetransform gstbasetransform.c:1211:gst_base_transform_setcaps:<alfa1> transform could not transform video/x-raw-yuv, width=(int)720, height=(int)528, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 in anything we support Dynamic pad created: video/x-raw-rgb ... linking video Dynamic pad created: audio/x-raw-int ... dropping audio 0:00:00.076359290 4083 0x1545b80 WARN ffmpeg gstffmpegdec.c:2241:gst_ffmpegdec_frame:<ffdec_mpeg40> ffdec_mpeg4: decoding error (len: -1, have_data: 0) I am trying to play 2 .avi files, I have no problem to visualize them with Banshee or any other player, so I think I got the right codecs in my computer. Both videos have the same properties values: *Video: Dimension 720x528 Codec DivX MPEG-4 Version 5 25 fps bit rate: N/A * Sound: Codec MPEG1 Audio, layer Channels Stereo Frec 44100Hz bit rate 127 kpbs I'll keep trying, and thanks for your suggestions. Nice weekend. Rossana 2011/10/28 Rossana Guerra <[hidden email]> Hi Stefan, I didn't receive the email, I even looked into the spam folder, just in case.... _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
On 10/30/2011 02:15 AM, Rossana Guerra wrote:
Hi Stefan, I saw and run the code. I noticed the differences, mostly in the "on-pad-added" function. There where two distinct bugs. The first was to use src1 twice for the pad-aaded callback if I recall right. The 2nd is that in the pad-addded callback you get pads for audio and video. You want to terminate the audio-pads with a fakesink and only connect the video-pads to videomixer. If you want the adio too, you'll need to use a similar setup like videomixer, but using adder. You will still need to ensure that both video-outputs are in a compatible format for videomxer. I did not had time to analyze further. Use the GST_DEBUG_BIN_TO_DOT_FILE to understand whats in the resulting pipeline and where it goes wrong. Stefan I have an "internal data flow error" message. Here's the output when I run with debug option as you pointed out. _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
thanks for response, it helps me a lot. In fact I need audio as well, I'll work around it, at least with one file.
Regards, Rossana 2011/10/31 Stefan Sauer <[hidden email]>
_______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
In reply to this post by Stefan Sauer
2011/10/31 Stefan Sauer <[hidden email]>
or you meant dec1?
trying to do this thanks
_______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |