From b008abee2e4663a77b6c66bda0ae9a3b1fcc6054 Mon Sep 17 00:00:00 2001 From: Vivia Nikolaidou Date: Mon, 27 Jan 2020 15:53:27 +0200 Subject: [PATCH] basic-tutorial-3: Add audioresample If the sink chosen by autoaudiosink doesn't do resampling internally, the pipeline may fail. In this specific case, someone on Windows had configured their sound card to 96000 instead of 48000 and the tutorial was failing. Thanks to Olivi55 from IRC for reporting. --- markdown/tutorials/basic/dynamic-pipelines.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/markdown/tutorials/basic/dynamic-pipelines.md b/markdown/tutorials/basic/dynamic-pipelines.md index 96f546b..652a1e9 100644 --- a/markdown/tutorials/basic/dynamic-pipelines.md +++ b/markdown/tutorials/basic/dynamic-pipelines.md @@ -279,6 +279,7 @@ This is a forward reference, to be used later. /* Create the elements */ data.source = gst_element_factory_make ("uridecodebin", "source"); data.convert = gst_element_factory_make ("audioconvert", "convert"); +data.resample = gst_element_factory_make ("audioresample", "resample"); data.sink = gst_element_factory_make ("autoaudiosink", "sink"); ``` @@ -293,6 +294,11 @@ making sure that this example will work on any platform, since the format produced by the audio decoder might not be the same that the audio sink expects. +`audioresample` is useful for converting between different audio sample rates, +similarly making sure that this example will work on any platform, since the +audio sample rate produced by the audio decoder might not be one that the audio +sink supports. + The `autoaudiosink` is the equivalent of `autovideosink` seen in the previous tutorial, for audio. It will render the audio stream to the audio card. @@ -401,11 +407,11 @@ if (!g_str_has_prefix (new_pad_type, "audio/x-raw")) { } ``` -Now we will check the type of data this new pad is going to output, -because we are only interested in pads producing audio. We have -previously created a piece of pipeline which deals with audio (an -`audioconvert` linked with an `autoaudiosink`), and we will not be able -to link it to a pad producing video, for example. +Now we will check the type of data this new pad is going to output, because we +are only interested in pads producing audio. We have previously created a +piece of pipeline which deals with audio (an `audioconvert` linked with an +`audioresample` and an `autoaudiosink`), and we will not be able to link it to +a pad producing video, for example. `gst_pad_get_current_caps()` retrieves the current *capabilities* of the pad (that is, the kind of data it currently outputs), wrapped in a `GstCaps` -- 2.7.4