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
Thanks, this seems to be working. However, I’ve run into another issue:
I have two computers with the same setup and I’m using identical GStreamer pipelines. On one machine everything works as expected, but on the other I can’t hear any audio at all after the webrtcdsp element (audio can be played normally before this element).
I’m using the same microphone in both cases, but I can’t figure out what could be causing the problem. I’ve checked the GStreamer logs and don’t see any errors or warnings.
Interestingly, when I use a headset microphone, everything works fine on both machines. So for now, the issue seems to occur only with built-in microphones (laptop or webcam).