<div dir="ltr"><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-family:"Calibri Light",sans-serif"> </span><span style="font-family:"Calibri Light",sans-serif;font-size:11pt">Hi,</span></p><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-family:"Calibri Light",sans-serif">I was going through histogram based
implementation to compute program loudness in ffmpeg\libavfilter\ebur128.c.
This implementation uses static tables like
"histogram_energy_boundaries[]" and "histogram_energies[]"
in 3 main steps to compute gated loudness.</span></p><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-family:"Calibri Light",sans-serif">**</span></p><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-family:"Calibri Light",sans-serif">1. Using histogram_energy_boundaries[], loudness sum is first
recorded into "block_energy_histogram[]" in the form of an increment in the corresponding energy index.</span></p><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-family:"Calibri Light",sans-serif">2. Relative threshold is computed using “block_energy_histogram[]"
and "histogram_energies[]".</span></p><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-family:"Calibri Light",sans-serif">3. Finally , gated loudness is
computed using "block_energy_histogram[]"
and "histogram_energies[]" as per computed "r</span><span style="font-family:"Calibri Light",sans-serif">elative threshold"</span><span style="font-family:"Calibri Light",sans-serif;font-size:11pt">.</span></p><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-family:"Calibri Light",sans-serif">**</span></p><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-family:"Calibri Light",sans-serif">At first look, it looks like an optimised </span><span style="font-family:"Calibri Light",sans-serif">implementation </span><span style="font-family:"Calibri Light",sans-serif">over conventional implementation </span><span style="font-family:"Calibri Light",sans-serif">of storing and using loudness sums in a growing linked list to compute gated loudness.</span></p><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:11pt;font-family:"Calibri Light",sans-serif">However, </span><span style="font-size:11pt;font-family:"Calibri Light",sans-serif">I am wondering if there is any reference documentation or a summary which
can help me to understand this implementation a bit more </span><span style="font-size:11pt;font-family:"Calibri Light",sans-serif">including associated drawbacks such as precision loss over </span><span style="font-size:11pt;font-family:"Calibri Light",sans-serif">conventional</span><span style="font-size:11pt;font-family:"Calibri Light",sans-serif"> implementation</span><span style="font-size:11pt;font-family:"Calibri Light",sans-serif">.</span><br></p><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-size:11pt;font-family:"Calibri Light",sans-serif"><br></span></p><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-family:"Calibri Light",sans-serif">Thanks,</span></p><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif">





















</p><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Calibri,sans-serif"><span style="font-family:"Calibri Light",sans-serif">Rohit</span></p></div>