# [−][src]Crate bs1770

Loudness analysis conforming to ITU-R BS.1770-4.

This library offers the building blocks to perform BS.1770 loudness measurements, but you need to put the pieces together yourself.

# Stereo integrated loudness example

let sample_rate_hz = 44_100; let bits_per_sample = 16; let channel_samples: [Vec<i16>; 2] = load_stereo_audio(); // When converting integer samples to float, note that the maximum amplitude // is `1 << (bits_per_sample - 1)`, one bit is the sign bit. let normalizer = 1.0 / (1_u64 << (bits_per_sample - 1)) as f32; let channel_power: Vec<_> = channel_samples.iter().map(|samples| { let mut meter = bs1770::ChannelLoudnessMeter::new(sample_rate_hz); meter.push(samples.iter().map(|&s| s as f32 * normalizer)); meter.into_100ms_windows() }).collect(); let stereo_power = bs1770::reduce_stereo( channel_power[0].as_ref(), channel_power[1].as_ref(), ); let gated_power = bs1770::gated_mean(stereo_power.as_ref()); println!("Integrated loudness: {:.1} LUFS", gated_power.loudness_lkfs());

## Structs

ChannelLoudnessMeter | Measures K-weighted power of non-overlapping 100ms windows of a single channel of audio. |

Power | The mean of the squares of the K-weighted samples in a window of time. |

Windows100ms | A |

## Functions

gated_mean | Perform gating and averaging for a BS.1770-4 integrated loudness measurement. |

reduce_stereo | Combine power for multiple channels by taking a weighted sum. |

reduce_stereo_in_place | In-place version of |