| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <title>rgvolume: GStreamer Good Plugins 1.0 Plugins Reference Manual</title> |
| <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> |
| <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> |
| <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> |
| <link rel="prev" href="gst-plugins-good-plugins-rglimiter.html" title="rglimiter"> |
| <link rel="next" href="gst-plugins-good-plugins-rippletv.html" title="rippletv"> |
| <meta name="generator" content="GTK-Doc V1.25 (XML mode)"> |
| <link rel="stylesheet" href="style.css" type="text/css"> |
| </head> |
| <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
| <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle"> |
| <td width="100%" align="left" class="shortcuts"> |
| <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> |
| <a href="#gst-plugins-good-plugins-rgvolume.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> |
| <a href="#gst-plugins-good-plugins-rgvolume.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces"> <span class="dim">|</span> |
| <a href="#gst-plugins-good-plugins-rgvolume.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties"> <span class="dim">|</span> |
| <a href="#gst-plugins-good-plugins-rgvolume.properties" class="shortcut">Properties</a></span> |
| </td> |
| <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> |
| <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> |
| <td><a accesskey="p" href="gst-plugins-good-plugins-rglimiter.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> |
| <td><a accesskey="n" href="gst-plugins-good-plugins-rippletv.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> |
| </tr></table> |
| <div class="refentry"> |
| <a name="gst-plugins-good-plugins-rgvolume"></a><div class="titlepage"></div> |
| <div class="refnamediv"><table width="100%"><tr> |
| <td valign="top"> |
| <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rgvolume.top_of_page"></a>rgvolume</span></h2> |
| <p>rgvolume</p> |
| </td> |
| <td class="gallery_image" valign="top" align="right"></td> |
| </tr></table></div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-rgvolume.properties"></a><h2>Properties</h2> |
| <div class="informaltable"><table class="informaltable" border="0"> |
| <colgroup> |
| <col width="150px" class="properties_type"> |
| <col width="300px" class="properties_name"> |
| <col width="200px" class="properties_flags"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--album-mode" title="The “album-mode” property">album-mode</a></td> |
| <td class="property_flags">Read / Write</td> |
| </tr> |
| <tr> |
| <td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--fallback-gain" title="The “fallback-gain” property">fallback-gain</a></td> |
| <td class="property_flags">Read / Write</td> |
| </tr> |
| <tr> |
| <td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--headroom" title="The “headroom” property">headroom</a></td> |
| <td class="property_flags">Read / Write</td> |
| </tr> |
| <tr> |
| <td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--pre-amp" title="The “pre-amp” property">pre-amp</a></td> |
| <td class="property_flags">Read / Write</td> |
| </tr> |
| <tr> |
| <td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--result-gain" title="The “result-gain” property">result-gain</a></td> |
| <td class="property_flags">Read</td> |
| </tr> |
| <tr> |
| <td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--target-gain" title="The “target-gain” property">target-gain</a></td> |
| <td class="property_flags">Read</td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <a name="GstRgVolume"></a><div class="refsect1"> |
| <a name="gst-plugins-good-plugins-rgvolume.other"></a><h2>Types and Values</h2> |
| <div class="informaltable"><table class="informaltable" width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="name"> |
| <col class="description"> |
| </colgroup> |
| <tbody><tr> |
| <td class="datatype_keyword">struct</td> |
| <td class="function_name"><a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume-struct" title="struct GstRgVolume">GstRgVolume</a></td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-rgvolume.object-hierarchy"></a><h2>Object Hierarchy</h2> |
| <pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a> |
| <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> |
| <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a> |
| <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a> |
| <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBin.html#GstBin-struct">GstBin</a> |
| <span class="lineart">╰──</span> GstRgVolume |
| </pre> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-rgvolume.implemented-interfaces"></a><h2>Implemented Interfaces</h2> |
| <p> |
| GstRgVolume implements |
| <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-rgvolume.description"></a><h2>Description</h2> |
| <p>This element applies volume changes to streams as lined out in the proposed</p> |
| <a class="ulink" href="http://replaygain.org" target="_top">ReplayGain standard</a>. It |
| <p>interprets the ReplayGain meta data tags and carries out the adjustment (by |
| using a volume element internally). The relevant tags are:</p> |
| <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
| <li class="listitem"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstTagList.html#GST-TAG-TRACK-GAIN:CAPS"><span class="type">GST_TAG_TRACK_GAIN</span></a></li> |
| <li class="listitem"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstTagList.html#GST-TAG-TRACK-PEAK:CAPS"><span class="type">GST_TAG_TRACK_PEAK</span></a></li> |
| <li class="listitem"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstTagList.html#GST-TAG-ALBUM-GAIN:CAPS"><span class="type">GST_TAG_ALBUM_GAIN</span></a></li> |
| <li class="listitem"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstTagList.html#GST-TAG-ALBUM-PEAK:CAPS"><span class="type">GST_TAG_ALBUM_PEAK</span></a></li> |
| <li class="listitem"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstTagList.html#GST-TAG-REFERENCE-LEVEL:CAPS"><span class="type">GST_TAG_REFERENCE_LEVEL</span></a></li> |
| </ul></div> |
| <p>The information carried by these tags must have been calculated beforehand by |
| performing the ReplayGain analysis. This is implemented by the <a class="link" href="gst-plugins-good-plugins-rganalysis.html#GstRgAnalysis">rganalysis</a> element.</p> |
| <p>The signal compression/limiting recommendations outlined in the proposed |
| standard are not implemented by this element. This has to be handled by |
| separate elements because applications might want to have additional filters |
| between the volume adjustment and the limiting stage. A basic limiter is |
| included with this plugin: The <a class="link" href="gst-plugins-good-plugins-rglimiter.html#GstRgLimiter">rglimiter</a> |
| element applies -6 dB hard limiting as mentioned in the ReplayGain standard.</p> |
| <div class="refsect2"> |
| <a name="id-1.2.123.8.8"></a><h3>Example launch line</h3> |
| <div class="informalexample"> |
| <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> |
| <tbody> |
| <tr> |
| <td class="listing_lines" align="right"><pre>1 |
| 2</pre></td> |
| <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>filename<span class="gtkdoc opt">.</span>ext <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> audioconvert \ |
| <span class="gtkdoc opt">!</span> rgvolume <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> alsasink</pre></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| Playback of a file |
| </div> |
| <div class="refsynopsisdiv"> |
| <h2>Synopsis</h2> |
| <div class="refsect2"> |
| <a name="id-1.2.123.8.9.1"></a><h3>Element Information</h3> |
| <div class="variablelist"><table border="0" class="variablelist"> |
| <colgroup> |
| <col align="left" valign="top"> |
| <col> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td><p><span class="term">plugin</span></p></td> |
| <td> |
| <a class="link" href="gst-plugins-good-plugins-plugin-replaygain.html#plugin-replaygain">replaygain</a> |
| </td> |
| </tr> |
| <tr> |
| <td><p><span class="term">author</span></p></td> |
| <td>René Stadler <mail@renestadler.de></td> |
| </tr> |
| <tr> |
| <td><p><span class="term">class</span></p></td> |
| <td>Filter/Effect/Audio</td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="id-1.2.123.8.9.2"></a><h3>Element Pads</h3> |
| <div class="variablelist"><table border="0" class="variablelist"> |
| <colgroup> |
| <col align="left" valign="top"> |
| <col> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td><p><span class="term">name</span></p></td> |
| <td>sink</td> |
| </tr> |
| <tr> |
| <td><p><span class="term">direction</span></p></td> |
| <td>sink</td> |
| </tr> |
| <tr> |
| <td><p><span class="term">presence</span></p></td> |
| <td>always</td> |
| </tr> |
| <tr> |
| <td><p><span class="term">details</span></p></td> |
| <td>audio/x-raw, format=(string){ F32LE, S16LE }, layout=(string){ interleaved, non-interleaved }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td> |
| </tr> |
| </tbody> |
| </table></div> |
| <div class="variablelist"><table border="0" class="variablelist"> |
| <colgroup> |
| <col align="left" valign="top"> |
| <col> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td><p><span class="term">name</span></p></td> |
| <td>src</td> |
| </tr> |
| <tr> |
| <td><p><span class="term">direction</span></p></td> |
| <td>source</td> |
| </tr> |
| <tr> |
| <td><p><span class="term">presence</span></p></td> |
| <td>always</td> |
| </tr> |
| <tr> |
| <td><p><span class="term">details</span></p></td> |
| <td>audio/x-raw, format=(string){ F32LE, S16LE }, layout=(string){ interleaved, non-interleaved }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| </div> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-rgvolume.functions_details"></a><h2>Functions</h2> |
| <p></p> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-rgvolume.other_details"></a><h2>Types and Values</h2> |
| <div class="refsect2"> |
| <a name="GstRgVolume-struct"></a><h3>struct GstRgVolume</h3> |
| <pre class="programlisting">struct GstRgVolume;</pre> |
| <p>Opaque data structure.</p> |
| </div> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-rgvolume.property-details"></a><h2>Property Details</h2> |
| <div class="refsect2"> |
| <a name="GstRgVolume--album-mode"></a><h3>The <code class="literal">“album-mode”</code> property</h3> |
| <pre class="programlisting"> “album-mode” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre> |
| <p>Whether to prefer album gain over track gain.</p> |
| <p>If set to <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, use album gain instead of track gain if both are |
| available. This keeps the relative loudness levels of tracks from the same |
| album intact.</p> |
| <p>If set to <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>, track mode is used instead. This effectively leads to |
| more extensive normalization.</p> |
| <p>If album mode is enabled but the album gain tag is absent in the stream, |
| the track gain is used instead. If both gain tags are missing, the value |
| of the <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--fallback-gain" title="The “fallback-gain” property"><span class="type">“fallback-gain”</span></a> property is used instead.</p> |
| <p>Flags: Read / Write</p> |
| <p>Default value: TRUE</p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstRgVolume--fallback-gain"></a><h3>The <code class="literal">“fallback-gain”</code> property</h3> |
| <pre class="programlisting"> “fallback-gain” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre> |
| <p>Fallback gain [dB] for streams missing ReplayGain tags.</p> |
| <p>Flags: Read / Write</p> |
| <p>Allowed values: [-60,60]</p> |
| <p>Default value: 0</p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstRgVolume--headroom"></a><h3>The <code class="literal">“headroom”</code> property</h3> |
| <pre class="programlisting"> “headroom” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre> |
| <p>Extra headroom [dB]. This controls the amount by which the output can |
| exceed digital full scale.</p> |
| <p>Only set this to a value greater than 0.0 if signal compression/limiting of |
| a suitable form is applied to the output (or output is brought into the |
| correct range by some other transformation).</p> |
| <p>This element internally uses a volume element, which also supports |
| operating on integer audio formats. These formats do not allow exceeding |
| digital full scale. If extra headroom is used, make sure that the raw |
| audio data format is floating point (F32). Otherwise, |
| clipping distortion might be introduced as part of the volume adjustment |
| itself.</p> |
| <p>Flags: Read / Write</p> |
| <p>Allowed values: [0,60]</p> |
| <p>Default value: 0</p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstRgVolume--pre-amp"></a><h3>The <code class="literal">“pre-amp”</code> property</h3> |
| <pre class="programlisting"> “pre-amp” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre> |
| <p>Additional gain to apply globally [dB]. This controls the trade-off |
| between uniformity of normalization and utilization of available dynamic |
| range.</p> |
| <p>Note that the default value is 0 dB because the ReplayGain reference value |
| was adjusted by +6 dB (from 83 to 89 dB). At the time of this writing, the</p> |
| <a class="ulink" href="http://replaygain.org" target="_top">webpage</a> is still outdated and |
| <p>does not reflect this change however. Where the original proposal states |
| that a proper default pre-amp value is +6 dB, this translates to the used 0 |
| dB.</p> |
| <p>Flags: Read / Write</p> |
| <p>Allowed values: [-60,60]</p> |
| <p>Default value: 0</p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstRgVolume--result-gain"></a><h3>The <code class="literal">“result-gain”</code> property</h3> |
| <pre class="programlisting"> “result-gain” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre> |
| <p>Applied gain [dB]. This gain is applied to processed buffer data.</p> |
| <p>This is set to the <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--target-gain" title="The “target-gain” property"><span class="type">“target-gain”</span></a> if amplification by that amount |
| can be applied safely. "Safely" means that the volume adjustment does not |
| inflict clipping distortion. Should this not be the case, the result gain |
| is set to an appropriately reduced value (by applying peak normalization). |
| The proposed standard calls this "clipping prevention".</p> |
| <p>The difference between target and result gain reflects the necessary amount |
| of reduction. Applications can make use of this information to temporarily |
| reduce the <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--pre-amp" title="The “pre-amp” property"><span class="type">“pre-amp”</span></a> for subsequent streams, as recommended by |
| the ReplayGain standard.</p> |
| <p>Note that target and result gain differing for a great majority of streams |
| indicates a problem: What happens in this case is that most streams receive |
| peak normalization instead of amplification by the ideal replay gain. To |
| prevent this, the <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--pre-amp" title="The “pre-amp” property"><span class="type">“pre-amp”</span></a> has to be lowered and/or a limiter |
| has to be used which facilitates the use of <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--headroom" title="The “headroom” property"><span class="type">“headroom”</span></a>.</p> |
| <p>Flags: Read</p> |
| <p>Allowed values: [-120,120]</p> |
| <p>Default value: 0</p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstRgVolume--target-gain"></a><h3>The <code class="literal">“target-gain”</code> property</h3> |
| <pre class="programlisting"> “target-gain” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre> |
| <p>Applicable gain [dB]. This gain is supposed to be applied.</p> |
| <p>Depending on the value of the <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--album-mode" title="The “album-mode” property"><span class="type">“album-mode”</span></a> property and the |
| presence of ReplayGain tags in the stream, this is set according to one of |
| these simple formulas:</p> |
| <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
| <li class="listitem"> |
| <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--pre-amp" title="The “pre-amp” property"><span class="type">“pre-amp”</span></a> + album gain of the stream</li> |
| <li class="listitem"> |
| <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--pre-amp" title="The “pre-amp” property"><span class="type">“pre-amp”</span></a> + track gain of the stream</li> |
| <li class="listitem"> |
| <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--pre-amp" title="The “pre-amp” property"><span class="type">“pre-amp”</span></a> + <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--fallback-gain" title="The “fallback-gain” property"><span class="type">“fallback-gain”</span></a> |
| </li> |
| </ul></div> |
| <p>Flags: Read</p> |
| <p>Allowed values: [-120,120]</p> |
| <p>Default value: 0</p> |
| </div> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-rgvolume.see-also"></a><h2>See Also</h2> |
| <p><a class="link" href="gst-plugins-good-plugins-rglimiter.html#GstRgLimiter"><span class="type">GstRgLimiter</span></a>, <a class="link" href="gst-plugins-good-plugins-rganalysis.html#GstRgAnalysis"><span class="type">GstRgAnalysis</span></a></p> |
| </div> |
| </div> |
| <div class="footer"> |
| <hr>Generated by GTK-Doc V1.25</div> |
| </body> |
| </html> |