| <!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</title> |
| <meta name="generator" content="DocBook XSL Stylesheets V1.76.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.18 (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="2"> |
| <tr valign="middle"> |
| <td><a accesskey="p" href="gst-plugins-good-plugins-rglimiter.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> |
| <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> |
| <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> |
| <th width="100%" align="center">GStreamer Good Plugins 1.0 Plugins Reference Manual</th> |
| <td><a accesskey="n" href="gst-plugins-good-plugins-rippletv.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> |
| </tr> |
| <tr><td colspan="5" class="shortcuts"> |
| <a href="#gst-plugins-good-plugins-rgvolume.synopsis" class="shortcut">Top</a> |
| | |
| <a href="#gst-plugins-good-plugins-rgvolume.description" class="shortcut">Description</a> |
| | |
| <a href="#gst-plugins-good-plugins-rgvolume.object-hierarchy" class="shortcut">Object Hierarchy</a> |
| | |
| <a href="#gst-plugins-good-plugins-rgvolume.implemented-interfaces" class="shortcut">Implemented Interfaces</a> |
| | |
| <a href="#gst-plugins-good-plugins-rgvolume.properties" class="shortcut">Properties</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 — Apply ReplayGain volume adjustment</p> |
| </td> |
| <td valign="top" align="right"></td> |
| </tr></table></div> |
| <div class="refsynopsisdiv"> |
| <a name="gst-plugins-good-plugins-rgvolume.synopsis"></a><h2>Synopsis</h2> |
| <a name="GstRgVolume"></a><pre class="synopsis">struct <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume-struct" title="struct GstRgVolume">GstRgVolume</a>; |
| </pre> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-rgvolume.object-hierarchy"></a><h2>Object Hierarchy</h2> |
| <pre class="synopsis"> |
| <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> |
| +----<a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> |
| +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> |
| +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> |
| +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBin.html">GstBin</a> |
| +----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="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstChildProxy.html">GstChildProxy</a>.</p> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-rgvolume.properties"></a><h2>Properties</h2> |
| <pre class="synopsis"> |
| "<a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--album-mode" title='The "album-mode" property'>album-mode</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write |
| "<a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--fallback-gain" title='The "fallback-gain" property'>fallback-gain</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write |
| "<a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--headroom" title='The "headroom" property'>headroom</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write |
| "<a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--pre-amp" title='The "pre-amp" property'>pre-amp</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write |
| "<a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--result-gain" title='The "result-gain" property'>result-gain</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read |
| "<a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--target-gain" title='The "target-gain" property'>target-gain</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read |
| </pre> |
| </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 |
| <a class="ulink" href="http://replaygain.org" target="_top">ReplayGain standard</a>. It |
| 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" type="disc"> |
| <li class="listitem"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GST-TAG-TRACK-GAIN:CAPS"><span class="type">GST_TAG_TRACK_GAIN</span></a></li> |
| <li class="listitem"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GST-TAG-TRACK-PEAK:CAPS"><span class="type">GST_TAG_TRACK_PEAK</span></a></li> |
| <li class="listitem"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GST-TAG-ALBUM-GAIN:CAPS"><span class="type">GST_TAG_ALBUM_GAIN</span></a></li> |
| <li class="listitem"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GST-TAG-ALBUM-PEAK:CAPS"><span class="type">GST_TAG_ALBUM_PEAK</span></a></li> |
| <li class="listitem"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.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> |
| <p> |
| </p> |
| <div class="refsect2"> |
| <a name="idp16461296"></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> |
| <p> |
| </p> |
| <div class="refsynopsisdiv"> |
| <h2>Synopsis</h2> |
| <div class="refsect2"> |
| <a name="idp16014704"></a><h3>Element Information</h3> |
| <div class="variablelist"><table border="0"> |
| <col align="left" valign="top"> |
| <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="idp17717824"></a><h3>Element Pads</h3> |
| <div class="variablelist"><table border="0"> |
| <col align="left" valign="top"> |
| <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"> |
| <col align="left" valign="top"> |
| <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> |
| <p> |
| </p> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-rgvolume.details"></a><h2>Details</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="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre> |
| <p> |
| Whether to prefer album gain over track gain. |
| </p> |
| <p> |
| If set to <a href="http://library.gnome.org/devel/glib/unstable/glib-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="http://library.gnome.org/devel/glib/unstable/glib-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'>fallback-gain</a> |
| property is used instead. |
| </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="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write</pre> |
| <p> |
| Fallback gain [dB] for streams missing ReplayGain tags. |
| </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="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write</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>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="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read / Write</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 |
| <a class="ulink" href="http://replaygain.org" target="_top">webpage</a> is still outdated and |
| 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>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="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read</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'>target |
| gain</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'>pre-amp</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'>pre-amp</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'>headroom</a>. |
| </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="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> : Read</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'>album-mode</a> property and the |
| presence of ReplayGain tags in the stream, this is set according to one of |
| these simple formulas: |
| </p> |
| <p> |
| </p> |
| <div class="itemizedlist"><ul class="itemizedlist" type="disc"> |
| <li class="listitem"> |
| <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--pre-amp" title='The "pre-amp" property'>pre-amp</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'>pre-amp</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'>pre-amp</a> + <a class="link" href="gst-plugins-good-plugins-rgvolume.html#GstRgVolume--fallback-gain" title='The "fallback-gain" property'>fallback gain</a> |
| </li> |
| </ul></div> |
| <p> |
| </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> |
| <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> |
| </div> |
| </div> |
| <div class="footer"> |
| <hr> |
| Generated by GTK-Doc V1.18</div> |
| </body> |
| </html> |