GstEnginePipeline: place probes/handles *after* output queue
We want to get the segments in sync with when they are passed onto the sound card, and now that is after the output queue.
This commit is contained in:
parent
ec6db8ccfa
commit
c8e6fa7e74
|
@ -576,8 +576,6 @@ bool GstEnginePipeline::InitAudioBin(QString &error) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
eventprobe_ = audioqueueconverter_;
|
|
||||||
|
|
||||||
// Create the replaygain elements if it's enabled.
|
// Create the replaygain elements if it's enabled.
|
||||||
GstElement *rgvolume = nullptr;
|
GstElement *rgvolume = nullptr;
|
||||||
GstElement *rglimiter = nullptr;
|
GstElement *rglimiter = nullptr;
|
||||||
|
@ -595,7 +593,6 @@ bool GstEnginePipeline::InitAudioBin(QString &error) {
|
||||||
if (!rgconverter) {
|
if (!rgconverter) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
eventprobe_ = rgconverter;
|
|
||||||
// Set replaygain settings
|
// Set replaygain settings
|
||||||
g_object_set(G_OBJECT(rgvolume), "album-mode", rg_mode_, nullptr);
|
g_object_set(G_OBJECT(rgvolume), "album-mode", rg_mode_, nullptr);
|
||||||
g_object_set(G_OBJECT(rgvolume), "pre-amp", rg_preamp_, nullptr);
|
g_object_set(G_OBJECT(rgvolume), "pre-amp", rg_preamp_, nullptr);
|
||||||
|
@ -612,7 +609,6 @@ bool GstEnginePipeline::InitAudioBin(QString &error) {
|
||||||
|
|
||||||
UpdateEBUR128LoudnessNormalizingGaindB();
|
UpdateEBUR128LoudnessNormalizingGaindB();
|
||||||
|
|
||||||
eventprobe_ = ebur128_volume_;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GstElement *bs2b = nullptr;
|
GstElement *bs2b = nullptr;
|
||||||
|
@ -637,16 +633,6 @@ bool GstEnginePipeline::InitAudioBin(QString &error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a data probe on the src pad of the audioconvert element for our scope.
|
|
||||||
// We do it here because we want pre-equalized and pre-volume samples so that our visualization are not be affected by them.
|
|
||||||
{
|
|
||||||
GstPad *pad = gst_element_get_static_pad(eventprobe_, "src");
|
|
||||||
if (pad) {
|
|
||||||
upstream_events_probe_cb_id_ = gst_pad_add_probe(pad, GST_PAD_PROBE_TYPE_EVENT_UPSTREAM, &UpstreamEventsProbeCallback, this, nullptr);
|
|
||||||
gst_object_unref(pad);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the buffer duration.
|
// Set the buffer duration.
|
||||||
// We set this on our queues instead of the playbin because setting it on the playbin only affects network sources.
|
// We set this on our queues instead of the playbin because setting it on the playbin only affects network sources.
|
||||||
// Disable the default buffer and byte limits, so we only buffer based on time.
|
// Disable the default buffer and byte limits, so we only buffer based on time.
|
||||||
|
@ -767,6 +753,7 @@ bool GstEnginePipeline::InitAudioBin(QString &error) {
|
||||||
error = "Failed to link audio sink converter to output audio queue with filter";
|
error = "Failed to link audio sink converter to output audio queue with filter";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
eventprobe_ = outputaudioqueue_;
|
||||||
element_link = outputaudioqueue_;
|
element_link = outputaudioqueue_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -777,8 +764,9 @@ bool GstEnginePipeline::InitAudioBin(QString &error) {
|
||||||
element_link = audiosink_;
|
element_link = audiosink_;
|
||||||
|
|
||||||
{ // Add probes and handlers.
|
{ // Add probes and handlers.
|
||||||
GstPad *pad = gst_element_get_static_pad(audioqueueconverter_, "src");
|
GstPad *pad = gst_element_get_static_pad(eventprobe_, "src");
|
||||||
if (pad) {
|
if (pad) {
|
||||||
|
upstream_events_probe_cb_id_ = gst_pad_add_probe(pad, GST_PAD_PROBE_TYPE_EVENT_UPSTREAM, &UpstreamEventsProbeCallback, this, nullptr);
|
||||||
buffer_probe_cb_id_ = gst_pad_add_probe(pad, GST_PAD_PROBE_TYPE_BUFFER, BufferProbeCallback, this, nullptr);
|
buffer_probe_cb_id_ = gst_pad_add_probe(pad, GST_PAD_PROBE_TYPE_BUFFER, BufferProbeCallback, this, nullptr);
|
||||||
gst_object_unref(pad);
|
gst_object_unref(pad);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue