mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 01:00:37 +00:00
level: Don't read over the end of the input memory
Previously we advanced the in_data pointer by bps for every channel, and then later again for block_size*bps. This caused us to be one sample further than expected if an input buffer covered two analysis frames. And in the end lead to completely bogus values reported by level. https://bugzilla.gnome.org/show_bug.cgi?id=746065
This commit is contained in:
parent
c809bcd394
commit
7b90bf3215
1 changed files with 1 additions and 2 deletions
|
@ -624,7 +624,7 @@ gst_level_transform_ip (GstBaseTransform * trans, GstBuffer * in)
|
|||
|
||||
for (i = 0; i < channels; ++i) {
|
||||
if (!GST_BUFFER_FLAG_IS_SET (in, GST_BUFFER_FLAG_GAP)) {
|
||||
filter->process (in_data, block_int_size, channels, &CS,
|
||||
filter->process (in_data + (bps * i), block_int_size, channels, &CS,
|
||||
&filter->peak[i]);
|
||||
GST_LOG_OBJECT (filter,
|
||||
"[%d]: cumulative squares %lf, over %d samples/%d channels",
|
||||
|
@ -633,7 +633,6 @@ gst_level_transform_ip (GstBaseTransform * trans, GstBuffer * in)
|
|||
} else {
|
||||
filter->peak[i] = 0.0;
|
||||
}
|
||||
in_data += bps;
|
||||
|
||||
filter->decay_peak_age[i] += GST_FRAMES_TO_CLOCK_TIME (num_frames, rate);
|
||||
GST_LOG_OBJECT (filter,
|
||||
|
|
Loading…
Reference in a new issue