I’m interested in what the sentence “The probe can only be used within the same top level GstPipeline” means exactly — does it mean that the DSP and the echoprobe must be inside the same pipeline, or can they be in two different pipelines that run in the same process?
They must be inside the same pipeline. Because they need to share timing information.
If they’re not inside the same pipeline, both pipelines must use the same clock and have the same base_time. In any case, they need to be inside the same process, as the data from both elements end up inside the same function call internally.
The code could look something like for each pipeline while its still in GST_STATE_NULL
GstClock *sysclock = gst_system_clock_obtain(); gst_pipeline_use_clock(GST_PIPELINE(pipeline), sysclock); gst_object_unref (sysclock); gst_element_set_start_time(pipeline, -1); gst_element_set_base_time(pipeline, 0); // It could be any value <= to the value returned by gst_clock_get_time(syslock), all the timestamps in the pipeline will be relative to that value